Retrouver les informations de l'ID d'une pièce dans un fichier de mise en plan

Bonjour,

Dans une macro vba, je cherche à cacher l’esquisse de ligne de pliage dans l’arbre de conception. pour faire mon selectID2 il faut que je mette le nom de l’esquisse et le nom de la pièce avec le nom de la vue.
J’ai remarqué que le numéro entre <> change à chaque vue. comment puis récupérer cette information afin de sélectionner l’entité dans l’arbre de conception et utiliser ma fonction blanksketch.

If Not swSheet Is Nothing Then
                Debug.Print "Feuille activée: " & swSheet.GetName

                ' Obtenir la première vue de la feuille
                Set swView = swDraw.GetFirstView
                ' La première vue est toujours la vue du modèle, passer à la suivante
                Set swView = swView.GetNextView
                    Debug.Print "Nom de la vue sélectionnée :" & swView.Name
                    
                Do While Not swView Is Nothing
                    Debug.Print "Configuration de la vue: " & swView.ReferencedConfiguration
                    If swView.ReferencedConfiguration = configName Then
                        ' Obtenir le modèle de la vue
                        Set swPart = swView.ReferencedDocument
                        If Not swPart Is Nothing Then
                            Debug.Print "Modèle référencé: " & swPart.GetPathName

                            ' Parcourir les esquisses pour trouver et cacher les lignes de pliage
                            Set swFeat = swPart.FirstFeature
                            Do While Not swFeat Is Nothing
                                Debug.Print "swFeat :" & swFeat.GetTypeName
                            Set swSubFeat = swFeat.GetFirstSubFeature
                            'arborescence de sous niveau
                                Do While Not swSubFeat Is Nothing
                                        Debug.Print "swSubFeat :" & swSubFeat.GetTypeName
                                    If swSubFeat.GetTypeName = "ProfileFeature" Then
                                        swSketchName = swSubFeat.Name
                                        If swSketchName Like "Lignes de pliage*" Then
                                            boolstatus = swModel.ActivateView(swView.Name)
                                                Debug.Print "Nom de la vue sélectionnée :" & swView.Name
                                            récupérer le PartID du fichier référencé
                                            
                                            SelectItemPlan = swSubFeat.Name & "@" & NomFichierRacine & "-" & partID & "@" & swView.Name
                                            boolstatus = swModel.Extension.SelectByID2(SelectItemPlan, "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
                                            If boolstatus Then
                                                swModel.BlankSketch
                                                swModel.ClearSelection2 True
                                                Debug.Print "Esquisse " & swSubFeat.Name & " cachée pour la feuille " & sheetName & " avec la configuration " & configName
                                            Else
                                                MsgBox "Échec de la sélection pour " & swSubFeat.Name
                                            End If
                                        End If
                                    End If
                                    Set swSubFeat = swSubFeat.GetNextSubFeature()
                                Loop
                                Set swFeat = swFeat.GetNextFeature
                            Loop
                        Else
                            MsgBox "Modèle référencé non trouvé pour la vue avec la configuration " & configName
                        End If
                        Exit Do
                    End If
                    Set swView = swView.GetNextView
                Loop
            Else
                MsgBox "Feuille non trouvée: " & sheetName
            End If

Merci d’avance.
Cordialement.

Bonjour;

C’est l’identificateur d’occurrence:
image

Cordialement.

2 « J'aime »

Bonjour,

Merci cela semble être cela, mais cet exemple de code fonctionne sur un assemblage. j’aimerai récupérer cet identificateur qui est dans le document référencé de la vue de mise en plan. Dans un premier temps je sélectionne ma vue « Vue de mise en plan2 » par exemple et j’aimerai qu’il m’indique cet identificateur d’occurence pour la pièce F0-99999-0 dans cet exemple.
Merci d’avance.
Cordialement.

Bonjour;

Alors avec la variable « Name2 »
https://help.solidworks.com/2022/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~Name2.html?verRedirect=1
(utilisée dans la macro d’Exemple Solidworks):
https://help.solidworks.com/2019/english/api/sldworksapi/Get_Components_in_Drawing_View_Example_VB.htm
Voir ligne :
Debug.Print " Component = " & swComp.Name2

Cordialement.

1 « J'aime »

Bonjour,
J’ai essayé mais je n’arrive pas a exploiter cela. je cherche cet identificateur pour un fichier pièce référencé dans la mise en plan et non un assemblage. j’ai essayé plusieurs modification et cela ne fonctionne pas.

Bonjour;
La variable reste la même: ( Name2)
https://help.solidworks.com/2019/english/api/sldworksapi/Get_Visible_Components_and_Entities_in_Drawing_View_Example_VB.htm

ou plus généralement:
https://help.solidworks.com/SearchEx.aspx?query=Get%20Components%20in%20Drawing&version=2019&lang=english&prod=api

1 « J'aime »

Bonjour,

Fonctionne bien avec l’exemple de l’API donné par @Maclane Get Components in Drawing View Example (VBA) - 2023 - SOLIDWORKS API Help
L’ID est contenu à la fin du nom du composant -n, il faut donc décomposer le résultat de la ligne Component = " & swComp.Name2 pour en resortir l’ID

2 « J'aime »