Attach Note and Tolerance Annotations to Leaders Example (C#)
This example shows how to attach Note and Tolerance annotations to Leaders.
//-------------------------------------------------------------
// 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 a reference to System.Windows.Forms.
// 5. Start DraftSight and open a document.
// 6. Click Start Debugging.
//
// Postconditions:
// 1. A Leader is constructed with a Note.
// 2. Click within the drawing to specify the point
// where to attach a geometric Tolerance annotation
// to the Leader.
// 3. The geometric Tolerance annotation is attached to
// the Leader.
// 4. A second leader is constructed with a Note.
// 5. Click within the drawing to specify the
// point where to attach the New Note annotation to
// the Leader.
// 6. The New Note annotation is attached to the Leader.
// 7. The drawing is zoomed to fit.
//------------------------------------------------------------
using System.IO;
using DraftSight.Interop.dsAutomation;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace CreateNoteToleranceLeadersCSharp
{
static class Module1
{
static DraftSight.Interop.dsAutomation.Application dsApp = default(DraftSight.Interop.dsAutomation.Application);
public static void Main()
{
//Connect to DraftSight application
dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
// Abort any command currently running in DraftSight to avoid nested commands
dsApp.AbortRunningCommand();
//Get active document
Document dsDoc = dsApp.GetActiveDocument();
if (dsDoc == null) {
MessageBox.Show("There are no open documents in DraftSight.");
return;
}
//Get model space
Model dsModel = dsDoc.GetModel();
//Get the Sketch Manager
SketchManager dsSketchMgr = dsModel.GetSketchManager();
//Add first Leader
double[] leaderCoordinates = new double[] {
6.5,
7.2,
0,
7.7,
8.6,
0
};
double noteWidth = 1.0;
string noteText = "L1 ";
Leader dsLeader = dsSketchMgr.InsertLeader(leaderCoordinates, noteWidth, noteText);
//Get command message
CommandMessage dsCommandMessage = dsApp.GetCommandMessage();
//Get math utility
MathUtility dsMathUtility = dsApp.GetMathUtility();
//Prompt to select the point where to insert the
//Tolerance annotation to the Leader
double firstX = 0;
double firstY = 0;
double firstZ = 0;
MathPlane dsMathPlane = default(MathPlane);
dsMathUtility = dsApp.GetMathUtility();
dsMathPlane = dsMathUtility.CreateXYPlane();
bool status = false;
status = dsCommandMessage.PromptForPoint2("Click within the drawing to insert the geometric Tolerance", true, 0, 0, 0, out firstX, out firstY, out firstZ, dsMathPlane);
//Create the first math point
MathPoint dsFirstMathPoint = dsMathUtility.CreatePoint(firstX, firstY, firstZ);
//Attach the Tolerance annotaion
dsLeader.SetToleranceAnnotation("{\\Fgdt;j}%%v{\\Fgdt;n}0.7{\\Fgdt;m}", dsFirstMathPoint);
//Add second Leader
double[] leaderCoordinates2 = new double[] {
18,
29,
0,
30,
26,
0
};
double noteWidth2 = 1.0;
string noteText2 = "L2 ";
Leader dsLeader2 = dsSketchMgr.InsertLeader(leaderCoordinates2, noteWidth2, noteText2);
//Prompt to select the point where to insert a
//Note annotation to the Leader
double secondX = 0;
double secondY = 0;
double secondZ = 0;
MathPlane dsMathPlane2 = default(MathPlane);
MathUtility dsMathUtility2 = dsApp.GetMathUtility();
dsMathPlane2 = dsMathUtility2.CreateXYPlane();
bool status2 = false;
status2 = dsCommandMessage.PromptForPoint2("Click within the drawing to specify where to insert the Note", true, 0, 0, 0, out secondX, out secondY, out secondZ, dsMathPlane2);
//Create the second math point
MathPoint dsSecondMathPoint = dsMathUtility.CreatePoint(secondX, secondY, secondZ);
//Attach the New Note annotation
dsLeader2.SetNoteAnnotation("New Note", dsSecondMathPoint);
dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
}
}
}