MACRO slechts op basis van één optiekeuze

Goedemorgen allemaal,

Ik heb een kleine macro gemaakt om alle geselecteerde onderdelen uit de nomenclatuur uit te sluiten. (via opnamemodus)

Het enige probleem is dat de macro werkt op alle andere opties in dezelfde groep (groep 5 in rood hieronder). 


 

Hier is de code (als ik het me goed herinner, moest ik een regel met een onderdeelnaam verwijderen)

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-koppeling: CompConfigProperties5

Opmerking: De laatste 2 zijn omgekeerd vanuit het venster. (exclusief stuklijst en envelop)

Dit maakt de exclusnomenclatuur de voorlaatste variabele.

 

Dus vraag: kunnen we alleen handelen op uit te sluiten van de nomenclatuur??

 

Bij voorbaat dank

Hallo 

Dus u wilt onderdelen selecteren en de macro uitvoeren zodat die onderdelen worden uitgesloten van de stuklijst? 

"Dus vraag: kunnen we alleen handelen op uitsluiten van de nomenclatuur?? "

-> Wilt u weten of u de eigenschappen van de component kunt wijzigen zonder de andere instellingen te wijzigen?

Als dit het geval is, stel ik de volgende wijziging voor, waarbij de informatie van de geselecteerde entiteit wordt opgehaald en deze informatie wordt toegevoegd aan de functie CompConfigProperties om alleen de uitsluiting van de nomenclatuur te wijzigen.

Het is aan jou om te zien of het werkt zoals jij dat wilt.

 

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

 

Kanton Gauthik

Hallo

Het is ook mogelijk om de http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~excludefrombom.html?verRedirect=1-functie te gebruiken die direct inwerkt op het vinkje "Uitsluiten van stuklijst".

Vriendelijke groeten

ok dank je wel 2.

Logischerwijs zou de 2e oplossing de juiste zijn om te zien hoe het in de macro te gebruiken zoals het hoort. Zelfs als de 1e een andere haalbare oplossing is.

Laten we zeggen dat mijn huidige macro werkt, aangezien 90% van mijn onderdelen op dezelfde manier zijn ontworpen.

Maar in het geval dat voor de onderdelen waar ik meerdere configuraties heb geplaatst, het me in mijn montage van deze onderdelen in de 1e configuratie (standaard) verandert en plotseling de assemblage verbreekt (selecteer gewoon opnieuw de juiste configuratie).

Anders is de andere oplossing om de rijen te selecteren die moeten worden uitgesloten van de nomenclatuurtabel.

Ik zal het zo snel mogelijk testen

Nogmaals bedankt voor deze 1e antwoorden

Je kunt ook een programma proberen dat ik beschikbaar heb gesteld in de tutorials, het is HIER, het is geschreven in C# maar het is ook te doen in VBA en ik gebruik de functie "ExcludeFromBOM" erin.

Vriendelijke groeten