# Insert Shapes Example (C#)

This example shows how to load a shape file and insert the shapes in the loaded shape file into a drawing.

    //--------------------------------------------------------------
    // 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 references to System and System.Windows.Forms.
    // 5. Start DraftSight and open a document.
    // 6. Start debugging the project.
    //
    // Postconditions:
    // 1. Gets the Shape Manager.
    // 2. Loads a shape file.
    // 3. Gets the shapes in the loaded shape file.
    // 4. Inserts the shapes, with an obliquing angle of 30, in the drawing.
    // 5. Examine the drawing.
    //----------------------------------------------------------------

    using System;
    using DraftSight.Interop.dsAutomation;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

    namespace ShapeCSharp
    {
        class Program
        {
            private static DraftSight.Interop.dsAutomation.Application dsApp;

            static void Main(string[] args)
            {
                //Connect to DraftSight application
                dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");

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

                if (null == dsApp)
                {
                    return;
                }

                //Get active document
                Document dsDoc = dsApp.GetActiveDocument();
                if (null == dsDoc)
                {
                    MessageBox.Show("There are no open documents in DraftSight.");
                    return;
                }

                //Get the Shape Manager
                ShapeManager dsShapeMgr = dsDoc.GetShapeManager();

                //Load shape file LTypeShp.shx
                SystemFiles dsSysFile = dsApp.GetSystemFiles();
                object[] FontsPathObj = (object[])dsSysFile.FontsPaths;
                string fontPath = "";
                if (FontsPathObj.Length > 0)
                    fontPath = FontsPathObj[0].ToString();

                string shapeFileName = System.IO.Path.Combine(fontPath, "LTypeShp.shx");

                dsShapeMgr.Load(shapeFileName);

                //Get shapes
                object[] shapesStrList = (object[])dsShapeMgr.GetAvailableShapes();
                int shapesCount = shapesStrList.Length;

                //Get Sketch Manager
                SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager();

                //Insert shapes
                double PositionX = 0.0, PositionY = 0.0, PositionZ = 0.0;
                for (int i = 0; i < shapesCount; ++i)
                {
                    Shape dsShape = dsSketchMgr.InsertShape(shapesStrList[i].ToString(), PositionX, PositionY, PositionZ, 1, 0.0);

                    //Change obliquing property
                    dsShape.Obliquing = 30 * Math.PI / 180;

                    double X1, Y1, Z1, X2, Y2, Z2;
                    dsShape.GetBoundingBox(out X1, out Y1, out Z1, out X2, out Y2, out Z2);

                    PositionX += (X2 - X1) + 5;
                }
            }

         }
    }