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 »
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