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