This example shows how to create aligned linear and ordinate Dimensions for a closed PolyLine and Circles. A Leader and a geometric tolerance are also created.
//------------------------------------------------------------- // 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.Forms. // 5. Start DraftSight and open a document. // 6. Click Start Debugging. // // Postconditions: // 1. A closed PolyLine and four Circles are constructed. // 2. Aligned linear and ordinate Dimensions are created. //------------------------------------------------------------ using System; using System.Runtime.InteropServices; using DraftSight.Interop.dsAutomation; using System.Windows.Forms;
namespace AlignedAndOrdinateDims_ToleranceAndLeader { class Program { private static DraftSight.Interop.dsAutomation.Application dsApp;
static void Main() { //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 model space Model dsModel = dsDoc.GetModel();
//Get sketch manager SketchManager dsSketchMgr = dsModel.GetSketchManager();
//Construct a closed PolyLine double[] coordinates = new double[] { 2, 2, 8, 2, 8, 8, 2, 8 }; bool closed = true; PolyLine dsPolyline = dsSketchMgr.InsertPolyline2D(coordinates, closed);
//Construct four Circles double centerX = 3.5; double centerY = 3.5; double centerZ = 0.0; double radius = 0.7; Circle dsFirstCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
centerX = 6.5; Circle dsSecondCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
centerX = 6.5; centerY = 6.5; Circle dsThirdCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
centerX = 3.5; Circle dsFourthCircle = dsSketchMgr.InsertCircle(centerX, centerY, centerZ, radius);
//Add aligned linear Dimensions double[] extLine1Point = new double[] { 2, 2, 0 }; double[] extLine2Point = new double[] { 8, 2, 0 }; double[] dimLinePoint = new double[] { 5, 1, 0 }; string dimensionTextOverride = string.Empty; AlignedDimension dsFirstAlignedDim = dsSketchMgr.InsertAlignedDimension(extLine1Point, extLine2Point, dimLinePoint, dimensionTextOverride);
extLine1Point[0] = 8; extLine1Point[1] = 2; extLine2Point[0] = 8; extLine2Point[1] = 8; dimLinePoint[0] = 9; dimLinePoint[1] = 5; AlignedDimension dsSecondAlignedDim = dsSketchMgr.InsertAlignedDimension(extLine1Point, extLine2Point, dimLinePoint, dimensionTextOverride);
//Add ordinate Dimensions dsOrdinateDimensionMeasure_e measure = dsOrdinateDimensionMeasure_e.dsOrdinateDimensionMeasure_UseYAxis; double[] datumPosition = new double[] { 2, 2, 0 }; double[] dimPosition = new double[] { 1, 2, 0 }; OrdinateDimension dsFirstOrdinateDim = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure);
datumPosition[1] = 8; dimPosition[1] = 8; OrdinateDimension dsSecondOrdinateDim = dsSketchMgr.InsertOrdinateDimension(datumPosition, dimPosition, dimensionTextOverride, measure);
//Add Leader double[] leaderCoordinates = new double[] { 6.5, 7.2, 0, 7.7, 8.6, 0 }; double noteWidth = 1.0; string noteText = "4X"; Leader dsLeader = dsSketchMgr.InsertLeader(leaderCoordinates, noteWidth, noteText);
//Add a geometric tolerance double[] tolerancePosition = new double[]{ 8.2, 8.6, 0}; string textString = "{\\Fgdt;j}%%v{\\Fgdt;n}0.7{\\Fgdt;m}"; Tolerance dsTolerance = dsSketchMgr.InsertTolerance(tolerancePosition, textString);
//Zoom to fit dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); } } }