Hallo nochmal, hier ist mein Code und der Testteil als Beispiel
Unter-Aufsatz01()
ChangeVariableValueInQuaAnd RebuildPart "D1@Ext", "80"
ChangeVariableValueInQuaAndRebuildPart "D1@Esq", "44.6"
Ende Sub
Sub ChangeVariableValueInQuaAndRebuildPart(NomVar als Zeichenfolge, ValVar als Zeichenfolge)
Hinweis: Eine Gleichung ist eine alphanumerische Zeichenkette und wird als solche mit den üblichen VBA-Funktionen behandelt.
"Die Deklaration bezweckt *****************************
Dim swApp als SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swEquaMgr As SldWorks.EquationMgr
'Zuweisung von Objekten*****************************
Set swApp = Application.SldWorks ' swApp ist jetzt ein Objekt, das die SW-Anwendung enthält.
Set swModel = swApp.ActiveDoc ' SwModel ist jetzt ein Objekt, das die aktive SW-Datei des Modells (Teil oder Baugruppe) enthält.
Set swEqua = swModel.GetEquationMgr ' swEquaMgr ist jetzt ein Objekt, das den Satz von Gleichungen des Modells enthält, der im Feature-Manager vorhanden ist.
"Deklaration lokaler Variablen******************
Dim NumEqua As Integer 'NumEqua ist die Zahl der Gleichung
Dim NbEqua As Integer 'NbEqua ist die Anzahl der Gleichungen. Wenn NbEqua=0 dann gibt es eine Gleichung, wenn NbEqua=1 dann gibt es 2 Gleichungen, wenn NbEqua= -1 dann gibt es keine Gleichung.
Dim ChScind als Variante 'ChScind ist eine Split Chain.
const title01 As String = "Constat (MC)"
Variable Allokation
NbEqua = swEqua.GetCount - 1
"Verfahren
Für NumEqua = 0 TB NbEqua' Für NumEqua im Bereich von 0 bis NbEqua (standardmäßig in Schritten von 1)
ChScind = Split(swEqua.equation(NumEqua), "=") 'ChScind(0) enthält nun den Teil der Gleichung links vom "="-Zeichen. ChScind(1) enthält nun den Teil der Gleichung rechts vom "="-Zeichen
ChScind(0) = replace(ChScind(0), Chr(34), Empty) 'Systematisches Ersetzen des ersten und letzten Zeichens von Scind(0) (mit der ASCII-Nummer 34) durch nichts (leer), d.h. wir entfernen alle chr(34) ["] von Scind(0) (dies ist eine Formatierung, die den folgenden Test bedingt).
ChScind(0) = replace(ChScind(0), Chr(32), Empty) 'Systematisches Ersetzen der Zeichen von Scind(0) (durch die ASCII-Zahl 32) durch nichts (leer), d.h. wir entfernen alle Leerzeichen [" "] von Scind(0) (dies ist eine Formatierung, die den folgenden Test bedingt).
Wenn ChScind(0) = VarName, dann
swEqua.equation(NumEqua) = Ersetzen(swEqua.equation(NumEqua), ChScind(1), ValVar)
If swModel.EditRebuild3() Then' wenn der Neuaufbau des Teils true zurückgibt, dann
MsgBox "Rekonstruiertes Bauteil mit neuem Wert in der Gleichung!", vbInformation, Title01
Sonst ist es nicht der Fall.
MsgBox "Geänderte Gleichung, aber teilweiser Rekonstruktionsfehler!", vbInformation, Title01
End If 'Ende von if
Exit Sub ' leave this Sub
Ende, wenn
Weiter NumEqua
Wenn NbEqua = -1 ist, dann
MsgBox "Dem Modell ist keine Gleichung zugeordnet!", vbExclamation, Title01
Oder
MsgBox "Keine Änderung der Gleichung möglich!" & Chr$(13) & Chr$(13) & "'" & VarName & "'" & " wurde in keinem von ihnen gefunden.", vbExclamation, Titel01
Ende, wenn
End Sub 'Ende des Subs
A+
part_essai01.sldprt