Create Aligned Linear and Ordinate Dimensions Example (C#)
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);
}
}
}