MACRO wirkt nur auf eine Optionsoption

Morgenz

Ich habe ein kleines Makro erstellt, um alle ausgewählten Teile aus der Nomenklatur auszuschließen. (über den Aufnahmemodus)

Das einzige Problem besteht darin, dass das Makro auf alle anderen Optionen in derselben Gruppe wirkt (Gruppe 5 in Rot unten). 


 

Hier ist der Code (wenn ich mich richtig erinnere, musste ich eine Zeile mit einem Teilenamen löschen)

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.CompConfigProperties5(2, 0, True, True, "Défaut<Brut d'usinage>", True, False)
boolstatus = Part.EditRebuild3()
End Sub

 

API-Verknüpfung: CompConfigProperties5

Hinweis: Die letzten 2 werden aus dem Fenster umgekehrt. (von Stückliste und Umschlag ausschließen)

Dadurch wird die Nomenklatur exclude zur vorletzten Variablen.

 

Also Frage: Können wir nur auf den Ausschluss aus der Nomenklatur reagieren??

 

Vielen Dank im Voraus

Hallo 

Sie möchten also Teile auswählen und das Makro ausführen, sodass diese Teile aus der Stückliste ausgeschlossen werden? 

"Also Frage: Können wir nur handeln, um aus der Nomenklatur auszuschließen? "

-> Möchten Sie wissen, ob Sie die Eigenschaften der Komponente ändern können, ohne die anderen Einstellungen zu ändern?

Wenn dies der Fall ist, schlage ich die folgende Änderung vor, die die Informationen der ausgewählten Entität abruft und diese Informationen der CompConfigProperties-Funktion hinzufügt, um nur den Ausschluss der Nomenklatur zu ändern.

Es liegt an Ihnen zu sehen, ob es so funktioniert, wie Sie es möchten.

 

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelectionMgr As SldWorks.SelectionMgr
Dim swEntity As SldWorks.Entity
Dim swComponent As SldWorks.Component2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swSelectionMgr = swModel.SelectionManager
Set swEntity = swSelectionMgr.GetSelectedObject6(1, -1)

Set swComponent = swEntity.GetComponent


boolstatus = swModel.CompConfigProperties5(swComponent.GetSuppression, swComponent.Solving, swComponent.Visible, True, swComponent.ReferencedConfiguration, True, swComponent.IsEnvelope)
boolstatus = swModel.EditRebuild3()


End Sub

 

Gauthik

Hallo

Es ist auch möglich, die Funktion http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~excludefrombom.html?verRedirect=1 zu verwenden, die direkt auf das Häkchen "Aus Stückliste ausschließen" wirkt.

Herzliche Grüße

Ok Danke 2.

Logischerweise wäre die 2. Lösung die richtige, um zu sehen, wie man sie im Makro so verwendet, wie sie sein sollte. Auch wenn die 1. eine weitere praktikable Lösung ist.

Nehmen wir an, dass mein aktuelles Makro funktioniert, da 90% meiner Teile auf die gleiche Weise konstruiert sind.

Aber für den Fall, dass ich für die Teile, bei denen ich mehrere Konfigurationen einsetze, es mich in meiner Baugruppe diese Teile in der 1. Konfiguration (Standard) ändert und die Baugruppe plötzlich bricht (einfach die richtige Konfiguration erneut auswählen).

Andernfalls besteht die andere Lösung darin, die Zeilen auszuwählen, die aus der Nomenklaturtabelle ausgeschlossen werden sollen.

Ich werde es so schnell wie möglich testen

Nochmals vielen Dank für diese 1. Antworten

Sie können auch ein Programm ausprobieren, das ich in den Tutorials zur Verfügung gestellt habe, es ist HIER, es ist in C # geschrieben, aber es ist auch in VBA machbar und ich verwende die Funktion "ExcludeFromBOM" darin.

Herzliche Grüße