MACRO agir que sur un seul choix d'option

Bien le bonjour à tous,

Je me suis fait une petite macro pour exclure toutes les pièces sélectionnées de la nomenclature. (via le mode enregistrer)

Seul problème la macro agis sur toutes les autres options du même groupe (groupe5 en rouge ci-dessous). 


 

Voici le code (si je me souviens bien j'ai dû virer une ligne avec un nom de pièce)

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

 

Lien de l'API : CompConfigProperties5

Remarque les 2 derniers sont inversés par rapport à la fenêtre. (exclure de la nomenclature et enveloppe)

Ce qui fait que exclure nomenclature est l'avant dernière variable.

 

Donc question: peut-agir uniquement sur exclure de la nomenclature??

 

Merci d'avance

Bonjour, 

Donc vous voulez sélectionner des pièces et lancer la macro pour que ces pièces soient exclues de la nomenclature? 

"Donc question: peut-agir uniquement sur exclure de la nomenclature??"

-> Vous voulez savoir si on peut modifier les propriétés du composant sans modifier les autres paramètres?

Si c'est le cas, je vous propose la modification suivante, qui récupère les informations de l'entitée sélectionnée et qui ajoute dans la fonction CompConfigProperties ces informations afin de ne modifier que l'exclusion de la nomenclature.

A vous de voir si ça marche comme vous le voulez.

 

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

Bonjour,

Il est aussi possible d'utiliser la fonction http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~excludefrombom.html?verRedirect=1 qui agit directement sur la coche "Exclure de la nomenclature".

Cordialement,

ok merci à vous 2.

Logiquement la 2eme solution serait la bonne à voir comment l'utiliser dans la macro comme il faut. Même si la 1ere est une autre solution viable.

Disons que ma macro actuelle fonctionne vue qu'à 90% mes pièces sont conçu de la même façon.

Mais dans le cas où pour les pièces où j'ai mis plusieurs configurations, ca me change dans mon assemblage ces pièces là dans la 1ere configuration (défaut) et du coup casse l'assemblage (suffit de re-sélectionner la bonne config).

Sinon l'autre solution s'est de sélectionner dans la table de nomenclature les lignes à exclure.

Je teste ca dés que possible

Encore merci pour ces 1ères réponses

Tu peux aussi essayer un programme que j'ai mis à dispo dans les tutos, c'est ICI, il est écrit en C# mais c'est aussi faisable en VBA et j'utilise la fonction "ExcludeFromBOM" dedans.

Cordialement,