Create Macro Using Macro Manager Example (VB.NET)

This example shows how to create a C++COM macro using the macro manager and VB.NET.

'--------------------------------------------------------------
' Preconditions:
' 1. Create a VB.NET Windows console project.
' 2. Copy and paste this example into the VB.NET IDE.
' 3. Add a reference to:
'    install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
' 4. Add a reference to System.Windows.Forms.
' 5. Create C:\temp\macros, if this folder does not exist. 
' 6. Start DraftSight.
' 7. Press F5.
'
' 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 Visual Studio 2008 C++ COM project containing the
'    macro at c:\temp\macros\CircleMacroCPPCOM 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\CircleMacroSharp\CircleMacroCPPCOM.csproj in
'    Visual Studio 2008.
'    a. Expand CircleMacroCPPCOM, if necessary.
'    b. Expand DSAPIMacros, if necessary.
'    c. Double-click CircleMacroCPPCOM located below DSAPIMacros, which opens 
'       CircleMacroCPPCOM.cs
'    d. Click Start Debugging.
'    e. Creates a Circle and Arc in the drawing.
'    f. Click File > Save All and save the solution.
'    g. Click File > Close Solution.
'----------------------------------------------

Imports System
Imports DraftSight.Interop.dsAutomation
Imports System.Runtime.InteropServices
Imports System.Windows.Forms

Module Module1

    Sub Main()

        Dim dsApp As DraftSight.Interop.dsAutomation.Application

        'Connect to DraftSight application
        dsApp = GetObject(, "DraftSight.Application")

        If dsApp Is Nothing Then
            Return
        End If

        'Abort any command currently running in DraftSight
        'to avoid nested commands
        dsApp.AbortRunningCommand()

        'Get active document
        Dim dsDoc As Document = dsApp.GetActiveDocument()
        If dsDoc Is Nothing Then
            MessageBox.Show("There are no open documents in DraftSight.")
            Return
        End If

        'Get macro manager
        Dim dsMacroManager As MacroManager = dsApp.GetMacroManager()

        'Set macro language
        dsMacroManager.Language = dsMacroLanguage_e.dsMacroLanguage_CSharp

        'Set macro level of detail
        dsMacroManager.LevelOfDetail = dsMacroLevelOfDetail_e.dsMacroLevelOfDetail_Low

        'Set save file path
        dsMacroManager.SavePath = "C:\temp\macros\"

        'Start macro recording
        dsMacroManager.StartMacroRecording()

        'Get Sketch Manager
        Dim dsSketchMgr As SketchManager = dsDoc.GetModel().GetSketchManager()

        'Insert Circle and Arc
        Dim dsCircle As Circle = dsSketchMgr.InsertCircle(2.0, 2.0, 0.0, 4.0)

        Dim dsCircleArc As CircleArc = dsSketchMgr.InsertArc(3.0, 3.0, 0.0, 4.0, 1.0, 2.0)

        'Stop macro recoding
        dsMacroManager.StopMacroRecording("CircleMacroCPPCOM")
    End Sub

End Module