Lire nom pièces dans assemblage

Bonjour,

Je souhaite lire le nom des pièces se trouvant dans l'arbre de création et les enregistrer dans des variables.

Par exemple:

Variable1= "Bague couronne 26"

Variable2= "EP-BC-AR

...

...

(voire pièce jointe)

Merci de votre aide,

 

jb

 


capture.png

Bonjour jb!

 

Malgré mes doutes, j'ai réussi comme ceci:

 

PièceArbre = InputBox("entrez le nom de la pièce à selectionner ainsi que son numéro dans l'arbre" & vbCrLf & "00-XXXXX-0-Piece-3" & vbCrLf & "'-3' étant ici l'indice d'occurence")

 

suivi  de

 

swModel.ClearSelection2 True
bstatus = swModel.Extension.SelectByID2(stnewfilename & "@SE-XXXXX-0-Trajectoire", "COMPONENT", 0, 0, 0, True, 0, Nothing, 0)

 

afin de selectioner la pièce :-)

Voir l'api GetComponents Method (IAssemblyDoc)

 

Voici un exemple 

 

 

Dim swDoc As SldWorks.ModelDoc2

Dim swAss As SldWorks.AssemblyDoc

Dim stOldFileName As String, stNewFileName As String

Dim bStatus As Boolean

 

Sub main()

 

    Set swApp = Application.SldWorks

    Set swDoc = swApp.ActiveDoc

    

    If swDoc Is Nothing Then Exit Sub

    If swDoc.GetType <> swDocumentTypes_e.swDocASSEMBLY Then Exit Sub

    

    Set swAss = swDoc

   

    Dim swComponents As Variant: swComponents = swAss.GetComponents(True)

    

    For i = 0 To UBound(swComponents)

        MsgBox swComponents(i).Name

    Next

    

 

End Sub

 

 

4 « J'aime »

Trop bien!

 

Merci à vous

Est-il aussi possible d'avoir le lien de la pièce par ce moyen?

 

merci d'avance

Bonsoir à tous,

 

Je ne comprend pas ta demande >> "Est-il aussi possible d'avoir le lien de la pièce par ce moyen?"

 

A+

 

MC

moi non plus je ne comprends pas le lien de la piece ?

3 « J'aime »

Bonjour,

 

Mon objectif est de modifier des équations misent sur les côtes des pièces d'un assemblage (question Macro équation sur le forum).

 

Pour ça, ma première idée était d'éditer les pièces dans l'assemblage pour en modifier les équations. (par macro)

 

sauf que:

For i = 0 To swEquationMgr.GetCount - 1 (dans mon programme)

ne fonctionne pas dans une pièce édité ==> fin de la boucle

 

Donc deux solutions:

   - 1) changer swEquationMgr.GetCount pour pouvoir lire les équations dans une pièce éditée

   - 2) ouvrir les pièces une à une où swEquationMgr.GetCount fonctionne

 

La première serait surement mieux pour la simplicité et l'éxécution du programme. J'ai fait des recherches sur l'utilisation de GetEquationMgr Method (IModelDoc2) mais je n'ai rien trouvé qui m'aiderai.

 

Pour la seconde il faut alors avoir le lien complet pour ouvrir la pièce:

exemple

Set Part = swApp.OpenDoc6("D:\BIBLIOTHEQUE\03-Bibliothèque technique Epaule\EP-BC-AR.SLDPRT", 1, 0, "", longstatus, longwarnings)
Set Part = swApp.ActiveDoc

 

et donc en ouvrant l'assemblage pouvoir lire le lien des pièces le constituant pour les ouvrir.

C'est sûr que cette méthode ralentirai le programme.

 

J'éspére avoir été un peu plus claire ^^

 

Merci 

JB

 

c'est bon!

prb résolue!

 

merci de votre aide!