This example shows how to attach a Block definition annotation to a Leader.
//-------------------------------------------------------------- // 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 message box pops up when the Block definition, // named MyBlockAnnotation, is created. // 2. Click OK to close the message box. // 3. A Leader is created and MyBlockAnnotation is // is attached to the Leader. // 4. The drawing zooms to fit. // 5. Examine the drawing. //---------------------------------------------------------------- using DraftSight.Interop.dsAutomation; using System; using System.Runtime.InteropServices; using System.Windows.Forms; static class Module1 { static void Main(string[] args) { DraftSight.Interop.dsAutomation.Application dsApp; Document dsDoc = default(Document); Model dsModel = default(Model); SketchManager dsSketchManager = default(SketchManager); //Connect to DraftSight dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application"); //Get active document dsDoc = dsApp.GetActiveDocument(); if ((dsDoc != null)) { //Get model space dsModel = dsDoc.GetModel(); //Get Sketch Manager dsSketchManager = dsModel.GetSketchManager(); //First Line's parameters double startX = 1.0; double startY = 1.0; double startZ = 0.0; double endX = 6.0; double endY = 1.0; double endZ = 0.0; //Construct a Line Line dsLine = (dsSketchManager.InsertLine(startX, startY, startZ, endX, endY, endZ)); //Second Line's parameters double start2X = 2.0; double start2Y = 2.0; double start2Z = 0.0; double end2X = 2.0; double end2Y = 20.0; double end2Z = 0.0; //Construct another Line Line dsLine2 = (dsSketchManager.InsertLine(start2X, start2Y, start2Z, end2X, end2Y, end2Z)); int[] typesArray = new int[] {21, 21}; Line[] linesArray = new Line[] {dsLine, dsLine2}; BlockDefinition dsBlockDef = dsDoc.CreateBlockDefinition ("MyBlockAnnotation", "Block annotation to attach to Leader", 0, 0, 0, typesArray, linesArray, dsBlockDefinitionEntities_e.dsBlockDefinitionEntities_ConvertToBlock); MessageBox.Show("Name of Block definition: " + dsBlockDef.GetName()); //Add Leader double[] leaderCoordinates = new double[] { 6.5, 7.2, 0, 7.7, 8.6, 0 }; double noteWidth = 1.0; string noteText = "L1 "; Leader dsLeader = dsSketchManager.InsertLeader(leaderCoordinates, noteWidth, noteText); //Attach Block definition to Leader, //which creates a Block instance MathUtility dsMathUtility = dsApp.GetMathUtility(); MathPoint dsMathPoint = dsMathUtility.CreatePoint(20,20,25); dsLeader.SetBlockAnnotation("MyBlockAnnotation", dsMathPoint); dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); } } }