Hide Table of Contents

Create and Apply DimensionStyle Example (C#)

This example shows how to create, activate, and apply a new DimensionStyle. This example also shows how to create arc length, jogged, rotated, radius, and diameter Dimensions for circles, arcs, and a line.

//-------------------------------------------------------------
// 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. A new DimensionStyle named SampleDimStyle is created and 
//    activated.
// 2. Arc length, jogged, rotated, radius, and diameter dimensions
//    are created for circles, arcs, and a line, using the new 
//    DimensionStyle.
// 3. Examine the Output or Immediate window.
// 4. Click Continue.
// 5. Examine the drawing.
//------------------------------------------------------------
using System;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Diagnostics;
namespace AddArcLengthAndJoggedDimension
{
    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");
	    dsApp.AbortRunningCommand(); // abort any command currently running in DraftSight to avoid nested commands
            //Get active document
            Document dsDoc = dsApp.GetActiveDocument();
            if (null == dsDoc)
            {
                MessageBox.Show("There are no open documents in DraftSight.");
                return;
            }
            //Get DimensionStyle manager
            DimensionStyleManager dsDimStyleManager = dsDoc.GetDimensionStyleManager();
            //Create DimensionStyle named SampleDimStyle
            dsCreateObjectResult_e createDimStyleResult;
            string dimStyleName = "SampleDimStyle";
            DimensionStyle dsDimStyle;
            dsDimStyleManager.CreateDimensionStyle(dimStyleName, out dsDimStyle, out createDimStyleResult);
            if(dsCreateObjectResult_e.dsCreateObjectResult_Error == createDimStyleResult ||
               dsCreateObjectResult_e.dsCreateObjectResult_AlreadyExists == createDimStyleResult ||
               null == dsDimStyle)
            {
                MessageBox.Show("Failed to create " + dimStyleName + " DimensionStyle, or DimensionStyle already exists.");
                return;
            }
            SetDimensionStyleSettings(dsDimStyle);
            //Activate DimensionStyle
            dsDimStyle.Activate();            
            //Get model space
            Model dsModel = dsDoc.GetModel();
            //Get sketch manager
            SketchManager dsSketchMgr = dsModel.GetSketchManager();
            //Draw arc length Dimension
            DrawArcLengthDimension(dsSketchMgr);            
            //Draw jogged Dimension for circle and arc
            DrawJoggedDimension(dsSketchMgr);
            //Draw rotated Dimension
            DrawRotatedDimension(dsSketchMgr);
            //Draw radius Dimension for circle and arc
            DrawRadialDimension(dsSketchMgr);
            //Draw diameter Dimension for circle and arc
            DrawDiameterDimension(dsSketchMgr);
            //Zoom to fit
            dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
        }                                    
        private static void SetDimensionStyleSettings(DimensionStyle dsDimStyle)
        {
            //Get DimensionStyle arrows options
            DimensionStyleArrowsOptions dsArrowsDimStyleOptions = dsDimStyle.GetDimensionStyleArrowsOptions();
            //Set start and end arrow types
            dsArrowsDimStyleOptions.SetStartArrow(dsDimensionArrowType_e.dsDimensionArrowType_ClosedBlank, string.Empty);
            dsArrowsDimStyleOptions.SetEndArrow(dsDimensionArrowType_e.dsDimensionArrowType_ClosedBlank, string.Empty);
            //Get DimensionStyle line options
            DimensionStyleLineOptions dsLineDimStyleOptions = dsDimStyle.GetDimensionStyleLineOptions();
            //Set Dimension line color
            Color dsColor = dsLineDimStyleOptions.DimensionLineColor;
            dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Green);
            dsLineDimStyleOptions.DimensionLineColor = dsColor;
            //Set extension line color
            dsColor.SetNamedColor(dsNamedColor_e.dsNamedColor_Yellow);
            dsLineDimStyleOptions.ExtensionLineColor = dsColor;
            //Get DimensionStyle radius and diameter Dimension options
            DimensionStyleRadialDiameterDimensionOptions dsRadialAndDiameterDimStyleOptions = dsDimStyle.GetDimensionStyleRadialDiameterDimensionOptions();
            //Set jog angle 45 degrees (in radians)
            dsRadialAndDiameterDimStyleOptions.RadiusDimensionJogAngle = Math.PI / 4;
            
            //Set center mark
            double markSize = 0.05;
            dsRadialAndDiameterDimStyleOptions.SetCenterMarkDisplay(dsDimensionCenterMarkDisplay_e.dsDimensionCenterMarkDisplay_AsMark, markSize);
            //Get Dimension style text options
            DimensionStyleTextOptions dsTextOptions = dsDimStyle.GetDimensionStyleTextOptions();
            
            //Frame Dimension text
            dsTextOptions.FrameDimensionText = true;
            //Set text position
            dsTextOptions.HorizontalPosition = dsDimensionTextHorizontalPosition_e.dsDimensionTextHorizontalPosition_Centered;
            dsTextOptions.VerticalPosition = dsDimensionTextVerticalPosition_e.dsDimensionTextVerticalPosition_Centered;
            //Set text alignment
            dsTextOptions.Alignment = dsDimensionTextAlignment_e.dsDimensionTextAlignment_AlignWithDimensionLines;
        }
        private static void DrawArcLengthDimension(SketchManager dsSketchMgr)
        {
            //Add arc to drawing
            double centerX = -8;
            double centerY = 1;
            double centerZ = 0;
            double radius = 5;
            double startAngle = Math.PI / 6;
            double endAngle = Math.PI;
            CircleArc dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, radius, startAngle, endAngle);
            //Add arc length Dimension
            double[] dimensionPosition = new double[] { -6, 6, 0 };
            string dimensionTextOverride = string.Empty;
            ArcLengthDimension dsArcLengthDim = dsSketchMgr.InsertArcLengthDimension(dsArc, dimensionPosition, dimensionTextOverride);
            //Print information about arc length Dimension
            PrintArcLengthDimProperties(dsArcLengthDim);
            //Add a partial arc length Dimension 
            double[] firstPoint = new double[] { -4, 3, 0 };
            double[] secondPoint = new double[] { -7, 6, 0 };
            dimensionPosition[0] = -6;
            dimensionPosition[1] = 7;
            ArcLengthDimension dsArcLengthPartialDim = dsSketchMgr.InsertArcLengthDimensionPartial(dsArc, firstPoint, secondPoint, dimensionPosition, dimensionTextOverride);
            //Print information about partial arc length Dimension
            PrintArcLengthDimProperties(dsArcLengthDim);
        }
        private static void DrawJoggedDimension(SketchManager dsSketchMgr)
        {
            //Draw a circle
            double centerX = -7, centerY = -5, centerZ = 0;
            double radius = 3;
            Circle dsCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);            
            //Add jogged Dimension to circle
            double[] centerPositionOverride = new double[] { -12, -8, 0 };
            double[] jogLinePosition = new double[] { -11, -8, 0 };
            double[] dimensionPosition = new double[] { -10, -7.5, 0 };
            string dimensionTextOverride = string.Empty;
            JoggedDimension dsJoggedDimForCircle = dsSketchMgr.InsertJoggedDimensionCircle(dsCircle, centerPositionOverride, jogLinePosition, dimensionPosition, dimensionTextOverride);
            //Print information about jogged Dimension
            PrintJoggedDimProperties(dsJoggedDimForCircle);
            //Draw an arc
            centerX = 2;
            centerY = -6;
            double arcRadius = 3;
            double startAngle = 0.0;
            double endAngle = Math.PI / 3;
            CircleArc dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle);
            //Add jogged Dimension to arc
            centerPositionOverride[0] = 7;
            centerPositionOverride[1] = -3;
            jogLinePosition[0] = 7;
            jogLinePosition[1] = -4;
            dimensionPosition[0] = 5.5;
            dimensionPosition[1] = -4.5;
            JoggedDimension dsJoggedDimForArc = dsSketchMgr.InsertJoggedDimensionArc(dsArc, centerPositionOverride, jogLinePosition, dimensionPosition, dimensionTextOverride);
            //Print information about jogged Dimension
            PrintJoggedDimProperties(dsJoggedDimForArc);
        }        
        private static void DrawRadialDimension(SketchManager dsSketchMgr)
        {
            //Draw a circle
            double centerX = 2, centerY = 2, centerZ = 0;
            double radius = 3;
            Circle dsCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
            //Draw an arc
            centerX = 10;
            centerY = 2;
            double arcRadius = 3;
            double startAngle = 0.0;
            double endAngle = Math.PI / 3;
            CircleArc dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle);
            //Add radius Dimension to circle
            double[] dimPosition = new double[] { 7, 6, 0 };
            string dimTextOverride = string.Empty;
            RadialDimension dsRadialCircleDim = dsSketchMgr.InsertRadialDimensionCircle(dsCircle, dimPosition, dimTextOverride);
            //Print information about radius Dimension
            PrintRadialDimProperties(dsRadialCircleDim);
            //Add radius Dimension to arc
            dimPosition[0] = 16;
            dimPosition[1] = 3;
            RadialDimension dsRadialArcDim = dsSketchMgr.InsertRadialDimensionArc(dsArc, dimPosition, dimTextOverride);
            //Print information about radius Dimension
            PrintRadialDimProperties(dsRadialArcDim);
        }
        private static void DrawDiameterDimension(SketchManager dsSketchMgr)
        {
            //Draw a circle
            double centerX = 2, centerY = 2, centerZ = 0;
            double radius = 3;
            Circle dsCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
            //Draw an arc
            centerX = 10;
            centerY = 2;
            double arcRadius = 3;
            double startAngle = 0.0;
            double endAngle = Math.PI / 3;
            CircleArc dsArc = dsSketchMgr.InsertArc(centerX, centerY, centerZ, arcRadius, startAngle, endAngle);
            //Add diameter Dimension to circle
            double[] dimPosition = new double[] { 3, 8, 0 };
            //No text override - empty string
            string dimTextOverride = string.Empty;
            DiameterDimension dsDiameterCircleDim = dsSketchMgr.InsertDiameterDimensionCircle(dsCircle, dimPosition, dimTextOverride);
            //Print information about diameter Dimension
            PrintDiameterDimProperties(dsDiameterCircleDim);
            //Add diameter Dimension to arc
            dimPosition[0] = 14;
            dimPosition[1] = 6;
            DiameterDimension dsDiameterArcDim = dsSketchMgr.InsertDiameterDimensionArc(dsArc, dimPosition, dimTextOverride);
            //Print information about diameter Dimension
            PrintDiameterDimProperties(dsDiameterArcDim);
        }
        private static void DrawRotatedDimension(SketchManager dsSketchMgr)
        {
            //Draw line
            double startX = 10;
            double startY = -5;
            double startZ = 0;
            double endX = 14;
            double endY = -5;
            double endZ = 0;
            Line dsLine = dsSketchMgr.InsertLine(startX, startY, startZ, endX, endY, endZ);
            //Draw rotated Dimension
            double[] extLine1Point = new double[] {startX, startY, startZ };
            double[] extLine2Point = new double[] { endX, endY, endZ };
            double[] dimensionLinePosition = new double[] { 16, -6, 0 };
            string dimTextOverride = string.Empty;
            //Angle 45 degrees (in radians)
            double rotationAngle = Math.PI / 4;
            RotatedDimension dsRotatedDim = dsSketchMgr.InsertRotatedDimension(extLine1Point, extLine2Point, dimensionLinePosition, dimTextOverride, rotationAngle);
            //Print information about rotated Dimension
            PrintRotatedDimProperties(dsRotatedDim);
        }
        private static void PrintArcLengthDimProperties(ArcLengthDimension dsArcLengthDim)
        {
            Debug.Print(Environment.NewLine + "  Arc length Dimension parameters...");
            //Get general Dimension object, which contains common Dimension properties,
            //and print them 
            GeneralDimension dsGeneralDim = dsArcLengthDim.GetGeneralDimension();
            PrintGeneralDimProperties(dsGeneralDim);
            //Print specific parameters for arc length Dimension            
            Debug.Print("    ArcSymbolType = " + dsArcLengthDim.ArcSymbolType);
            Debug.Print("    HasLeader = " + dsArcLengthDim.HasLeader);
            Debug.Print("    IsPartial = " + dsArcLengthDim.IsPartial);
            
            double x, y, z;
            //Get center point            
            dsArcLengthDim.GetCenterPoint(out x, out y, out z);
            Debug.Print("    Center point (" + x + "," + y + "," + z + ")");
            //Get arc point
            dsArcLengthDim.GetArcPoint(out x, out y, out z);
            Debug.Print("    Arc point (" + x + "," + y + "," + z + ")");
            //Get extension line 1 point
            dsArcLengthDim.GetExtensionLine1Point(out x, out y, out z);
            Debug.Print("    Extension line 1 point (" + x + "," + y + "," + z + ")");
            //Get extension line 2 point
            dsArcLengthDim.GetExtensionLine2Point(out x, out y, out z);
            Debug.Print("    Extension line 2 point (" + x + "," + y + "," + z + ")");
        }
        private static void PrintRadialDimProperties(RadialDimension dsRadialDim)
        {
            Debug.Print(Environment.NewLine + "  Radius Dimension parameters...");
            //Get general Dimension object, which contains common Dimension properties,
            //and print them 
            GeneralDimension dsGeneralDim = dsRadialDim.GetGeneralDimension();
            PrintGeneralDimProperties(dsGeneralDim);
            //Print specific parameters for radius Dimension
            double x, y, z;
            //Get center point
            dsRadialDim.GetCenterPoint(out x, out y, out z);
            Debug.Print("    Center point (" + x + "," + y + "," + z + ")");
            //Get defining point
            dsRadialDim.GetDefiningPoint(out x, out y, out z);
            Debug.Print("    Defining point (" + x + "," + y + "," + z + ")");
            //Print leader length value
            Debug.Print("    Leader length = " + dsRadialDim.LeaderLength);
        }
        private static void PrintDiameterDimProperties(DiameterDimension dsDiameterDim)
        {
            Debug.Print(Environment.NewLine + "  Diameter Dimension parameters...");
            //Get general Dimension object, which contains common Dimension properties,
            //and print them 
            GeneralDimension dsGeneralDim = dsDiameterDim.GetGeneralDimension();
            PrintGeneralDimProperties(dsGeneralDim);
            //Print specific parameters for diameter Dimension
            double x, y, z;
            //Get defining point
            dsDiameterDim.GetDefiningPoint(out x, out y, out z);
            Debug.Print("    Defining point (" + x + "," + y + "," + z + ")");
            //Get far defining point
            dsDiameterDim.GetFarDefiningPoint(out x, out y, out z);
            Debug.Print("    Far defining point (" + x + "," + y + "," + z + ")");
            //Print leader length value
            Debug.Print("    Leader length = " + dsDiameterDim.LeaderLength);
        }
        private static void PrintJoggedDimProperties(JoggedDimension dsJoggedDim)
        {
            Debug.Print(Environment.NewLine + "  Jogged Dimension parameters...");
            //Get general Dimension object, which contains common Dimension properties,
            //and print them 
            GeneralDimension dsGeneralDim = dsJoggedDim.GetGeneralDimension();
            PrintGeneralDimProperties(dsGeneralDim);
            //Print specific parameters for jogged Dimension
            Debug.Print("    Jog angle = " + dsJoggedDim.JogAngle);
            double x, y, z;
            //Get center point
            dsJoggedDim.GetCenterPoint(out x, out y, out z);
            Debug.Print("    Center point (" + x + "," + y + "," + z + ")");
            //Get chord point
            dsJoggedDim.GetChordPoint(out x, out y, out z);
            Debug.Print("    Chord point (" + x + "," + y + "," + z + ")");
            //Get jog point
            dsJoggedDim.GetJogPoint(out x, out y, out z);
            Debug.Print("    Jog point (" + x + "," + y + "," + z + ")");
            //Get override center point
            dsJoggedDim.GetOverrideCenterPoint(out x, out y, out z);
            Debug.Print("    Override center point (" + x + "," + y + "," + z + ")");
        }
        private static void PrintRotatedDimProperties(RotatedDimension dsRotatedDim)
        {
            Debug.Print(Environment.NewLine + "  Rotated Dimension parameters...");
            //Get general Dimension object, which contains common Dimension properties,
            //and print them 
            GeneralDimension dsGeneralDim = dsRotatedDim.GetGeneralDimension();
            PrintGeneralDimProperties(dsGeneralDim);
            //Print specific parameters for rotated Dimension
            Debug.Print("    Rotation angle = " + dsRotatedDim.Rotation);
            double x, y, z;
            //Get Dimension line point
            dsRotatedDim.GetDimensionLinePoint(out x, out y, out z);
            Debug.Print("    Dimension line point (" + x + "," + y + "," + z + ")");
            //Get extension line 1 point
            dsRotatedDim.GetExtensionLine1Point(out x, out y, out z);
            Debug.Print("    Extension line 1 point (" + x + "," + y + "," + z + ")");
            //Get extension line 2 point
            dsRotatedDim.GetExtensionLine2Point(out x, out y, out z);
            Debug.Print("    Extension line 2 point (" + x + "," + y + "," + z + ")");            
        }
        private static void PrintGeneralDimProperties(GeneralDimension dsGeneralDim)
        {
            //Get general Dimension object, which contains common Dimension properties,
            //and print them
            Debug.Print("    Dimension style = " + dsGeneralDim.DimensionStyle);
            Debug.Print("    Handle = " + dsGeneralDim.Handle);
            Debug.Print("    Measurement = " + dsGeneralDim.Measurement.ToString());
            Debug.Print("    Related = " + dsGeneralDim.Related.ToString());
            Debug.Print("    Text override = " + dsGeneralDim.TextOverride);
            Debug.Print("    TextRotation = " + dsGeneralDim.TextRotation);
            //Get text position
            double x, y;
            dsGeneralDim.GetTextPosition(out x, out y);
            Debug.Print("    Text position (" + x + "," + y + ")");
        }
    }
}

 



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Create and Apply DimensionStyle Example (C#)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2020 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.