Hallo, ich habe ein Makro erstellt, mit dem Sie mein Teil konfigurieren können (Abmessungen, Bearbeitung mit Bestückung oder Materialabtrag usw.). Sobald das Teil erstellt ist, möchte ich, dass beim Neustart des Makros für dieses Teil die im Benutzerformular angezeigten Werte diejenigen sind, die ich in den Raum lege, um eine schnelle Vorschau meines geöffneten Teils zu erhalten. Andernfalls werden die Standardwerte angezeigt. Sie sollten also die Informationen aus dem Teil holen und an die richtigen Felder in meinem Benutzerformular zurücksenden.
Ich habe es geschafft, die Abmessungen einer Skizze abzurufen und sie wie folgt zurückzugeben: txt_Z.Text = Part.Parameter("D1@F"). SystemValue . aber ich kann den TRUE- oder FALSE-Wert einer Funktion (mat. removal, bossing, drilling) nicht abrufen, um zu sagen, ob sie in meinem Teil aktiviert oder gelöscht ist.
Wenn Sie eine Lösung haben, bin ich daran interessiert, :)
Hallo
Sie müssen sich swFeat.IsSuppressed2 ansehen.
3 „Gefällt mir“
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim vConfNameArr As Variant
Dim vSuppStateArr As Variant
Dim i As Long
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, -1)
vConfNameArr = swModel.GetConfigurationNames
vSuppStateArr = swFeat.IsSuppressed2(swThisConfiguration, vConfNameArr)
Debug.Assert 0 = UBound(vSuppStateArr)
Debug.Print "File = " & swModel.GetPathName
Debug.Print " " & swFeat.Name
Debug.Print " " & vConfNameArr(i) & " ---> " & vSuppStateArr(i)
End Sub
Hallo Cyril, das ist es, was ich brauche, ich habe es geschafft, mit diesem Code den Wert WAHR oder FALSCH zu bekommen.
Das Problem ist jedoch, dass ich die Funktion auswählen muss, bevor ich das Makro starte. Wie mache ich es so, dass beim Starten des Makros alle Funktionen verwendet werden, die ich ihm (in meinem Code) gegeben hätte, damit es mir sagt, ob es wahr oder falsch ist? ohne die Funktionen auswählen zu müssen?
(Ich gebe an, dass ich ein Anfänger in VBA bin, es ist alles, was ich fühle, als würde ich gerade erst anfangen, Makros auf sw zu machen)
Hallo
Sie müssen alle Elemente des "Features" auflisten und nur an den Funktionen arbeiten, die Sie möchten, schauen Sie sich das hier angegebene Beispiel an.
Herzliche Grüße
2 „Gefällt mir“
Private Sub ActualiserInfosPiece()
actualisationInfoPiece = True
Dim swFeature As SldWorks.Feature
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim featureName As String
Dim status As Boolean
Dim vSuppStateArr As Variant
Dim vConfNameArr As Variant
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension
Set Part = swModel
If swModel Is Nothing Then
Exit Sub
End If
If (swModel.GetType <> swDocPART) Then
Call MsgBox("Macro valable uniquement pour une pièce", vbOKOnly, "AVERTISSEMENT")
Exit Sub
End If
vConfNameArr = swModel.GetConfigurationNames
Set swFeature = Part.FirstFeature
Do While Not swFeature Is Nothing
featureName = swFeature.name
status = swModelDocExt.SelectByID2(featureName, "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
vSuppStateArr = swFeature.IsSuppressed2(swThisConfiguration, vConfNameArr)
Select Case featureName
Case "FONCTION SW 1"
TglB_N1.value = Not vSuppStateArr(0)
Case "FONCTION SW 2"
TglB_N2.value = Not vSuppStateArr(0)
Case "FONCTION SW 3"
TglB_N3.value = Not vSuppStateArr(0)
Case "FONCTION SW 4"
TglB_N4.value = Not vSuppStateArr(0)
Case "FONCTION SW 5"
TglB_N5.value = Not vSuppStateArr(0)
Case FONCTION SW 6"
TglB_N6.value = Not vSuppStateArr(0)
End Select
Set swFeature = swFeature.GetNextFeature()
Loop
ComboBox_HAUT.Text = Part.Parameter("D3@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_BAS.Text = Part.Parameter("D4@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_GAUCHE.Text = Part.Parameter("D2@Esquisse FONCTION SW").SystemValue * 1000
ComboBox_DROIT.Text = Part.Parameter("D1@Esquisse FONCTION SW").SystemValue * 1000
txt_X.Text = Part.Parameter("D3@Esquisse Débit").SystemValue * 1000
txt_Y.Text = Part.Parameter("D4@Esquisse Débit").SystemValue * 1000
txt_Z.Text = Part.Parameter("D1@F").SystemValue * 1000
actualisationInfoPiece = False
End Sub
Problem gelöst, danke für Ihre Antwort .