Create Macro Using Macro Manager Example (C#)
This example shows how to create a C# macro using the macro manager and C#.
//--------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this example into the C# 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 save path.
// 5. Starts macro recording.
// 6. Creates a Visual Studio 2008 C# project containing the
// macro at c:\temp\macros\CircleMacroSharp 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\CircleMacroCSharp.csproj in
// Visual Studio 2008.
// a. Expand CircleMacroCSharp, if necessary.
// b. Expand DSAPIMacros, if necessary.
// c. Double-click CircleMacroCSharp located below DSAPIMacros, which
// opens CircleMacroCSharp.cs.
// d. Click Start Debugging.
// e. Creates a Circle and Arc in the drawing.
// f. Click File > Save All and save the solution.
// g. Close File > Close Solution.
//----------------------------------------------
using System;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace MacroManagerCSharp
{
class Program
{
public static void Main()
{
DraftSight.Interop.dsAutomation.Application dsApp;
//Connect to DraftSight application
dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
if (null == dsApp)
{
return;
}
//Abort any command currently running in DraftSight
//to avoid nested commands
dsApp.AbortRunningCommand();
//Get active document
Document dsDoc = dsApp.GetActiveDocument();
if (null == dsDoc)
{
MessageBox.Show("There are no open documents in DraftSight.");
return;
}
//Get macro manager
MacroManager dsMacroManager = 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
SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager();
//Insert Circle and Arc
Circle dsCircle = dsSketchMgr.InsertCircle(2.0, 2.0, 0.0, 4.0);
CircleArc dsCircleArc = dsSketchMgr.InsertArc(3.0, 3.0, 0.0, 4.0, 1.0, 2.0);
//Stop macro recoding
dsMacroManager.StopMacroRecording("CircleMacroCSharp");
}
}
}