MAKRO działa tylko na podstawie jednej opcji

Dzień dobry wszystkim,

Zrobiłem małe makro, aby wykluczyć wszystkie wybrane części z nomenklatury. (w trybie nagrywania)

Jedynym problemem jest to, że makro działa na wszystkie inne opcje w tej samej grupie (grupa5 na czerwono poniżej). 


 

Oto kod (o ile dobrze pamiętam, musiałem usunąć wiersz z nazwą części)

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

 

Link do interfejsu API: CompConfigProperties5

Uwaga: Ostatnie 2 są odwrócone od okna. (z wyłączeniem zestawienia komponentów i koperty)

To sprawia, że nomenklatura wykluczająca jest przedostatnią zmienną.

 

A więc pytanie: czy możemy działać tylko na podstawie wyłączenia z nomenklatury?

 

Z góry dziękuję

Witam 

Chcesz wybrać artykuły i uruchomić makro w taki sposób, aby te artykuły zostały wykluczone z zestawienia komponentów? 

"A więc pytanie: czy możemy działać tylko na podstawie wykluczenia z nomenklatury? "

-> Chcesz wiedzieć, czy możesz zmienić właściwości komponentu bez zmiany innych ustawień?

W takim przypadku proponuję następującą modyfikację, która pobiera informacje o wybranej jednostce i dodaje te informacje do funkcji CompConfigProperties w celu modyfikacji tylko wyłączenia nomenklatury.

Od Ciebie zależy, czy sprawdzisz, czy działa tak, jak chcesz.

 

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 powiedział:

Witam

Możliwe jest również skorzystanie z funkcji http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~excludefrombom.html?verRedirect=1 , która działa bezpośrednio na znacznik wyboru "Wyklucz z BOM".

Pozdrowienia

ok, dziękuję 2.

Logicznie rzecz biorąc, drugie rozwiązanie byłoby właściwe, aby zobaczyć, jak używać go w makrze tak, jak powinno. Nawet jeśli 1. jest innym realnym rozwiązaniem.

Załóżmy, że moje obecne makro działa, ponieważ 90% moich części jest zaprojektowanych w ten sam sposób.

Ale w przypadku części, w których umieściłem kilka konfiguracji, zmienia mi to te części w moim montażu w 1. konfiguracji (domyślnie) i nagle psuje montaż (wystarczy ponownie wybrać odpowiednią konfigurację).

W przeciwnym razie innym rozwiązaniem jest wybranie wierszy, które mają zostać wykluczone z tabeli nomenklatury.

Przetestuję to tak szybko, jak to możliwe

Jeszcze raz dziękuję za te 1. odpowiedzi

Możesz również wypróbować program, który udostępniłem w samouczkach, jest TUTAJ, jest napisany w C#, ale jest również wykonalny w VBA i używam w nim funkcji "ExcludeFromBOM".

Pozdrowienia