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