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