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