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