Selection de face ou d'arete

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,

3 « J'aime »

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

 


piece1.sldprt

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,

2 « J'aime »