Hallo zusammen,
und zwar habe ich folgendes Problem. Ich will in einer Baugruppe (ca. 14000 Teile) alle Normteile an Hand ihres Namens löschen. Dazu habe ich mir aus den hochgeladenen Makros etwas zusammen gebastelt. Bei kleine Baugruppen funktioniert es auch super. Aber wenn ich es über Nacht bei einer größeren starte, kommt entweder der Fehler 28(Out of Stack) oder SolidWorks hängt sich auf.
Das ist bisher mein Makro:
----------------------------------------------------------------------------------------------------------------
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim boolstatus As Boolean
Const INDENT_SYMBOL As String = " "
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
Dim swRootComp As SldWorks.Component2
Set swRootComp = swModel.ConfigurationManager.ActiveConfiguration.GetRootComponent
TraverseComponent swRootComp
Else
MsgBox "Please open assembly"
End If
End Sub
Sub TraverseComponent(comp As SldWorks.Component2)
Dim vChildComps As Variant
vChildComps = comp.GetChildren
Dim i As Integer
For i = 0 To UBound(vChildComps)
Dim swChildComp As SldWorks.Component2
Set swChildComp = vChildComps(i)
If swChildComp.Name2 Like "*DIN*" Or swChildComp.Name2 Like "*Gewindestift*" Or swChildComp.Name2 Like "*Zylinderstift*" Or swChildComp.Name2 Like "*Mutter*" Or swChildComp.Name2 Like "*mutter*" Or swChildComp.Name2 Like "*Gewindebolzen*" Or swChildComp.Name2 Like "*Schraube*" Or swChildComp.Name2 Like "*schraube*" Or swChildComp.Name2 Like "*B0008.169*" Or swChildComp.Name2 Like "*din*" Or swChildComp.Name2 Like "*KA15TN*" Or swChildComp.Name2 Like "*KA10TN*" Or swChildComp.Name2 Like "*Scheibe*" Or swChildComp.Name2 Like "*scheibe*" Then
boolstatus = swModel.Extension.SelectByID2(swChildComp.Name2, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
swModel.EditDelete
Else
TraverseComponent swChildComp
End If
Next
End Sub
---------------------------------------------------------------------------------------------
Ich hoffe ihr könnt mir hier weiterhelfen.
Oder würde es auch die Möglichkeit geben durch VBA auf die Filterliste (im Bild) zuzugreifen und alle gefundenen Bauteile zu markieren/löschen?
Habe dazu leider nichts gefunden.
Mfg
Patrick
[Diese Nachricht wurde von Palime00 am 05. Mai. 2021 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP