Bonjour à tous,
Je recherche comment selectionner une face specifique d'une piece dans un assemblage avec la fonction "Part.Extension.SelectByID2" pour une API
Bonjour à tous,
Je recherche comment selectionner une face specifique d'une piece dans un assemblage avec la fonction "Part.Extension.SelectByID2" pour une API
Bonjour,
Peux-tu préciser ta demande s'il te plait ?
Tu veux sélectionner une face d'une pièce dans un assemblage à partir de son nom de fonction :
Ou à partir de son nom d'entité :
Cordialement,
Bonjour,
enfin de compte, j'ai une extrusion (un volume) et je souhaite selectionne une face bien precise de cette extrusion
C
Bonjour,
Si c'est quelque chose du genre :
MaSelection = "Face<1>@Boss.-Extru.1@maPiece-1@monAssemblage"
bRet = swDocExt.SelectByID2(MaSelection , "FACE", 0, 0, 0, False, 1, Nothing, swSelectOptionDefault)
que tu veux faire ce n'est, à ma connaissance, pas possible, il me semble que cette possibilité n'est pas implémentée dans la fonction "SelectByID2".
Par contre si tu as la possibilité de mettre un nom spécifique dans les propriétés de la face (click droit sur la face puis propriétés de la face) alors tu pourras ensuite la sélectionner par les API en utilisant la fonction "GetEntityName" que tu peux trouver ICI.
Cordialement,
Bonjour,
J'ai reperé avec clic droit la face à selectionner mais il n'a pas de selection, je joins mon exemple de code
value = Part.Extension.GetEntityName("toto@Pièce1.prt")
Cordialement
Bonjour,
Voici un exemple de code permettant de sélectionner ta face appelée "toto" sur ta pièce jointe.
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelData As SldWorks.SelectData
Dim swBody As SldWorks.Body2
Dim swFaceFeat As SldWorks.Feature
Dim vBody As Variant
Dim vBodyArr As Variant
Dim swFace As SldWorks.Face2
Dim swEnt As SldWorks.Entity
Dim bRet As Boolean
Dim EntityName As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel.GetType = swDocPART Then
swModel.ClearSelection2 True
vBodyArr = swModel.GetBodies2(swSolidBody, False)
For Each vBody In vBodyArr
Set swBody = vBody
Set swFace = swBody.GetFirstFace
Do While Not swFace Is Nothing
Set swEnt = swFace
EntityName = swModel.GetEntityName(swEnt)
If EntityName = "toto" Then
bRet = swEnt.Select4(True, swSelData): Debug.Assert bRet
End If
Set swFace = swFace.GetNextFace
Loop
Next
End If
End Sub
Cordialement,