Zugriff auf Teiledaten über die SolidWorks 2021 API

Hallo
Ich arbeite an der solidwork API und versuche, auf die Informationen in einem Teil zuzugreifen. Ich bearbeite Teile auf Länge, die aus Extrusion und manchmal Materialabtrag bestehen.
Ich habe es geschafft, die Dimensionen der Extrusion mit meinem Code wiederherzustellen, jedoch sind Skizzenblätter vorhanden, und ich möchte sie ausschließen können.

Also habe ich versucht, die entsprechende Skizze für die Extrusion zu finden, damit ich die Daten auslesen konnte. Ich habe es geschafft, den Namen des Sketches zu finden, aber ich konnte nicht auf die Daten zugreifen. Ich bekomme regelmäßig die Fehlermeldung " Eigenschaft oder Methode wird von diesem Objekt nicht behandelt ". Mir muss etwas in der Manipulation von Objekten fehlen.
Ich habe den SketchManager gesehen, aber ich verstehe nicht, wie man ihn benutzt.

Hier ist mein Code:

Sub GetExtrusionDimensions()

' Initialize SolidWorks application and get the active document
Dim swApp As SldWorks.SldWorks
Dim Part As ModelDoc2
Dim Feature As Feature
Dim ExtrudeFeat As ExtrudeFeatureData
Dim DisplayDim As DisplayDimension
Dim DimVal As Dimension
Dim MsgStr As String

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

' Check if the active document is a part file
If Part Is Nothing Or Part.GetType <> swDocPART Then
    MsgBox "Veuillez ouvrir une pièce avant d'exécuter ce script.", vbCritical
    Exit Sub
End If

' Start with the first feature in the part
Set Feature = Part.FirstFeature
MsgStr = "Dimensions des extrusions :" & vbNewLine & vbNewLine

' Loop through each feature in the feature tree
Do While Not Feature Is Nothing

    ' Check if the feature is an extrusion
    If Feature.GetTypeName2 = "Extrusion" Then
        ' Access extrusion-specific data
        Set ExtrudeFeat = Feature.GetDefinition

        If Not ExtrudeFeat Is Nothing Then
            MsgStr = MsgStr & "Fonction : " & Feature.Name & vbNewLine

            ' Access display dimensions
            Set DisplayDim = Feature.GetFirstDisplayDimension
            Do While Not DisplayDim Is Nothing
                ' Get the linked dimension object
                Set DimVal = DisplayDim.GetDimension
                If Not DimVal Is Nothing Then
                    MsgStr = MsgStr & "  Dimension : " & DimVal.FullName & " = " & DimVal.Value & " mm" & vbNewLine
                End If
                ' Move to the next display dimension
                Set DisplayDim = Feature.GetNextDisplayDimension(DisplayDim)
            Loop
            
            MsgStr = MsgStr & vbNewLine
        End If
    End If

    ' Move to the next feature in the tree
    Set Feature = Feature.GetNextFeature

Loop

' Display the extracted information
MsgBox MsgStr, vbInformation, "Résultats"

Ende Sub

Und mein Code, um die übergeordneten Beziehungen des Features zu finden:
UnterlisteFeatureEltern()
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeature als SldWorks.Feature
Dim swParentFeature als SldWorks.Feature
Dim vParents als Variante
Dim i As Integer

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

If swModel Is Nothing Then
    MsgBox "Aucun document actif. Veuillez ouvrir une pièce.", vbExclamation
    Exit Sub
End If

If swModel.GetType <> swDocPART Then
    MsgBox "Ce script fonctionne uniquement avec des pièces.", vbExclamation
    Exit Sub
End If

' Boucle à travers toutes les fonctions
Set swFeature = swModel.FirstFeature
Do While Not swFeature Is Nothing
    ' Afficher le nom et le type de la fonction
    Debug.Print "Feature: " & swFeature.Name & " (" & swFeature.GetTypeName2 & ")"
    
    ' Récupérer les parents de la fonction
    vParents = swFeature.GetParents
    If Not IsEmpty(vParents) Then
        For i = LBound(vParents) To UBound(vParents)
            Set swParentFeature = vParents(i)
            If Not swParentFeature.Name = "face" Or swParentFeature.Name = "Origine" Then
            Debug.Print "  -> Parent Feature: " & swParentFeature.Name & " (" & swParentFeature.GetTypeName2 & ")"
            End If
        Next i
    Else
        Debug.Print "  -> No Parent Features"
    End If
    
    ' Passer à la fonction suivante
    Set swFeature = swFeature.GetNextFeature
Loop

Ende Sub

Hallo

Die Fehlermeldung bezieht sich wahrscheinlich auf leere Variablen, da keine Kontrolle über deren Inhalt im Code vorhanden ist.
Für SkecthManager müssen Sie sich den Hilfecode Get Sketch Entities Example (VBA) - 2021 ansehen - SOLIDWORKS API-Hilfe
Um zu helfen und zu testen, benötigen Sie eine Datei, die dem entspricht, was Sie tun möchten.

2 „Gefällt mir“

0579794.SLDPRT (71.8 KB)
Hier ist der Teil, an dem ich meine Tests durchführe, ich werde mir das Beispiel ansehen und versuchen, es an meine Bedürfnisse anzupassen.

Ziel ist es, die Tiefe des Rohres, seine Dicke, seine Abmessungen und den Schnittwinkel in Bezug auf einen Markierer bestimmen zu können.