Create Angular Dimensions Example (C#)

# Create Angular Dimension Example (C#)

This example shows how to create angular Dimensions using 3 points, 2 lines, and an arc.

    //-------------------------------------------------------------
    // 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. Set a breakpoint at:
    //    dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
    // 6. Start DraftSight and open a document.
    // 7. Click Start Debugging.
    //
    // Postconditions:
    // 1. Angular Dimensions using 3 points, 2 lines, and an arc are created.
    // 2. Examine the Output or Immediate window.
    // 3. Click Continue.
    // 4. Examine the drawing.
    //------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Text;
    using DraftSight.Interop.dsAutomation;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;

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

            static void Main(string[] args)
            {
                //Connect to the DraftSight application
                dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
    	    dsApp.AbortRunningCommand(); // abort any command currently running in DraftSight to avoid nested commands

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

                //Get the model space
                Model dsModel = dsDoc.GetModel();

                //Get the sketch manager
                SketchManager dsSketchMgr = dsModel.GetSketchManager();

                //Add an angular Dimension using three points
                AngularDimension dsAngular3PointDim = AddAngularDimensionUsing3Points(dsSketchMgr);

                //Print the angular Dimension's properties
                PrintAngularDimProperties(dsAngular3PointDim);

                //Add an angular Dimension using two lines
                AngularDimension dsAngular2LinesDim = AddAngularDimensionUsing2Lines(dsSketchMgr);

                //Print the angular Dimension's properties
                PrintAngularDimProperties(dsAngular2LinesDim);

                //Add an angular Dimension for the arc
                AngularDimension dsAngularArcDim = AddAngularDimensionForArc(dsSketchMgr);

                //Print the angular Dimension's properties
                PrintAngularDimProperties(dsAngularArcDim);

                //Zoom to fit
                dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
            }

            private static AngularDimension AddAngularDimensionForArc(SketchManager dsSketchMgr)
            {
                //Draw an arc
                double centerX = 18, centerY = 2, centerZ = 0;
                double radius = 3;
                double startAngle = 0.0, endAngle = Math.PI / 2;
                CircleArc dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, radius, startAngle, endAngle);

                //Angular Dimension's position
                double[] dimPosition = new double[] { 20, 5, 0 };

                //Text override
                string dimTextOverride = "AngularDimArc";

                AngularDimension dsAngularDim = dsSketchMgr.InsertAngularDimensionArc(dsArc, dimPosition, dimTextOverride);

                Debug.Print(Environment.NewLine + "An angular Dimension for an arc was added.");

                return dsAngularDim;
            }

            private static AngularDimension AddAngularDimensionUsing2Lines(SketchManager dsSketchMgr)
            {
                //Draw two lines for an angular Dimension
                Line dsFirstLine = dsSketchMgr.InsertLine(7, 0, 0, 10, 3, 0);
                Line dsSecondLine = dsSketchMgr.InsertLine(12, 0, 0, 15, 2, 0);

                //Angular Dimension position
                double[] dimPosition = new double[] { 13, 4, 0 };

                //No text override - empty string
                string dimTextOverride = string.Empty;

                AngularDimension dsAngularDim = dsSketchMgr.InsertAngularDimension2Line(dsFirstLine, dsSecondLine, dimPosition, dimTextOverride);

                Debug.Print(Environment.NewLine + "An angular Dimension using two lines was added.");

                return dsAngularDim;
            }

            private static AngularDimension AddAngularDimensionUsing3Points(SketchManager dsSketchMgr)
            {
                //Angular Dimension parameters
                double[] centerPoint = new double[] { 0, 0, 0 };
                double[] angleStartPoint = new double[] { 2, 2, 0 };
                double[] angleEndPoint = new double[] { 2, 4, 0 };
                double[] dimPosition = new double[] { 5, 5, 0 };

                //No text override - empty string
                string dimTextOverride = string.Empty;

                AngularDimension dsAngular3PointDim = dsSketchMgr.InsertAngularDimension3Point(centerPoint, angleStartPoint, angleEndPoint, dimPosition, dimTextOverride);

                Debug.Print(Environment.NewLine + "An angular Dimension using three points was added.");

                return dsAngular3PointDim;
            }

            private static void PrintAngularDimProperties(AngularDimension dsAngularDim)
            {
                Debug.Print("  Angular Dimension parameters...");

                Debug.Print("    Type = " + dsAngularDim.Type.ToString());

                //Get general Dimension object, which contains common Dimension properties
                GeneralDimension dsGeneralDim = dsAngularDim.GetGeneralDimension();

                Debug.Print("    Dimension style = " + dsGeneralDim.DimensionStyle);
                Debug.Print("    Handle = " + dsGeneralDim.Handle);
                Debug.Print("    Measurement (in radians) = " + dsGeneralDim.Measurement.ToString());
                Debug.Print("    Related = " + dsGeneralDim.Related.ToString());
                Debug.Print("    Text override = " + dsGeneralDim.TextOverride);
                Debug.Print("    Text rotation = " + dsGeneralDim.TextRotation);

                //Get text position
                double x, y;
                dsGeneralDim.GetTextPosition(out x, out y);
                Debug.Print("    Text position (" + x + "," + y + ")");

                //Print specific parameters for angular Dimension
                double z;
                //Get center point
                dsAngularDim.GetCenterPoint(out x, out y, out z);
                Debug.Print("    Center point (" + x + "," + y + "," + z + ")");

                //Get arc point
                dsAngularDim.GetArcPoint(out x, out y, out z);
                Debug.Print("    Arc point (" + x + "," + y + "," + z + ")");

                //Get first line's start point
                dsAngularDim.GetLine1Point(out x, out y, out z);
                Debug.Print("    Line1's start point (" + x + "," + y + "," + z + ")");

                //Get first line end point
                dsAngularDim.GetLine1EndPoint(out x, out y, out z);
                Debug.Print("    Line1's end point (" + x + "," + y + "," + z + ")");

                //Get second line start point
                dsAngularDim.GetLine2Point(out x, out y, out z);
                Debug.Print("    Line2's start point (" + x + "," + y + "," + z + ")");

                //Get second line end point
                dsAngularDim.GetLine2EndPoint(out x, out y, out z);
                Debug.Print("    Line2's end point (" + x + "," + y + "," + z + ")");
            }
        }
    }