| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Moderne CAx Entwicklungsmethoden: Generatives Design, Gitternetzstrukturen & MBD, ein Webinar am 11.10.2024
|
Autor
|
Thema: Makro zum Löschen von Spalten aus der Stückliste (1355 / mal gelesen)
|
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 08:59 <-- editieren / zitieren --> Unities abgeben:
Ich bin am verzweifelnIch habe bereits Code vorbereitet, dieser macht an und für sich auch was er soll (zumindest mit den "Neu" eingefügten Spalten). Sobald ich eine der Spalten jedoch verschiebe und diese dann mittels Makro löschen möchte geht es nicht. Boolstatus sagt auch dass er gelöscht hat, macht er aber nicht. Code: Private Sub DeleteColumns() Dim i As Integer Dim swApp As SldWorks.SldWorks Dim swModel As ModelDoc2 Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim vTableArr As Variant Dim swTable As SldWorks.TableAnnotation Dim swDraw As DrawingDoc Dim ZSpalte As Long Dim strTMP As String Dim Boolstatus As Boolean 'blendet alle Spalten ein Call ShowAllColumns
Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel Set swFeat = swDraw.FirstFeature Do While Not swFeat Is Nothing If "BomFeat" = swFeat.GetTypeName Then Set swBomFeat = swFeat.GetSpecificFeature2 vTableArr = swBomFeat.GetTableAnnotations Set swTable = vTableArr(0) 'Bestehende Spalten löschen For ZSpalte = swTable.TotalColumnCount - 1 To 0 Step -1 'Spaltentitel holen strTMP = swTable.GetColumnTitle2(ZSpalte, True) 'Wenn "'" im Titel vorhanden, dann löschen If InStr(1, strTMP, "'") >= 1 Then Boolstatus = swTable.DeleteColumn2(ZSpalte, True) Debug.Print "Spalte: " & strTMP & " gelöscht" End If Next ZSpalte End If Set swFeat = swFeat.GetNextFeature Loop End Sub
Bitte bitte helft mir
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 03. Mrz. 2020 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für deckelmaho
Hallo deckelmaho, hast Du schon mal untersucht wie sich "TotalColumnCount" verhält, wenn Du Spalten löscht? Meiner Erfahrung nach, kann es problematisch sein, wenn Du in einer Schleife, was löscht und dabei die Anzahl der Elemente veränderst, die als Schleifenparameter verwendet werden. In dem Fall ändert sich ja der Wert von "TotalColumnCount" wenn eine Spalte gelöscht wird. Ev. bringt das Dein Makro durcheinander Gut wäre auch noch, wenn Du Dein Profile etwas vervollständigst Windows Ver. SWX Ver. SP Ver. und ev. ein paar Bilder um das Fehlverhalten darzustellen ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 11:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Heinz, erst einmal Danke für deinen Ansatz. Ich hab es auch schon mit ".ColumnCount" anstelle des ".TotalColumnCount" probiert. Ebenfalls hab ich die Schleife mal vorwärts laufen lassen, also: "For ZSpalte = 0 To swTable.TotalColumnCount - 1" mit dem selben Ergebnis. Profil hab ich aktualisiert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 11:36 <-- editieren / zitieren --> Unities abgeben:
Der ColumnCount verringert sich mit dem Löschen. Aktuelle Erkenntnis: Die Spalten "scheinen" gelöscht zu sein. Sie sind weder bei den sichtbaren noch bei den ausgeblendeten Spalten. Wenn ich mir jedoch die TableAnnotations neu hole, werden mir die gelöschten Spalten wieder angezeigt. Irgendwo liegen die noch als Leiche im Hintergrund. Beim Aktualisieren (Strg + Q) sind sie wieder weg. Die GeisterSpalten werden jedoch immer mehr. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2795 Registriert: 18.07.2012 -Solid Works 2019 SP5 -Pro Engineer WF 3
|
erstellt am: 03. Mrz. 2020 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für deckelmaho
Hallo, hast du schon mal versucht das Auswerten und Löschen der Spalten zu trennen? Sprich erst in einem Array die zu löschenden Spalten sammeln und dann die im Arry stehenden Spalten von Hinten nach Vorn zu löschen. Gruß Bernd ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 12:54 <-- editieren / zitieren --> Unities abgeben:
|
nahe Ehrenmitglied
Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 03. Mrz. 2020 13:59 <-- editieren / zitieren --> Unities abgeben: Nur für deckelmaho
|
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 14:20 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von nahe: Eine Frage wäre auch noch, was macht "ShowAllColumns"?
Das Zeigt vorher alle ausgeblendeten Spalten an, weil diese beim "normalen" .ColumnCount sonst nicht mitgezählt werden. @Bernd Ich hab jetzt die Spalten von hinten nach vorn in einem Array gespeichert und dann auch in der Reihenfolge gelöscht. Der Fehler bleibt weiterhin, ich hole mir die TableAnnotation's und da sind sie wieder dabei. Das sogar wenn ich Solidworks komplett schließe und neustarte. EDIT: Die beiden hinteren Spalten füge ich per Makro ein, wenn ich sie dort stehen lasse kann ich sie auch mit dem o.g Makro löschen.(ohne Probleme) Wenn ich diese verschiebe (egal ob manuell oder via VBA) dann treten die Fehler auf. Meine letzten Versuche ergaben, selbst wenn ich die verschobenen Spalten manuell lösche (RMT Spalte löschen) besteht der Fehler. [Diese Nachricht wurde von deckelmaho am 03. Mrz. 2020 editiert.] [Diese Nachricht wurde von deckelmaho am 03. Mrz. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
deckelmaho Mitglied Konstrukteur
Beiträge: 240 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 03. Mrz. 2020 16:00 <-- editieren / zitieren --> Unities abgeben:
ERLEDIGTDanke an alle Helferlein, den richtigen Hinweis hat nahe aus seiner Glaskugel gelesen. Meine ShowAllColumns Funktion hat anscheinend mehr angezeigt als sie sollte. Die Funktion entfernt und alle .TotalColumnCounts auf .ColumnCount geändert und alles läuft wie es soll. Auch wenn es mir schwer fällt zuzugeben. Diesmal ist Solidworks nicht schuld und das Problem war hausgemacht. Vielen lieben Dank @all Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |