# 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");
            }

        }
    }