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