Hallo ihr alle
Als Designer/Redakteur von Beruf und ein kleiner Programmierer mit Leidenschaft habe ich mich stärker als ich mit VBA-Makrocodierung beschäftigt.
Mein Ziel ist es, die Wiederherstellungsstange in allen Teilen einer Baugruppe absenken zu können. Zu diesem Zweck möchte ich, dass das Makro die Teile (mit oder ohne Bildschirmanzeige) nacheinander auswählt und öffnet und dann in der Fortsetzungsleiste im Baum nach unten bewegt und das Teil speichert. Wenn es in meinem Set eine Teilmenge geben sollte, möchte ich, dass er diese Teilmenge öffnet (wie bei den Teilen, mit Anzeige oder nicht) und die Teile nacheinander erneut öffnet, um den ersten Schritt erneut zu starten.
Hier ist ein kleines Diagramm:
SW ASSEMBLY-----> Teile und Ass öffnen (die nicht gelöscht werden) -------> Wenn es sich um ein Teil --------> handelt, dann gehen Sie in der Resume-Leiste nach unten + Speichern + Schließen
Ich
I-----> Wenn es sich um eine Baugruppe handelt, Machen Sie es wie in Feld 2
hier ist der Code und wo ich bin, es ist ein Code, den ich im Web gefunden habe, der aber anscheinend ein wenig "in Eile" in diesem Forum codiert wurde: https://forum.solidworks.com/thread/159206
Mein Code wurde so gut wie möglich korrigiert: Das Problem mit meinem Code ist, dass es überall Fehler gibt... Fehler 91, dann manchmal 13.... Ich bin verloren und bräuchte die Hilfe von einem von euch, der davon weiß!! Danke im Voraus;)
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModel1 als SldWorks.ModelDoc2
Dim swAssembly als SldWorks.AssemblyDoc
Dim CompNum As Integer
Dim CompNum1 als Ganzzahl
Komponenten als SldWorks.Component2 dimmen
Komponenten1 als SldWorks.Component2 dimmen
Dim-Komponente als SldWorks.Component2
Dim-Komponente1 als SldWorks.Component2
Sub main()
Legen Sie swApp = Application.SldWorks fest
Festlegen von swModel = swApp.ActiveDoc
Legen Sie swAssembly = swModel fest
' Anzahl der Komponenten abrufen, ohne untergeordnete Komponenten in Unterbaugruppen
CompNum = swAssembly.GetComponentCount(True)
components = swAssembly.GetComponents(True)
Dim i als Integer
Für i = 0 Bis CompNum
Komponente = Komponenten(i)
swModel1 = Komponente. GetModelDoc2 (Englisch)
'Teil aus Baugruppenfunktion öffnen (wenn Unterbaugruppe, erstellen Sie eine weitere for-Schleife mit der gleichen Prozedur)
Wenn swModel1.GetType = swDocPART dann
Legen Sie swModel = swApp.ActivateDoc3(-Komponente. Name2, False, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = Teilen. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = Teilen. BearbeitenNeu aufbauen3()
swModel.SaveAs (Komponente. GetPathName)
swApp.CloseDoc-Komponente. GetPathName (Englisch)
Festlegen von swModel = swApp.ActiveDoc
ElseIf swModel1.GetType = swDocASSEMBLY Dann
CompNum1 = swModel1.GetComponentCount(Wahr)
components1 = swModel1.GetComponents(True)
Sun j As Integer
Für j = 0 TB CompNum1
Komponente1 = Komponente1(j)
swModel1 = Komponente1. GetModelDoc2 (Englisch)
Legen Sie swModel = swApp.ActivateDoc3(-Komponente. Name2, False, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = Teilen. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = Teilen. BearbeitenNeu aufbauen3()
swModel.SaveAs (Komponente. GetPathName)
swApp.CloseDoc-Komponente. GetPathName (Englisch)
Nächster
Ende, wenn
Nächster
Ende Sub