Create Macro Using Macro Manager Example (VBA)

This example shows how to create VBA macro using the macro manager and VBA.

'--------------------------------------------------------------
' Preconditions:
'  1. Create a VBA macro in a software product in which VBA is
'     embedded.
'  2. Copy and paste this example into the Visual Basic IDE.
'  3. Add a reference to the DraftSight type library,
'     install_dir\bin\dsAutomation.dll.
'  4. Start DraftSight.
'  5. Run the macro.
'
' Postconditions:
'  1. Connects to DraftSight.
'  2. Gets the active document.
'  3. Gets the macro manager.
'  4. Sets the macro language, level of detail, and path 
'     where to save the macro.
'  5. Starts macro recording.
'  6. Creates a VBA macro containing the
'     macro at c:\temp\macros\CircleMacroVBA and inserts
'     a Circle and Arc in the drawing.
'  7. Stops macro recording.
'  8. Open a new drawing in DraftSight.
'  9. Open C:\temp\macros\CircleMacroVBA\CircleMacroVBA.swb in a
'     Microsoft software product in which VBA is embedded.
' 10. Run the macro.
'----------------------------------------------
Option Explicit
Sub main()
    Dim dsApp As DraftSight.Application    
    'Connect to DraftSight
    Set dsApp = GetObject(, "DraftSight.Application")    
    'Abort any command currently running in DraftSight
    'to avoid nested commands
    dsApp.AbortRunningCommand    
    'Get active document
    Dim dsDoc As DraftSight.Document
    Set dsDoc = dsApp.GetActiveDocument    
    If dsDoc Is Nothing Then
        MsgBox "There are no open documents in DraftSight."
        Exit Sub
    End If    
    'Get macro manager
    Dim dsMacroManager As DraftSight.MacroManager
    Set dsMacroManager = dsApp.GetMacroManager    
    'Set macro language
    dsMacroManager.Language = dsMacroLanguage_VBA    
    'Set macro level of detail
    dsMacroManager.LevelOfDetail = dsMacroLevelOfDetail_Low    
    'Set save file path
    dsMacroManager.SavePath = "c:\temp\macros"    
    'Start macro recording
    dsMacroManager.StartMacroRecording    
    'Get Sketch Manager
    Dim dsSketchMgr As DraftSight.SketchManager
    Set dsSketchMgr = dsDoc.GetModel.GetSketchManager    
    'Insert Circle and Arc
    Dim dsCircle As DraftSight.Circle
    Dim dsCircleArc As DraftSight.CircleArc
    Set dsCircle = dsSketchMgr.InsertCircle(2#, 2#, 0#, 4#)
    Set dsCircleArc = dsSketchMgr.InsertArc(3#, 3#, 0#, 4#, 1#, 2#)
    
    'Stop macro recording
    dsMacroManager.StopMacroRecording "CircleMacroVBA"
    
End Sub