Hallo weer, hier is mijn code en het testgedeelte als voorbeeld
Sub essay01()
ChangeVariableValueInQuaAnd RebuildPart "D1@Ext", "80"
ChangeVariableValueInQuaAndRebuildPart "D1@Esq", "44.6"
Einde Sub
Sub ChangeVariableValueInQuaAndRebuildPart(NomVar als string, ValVar als string)
Opmerking: een vergelijking is een alfanumerieke tekenreeks en wordt als zodanig behandeld met de gebruikelijke VBA-functies.
"Aangifte objecten *****************************
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim swEquaMgr Als SldWorks.EquationMgr
'Toewijzing van objecten*****************************
Stel swApp = Application.SldWorks ' swApp is nu een object dat de SW-applicatie bevat.
Stel swModel in = swApp.ActiveDoc ' SwModel is nu een object dat het actieve model (onderdeel of assemblage) SW bevat.
Set swEqua = swModel.GetEquationMgr ' swEquaMgr is nu een object dat de verzameling vergelijkingen van het model bevat die aanwezig is in feature manager.
"Verklaring van lokale variabelen******************
Dim NumEqua als geheel getal 'NumEqua is het getal van de vergelijking
Dim NbEqua als geheel getal 'NbEqua is het aantal vergelijkingen. Als NbEqua=0 dan is er een vergelijking, als NbEqua=1 dan zijn er 2 vergelijkingen, als NbEqua= -1 dan is er geen vergelijking.
Dim ChScind Als Variant 'ChScind is een Split Chain.
Const Title01 As String = "Constat (MC)"
Variabele toewijzing
NbEqua = swEqua.GetCount - 1
"Werkwijze
Voor NumEqua = 0 TB NbEqua' Voor NumEqua variërend van 0 tot NbEqua (standaard in stappen van 1)
ChScind = Split(swEqua.equation(NumEqua), "=") 'ChScind(0) bevat nu het deel van de vergelijking links van het "=" teken. ChScind(1) bevat nu het deel van de vergelijking rechts van het "=" teken
ChScind(0) = Replace(ChScind(0), Chr(34), Empty) 'Systematische vervanging van het eerste en laatste teken van Scind(0) (met ascii nummer 34) door niets (leeg), met andere woorden we verwijderen alle chr(34) ["] van Scind(0) (dit is een opmaakconditionering van de volgende test).
ChScind(0) = Replace(ChScind(0), Chr(32), Empty) 'Systematische vervanging van de tekens van Scind(0) (met het ascii-nummer 32) door niets (leeg), met andere woorden we verwijderen alle spaties [" "] van Scind(0) (dit is een opmaakconditionering van de volgende test).
Als ChScind(0) = VarName, dan
swEqua.vergelijking(NumEqua) = Vervangen(swEqua.vergelijking(NumEqua), ChScind(1), ValVar)
Als swModel.EditRebuild3() Dan' als de herbouw van het onderdeel waar retourneert, dan
MsgBox "Gereconstrueerd onderdeel met nieuwe waarde in vergelijking!", vbInformation, Title01
Anders' anders
MsgBox "Gewijzigde vergelijking maar gedeeltelijke reconstructiefout!", vbInformation, Title01
Einde Als 'einde van als
Exit Sub ' verlaat deze Sub
Einde als
Volgende NumEqua
Als NbEqua = -1 dan
MsgBox "Er is geen vergelijking geassocieerd met het model!", vbExclamation, Title01
Anders
MsgBox "Geen aanpassing van de vergelijking mogelijk!" & Chr$(13) & Chr$(13) & "'" & "'" & " werd in geen van hen gevonden.", vbExclamation, Title01
Einde als
Einde Sub 'einde van sub
A+
part_essai01.sldprt