Hoi allemaal
Als ontwerper/redacteur van beroep en een kleine programmeur met passie, pakte ik VBA-macrocodering sterker aan dan ik.
Mijn doel is om de herstelstang in alle onderdelen van een assemblage te kunnen laten zakken. Om dit te doen, wil ik dat de macro de delen één voor één selecteert en opent (met of zonder weergave op het scherm) en vervolgens de hervattingsbalk in de boom naar beneden beweegt en het onderdeel opslaat. Als er in mijn set een subset zou zijn, zou ik willen dat hij deze subset opent (hetzelfde als voor de onderdelen, met display of niet) en de onderdelen één voor één opnieuw opent om de eerste stap opnieuw te beginnen.
Hier is een klein diagram:
SW-MONTAGE-----> Open onderdeel en kont (die niet worden verwijderd) -------> Als het een onderdeel is --------> ga dan naar beneden de hervattingsbalk + opslaan + sluiten
Ik
I-----> Als het een vergadering is, Doe hetzelfde als box 2
hier is de code en waar ik ben, het is een code die ik op het web heb gevonden, maar die blijkbaar een beetje "haastig" is gecodeerd op dit forum: https://forum.solidworks.com/thread/159206
Mijn code zo goed mogelijk gecorrigeerd : Het probleem met mijn code is dat er overal fouten zijn... fout 91, dan soms 13.... Ik ben verdwaald en zou de hulp nodig hebben van een van jullie die ervan weet!! Bij voorbaat dank;)
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim swModel1 als SldWorks.ModelDoc2
Dim swAssembly als SldWorks.AssemblyDoc
Dim CompNum als geheel getal
Dim CompNum1 als geheel getal
Componenten dimmen als SldWorks.Component2
Dim componenten1 als SldWorks.Component2
Dim component als SldWorks.Component2
Dim component1 als SldWorks.Component2
Sub hoofd()
Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in
Stel swAssembly in = swModel
' Verkrijg het aantal componenten, exclusief onderliggende componenten in subassemblages
CompNum = swAssembly.GetComponentCount(True)
componenten = swAssembly.GetComponents(True)
Dim i als geheel getal
Voor i = 0 Naar CompNum
component = componenten(i)
swModel1 = component. GetModelDoc2
'Open onderdeel van assemblagefunctie (als subassemblage, maak dan een andere for-loop met dezelfde procedure)
Als swModel1.GetType = swDocPART Dan
Stel swModel = swApp.ActivateDoc3(component. Naam2, Onwaar, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = delen. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = delen. BewerkenOpnieuw opbouwen3()
swModel.SaveAs (onderdeel. GetPathName)
swApp.CloseDoc-component. GetPathName (GetPathNaam)
Stel swModel = swApp.ActiveDoc in
ElseIf swModel1.GetType = swDocASSEMBLY Dan
CompNum1 = swModel1.GetComponentCount(True)
components1 = swModel1.GetComponents(True)
Zon j Als geheel getal
Voor j = 0 TB CompNum1
component1 = componenten1(j)
swModel1 = component1. GetModelDoc2
Stel swModel = swApp.ActivateDoc3(component. Naam2, Onwaar, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = delen. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = delen. BewerkenOpnieuw opbouwen3()
swModel.SaveAs (onderdeel. GetPathName)
swApp.CloseDoc-component. GetPathName (GetPathNaam)
Volgend
Einde als
Volgend
Einde Sub