Informatie over onderdeel-id's zoeken in een tekeningbestand

Hallo

In een vba-macro probeer ik de schets van de buiglijn in de ontwerpboom te verbergen. om mijn selectID2 te doen, moet ik de naam van de schets en de naam van het onderdeel met de naam van de weergave plaatsen.
Ik merkte dat het getal tussen <> bij elke weergave verandert. Hoe kan ik deze informatie ophalen om de entiteit in de ontwerpboom te selecteren en mijn blanksketch-functie te gebruiken.

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

Bij voorbaat dank.
Vriendelijke groeten.

Hallo;

Dit is de gebeurtenis-ID:
image

Vriendelijke groeten.

2 likes

Hallo

Bedankt, dat lijkt het, maar dit codevoorbeeld werkt op een assembly. Ik wil deze id ophalen die zich in het document waarnaar wordt verwezen van de tekeningweergave staat. Eerst selecteer ik bijvoorbeeld mijn weergave " Tekening2 " en ik zou graag willen dat deze me deze gebeurtenisidentificatie vertelt voor onderdeel F0-99999-0 in dit voorbeeld.
Bij voorbaat dank.
Vriendelijke groeten.

Hallo;

Dus met de variabele " Naam2 "
https://help.solidworks.com/2022/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~Name2.html?verRedirect=1
(gebruikt in de Solidworks-voorbeeldmacro):
https://help.solidworks.com/2019/english/api/sldworksapi/Get_Components_in_Drawing_View_Example_VB.htm
Zie regel:
Debug.Print " Component = " & swComp. Naam2

Vriendelijke groeten.

1 like

Hallo
Ik heb het geprobeerd, maar ik kan het niet exploiteren. Ik ben op zoek naar deze identificatie voor een onderdeelbestand waarnaar in de tekening wordt verwezen en niet voor een assemblage. Ik heb verschillende aanpassingen geprobeerd en het werkt niet.

Hallo;
De variabele blijft hetzelfde: ( Naam2)
https://help.solidworks.com/2019/english/api/sldworksapi/Get_Visible_Components_and_Entities_in_Drawing_View_Example_VB.htm

of meer in het algemeen:
https://help.solidworks.com/SearchEx.aspx?query=Get%20Components%20in%20Drawing&version=2019&lang=english&prod=api

1 like

Hallo

Werkt goed met het API-voorbeeld van @Maclane Componenten ophalen in voorbeeld van tekeningweergave (VBA) - 2023 - SOLIDWORKS API Help
De ID staat aan het einde van de componentnaam -n, dus u moet het resultaat van de regel Component = " & swComp.Name2 ontleden om de ID uit te voeren

2 likes