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