I think you've discovered an bug, is it possible @JaneFan ?
I have tried some alternative paths and generates the error that closes the program when it enters a loop, it only seems to continue when an exit for is applied to escape the loop. The following routines should work, I guess, but all end in error
Dim doc As PartDocument
doc = ThisDoc.Document
Dim oSketch As PlanarSketch
Dim oCommandMgr As CommandManager
oCommandMgr = ThisApplication.CommandManager
Dim oControlDef As ControlDefinition
oControlDef = oCommandMgr.ControlDefinitions.Item("SketchAutoDimensionCmd")
Dim oKCmd As ControlDefinition
oKCmd = ThisApplication.CommandManager.ControlDefinitions.Item("AppContextual_OKCmd")
Dim oEditsketch As ControlDefinition
oEditsketch = ThisApplication.CommandManager.ControlDefinitions.Item("SketchEditSketchCtxCmd")
Dim oFinishSketch As ControlDefinition
oFinishSketch = ThisApplication.CommandManager.ControlDefinitions.Item("FinishSketch")
For Each oSketch In doc.ComponentDefinition.Sketches
oCommandMgr.DoSelect(oSketch)
oEditsketch.Execute
oControlDef.Execute
oKCmd.Execute2(True)
oFinishSketch.Execute
Next
Dim doc As PartDocument
doc = ThisDoc.Document
Dim oSketch As PlanarSketch
Dim ocount As Integer = doc.ComponentDefinition.Sketches.Count
Dim oCommandMgr As CommandManager
oCommandMgr = ThisApplication.CommandManager
Dim oControlDef As ControlDefinition
oControlDef = oCommandMgr.ControlDefinitions.Item("SketchAutoDimensionCmd")
Dim oKCmd As ControlDefinition
oKCmd = ThisApplication.CommandManager.ControlDefinitions.Item("AppContextual_OKCmd")
Dim i As Integer
For i = 1 To ocount
osk= doc.ComponentDefinition.Sketches.Item(i)
osk.edit
oControlDef.Execute
oKCmd.Execute2(True)
osk.exitedit
Next
Dim doc As PartDocument
doc = ThisDoc.Document
Dim oSketch As Sketch
Dim oCommandMgr As CommandManager
oCommandMgr = ThisApplication.CommandManager
Dim oControlDef As ControlDefinition
oControlDef = oCommandMgr.ControlDefinitions.Item("SketchAutoDimensionCmd")
Dim oKCmd As ControlDefinition
oKCmd = ThisApplication.CommandManager.ControlDefinitions.Item("AppContextual_OKCmd")
For Each oSketch In doc.ComponentDefinition.Sketches
oSketch.edit
oControlDef.Execute
oKCmd.Execute2(True)
oSketch.exitedit
Next
Please accept as solution and give likes if applicable.
I am attaching my Upwork profile for specific queries.
Sergio Daniel Suarez
Mechanical Designer
| Upwork Profile | LinkedIn