This example shows how to add temporary entities to a Block definition and Block Instance.
//-------------------------------------------------------------- // 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.Windows.Forms. // 5. Start DraftSight and open a document. // 6. Start debugging the project. // // Postconditions: // 1. Creates Block definition with one element, a Circle. // 2. Inserts Block instance. // 3. Zooms to fit the drawing and execution stops. // 4. Press F10 to step through the rest of the project // and examine the drawing after each call. // 5. Creates temporary entities, two Circles. // 6. Modifies temporary entities. // 7. Adds temporary entities to Block definition and Block // instance. //---------------------------------------------------------------- using System; using DraftSight.Interop.dsAutomation; using System.Runtime.InteropServices; using System.Windows.Forms; namespace TemporaryEntitiesCSharp { class Program { public static void Main() { DraftSight.Interop.dsAutomation.Application dsApp; //Connect to DraftSight application dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application"); if (null == dsApp) { return; }
//Abort any command currently running in DraftSight //to avoid nested commands dsApp.AbortRunningCommand(); //Get active document Document dsDoc = dsApp.GetActiveDocument(); if (null == dsDoc) { MessageBox.Show("There are no open documents in DraftSight."); return; } SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager(); //Create Block definition with one element, a Circle Circle dsCircle = dsSketchMgr.InsertCircle(0, 0, 0, 5); DispatchWrapper[] dsEntities = new DispatchWrapper[1]; int[] dsEntityTypes = new int[1]; dsEntities[0] = new DispatchWrapper(dsCircle); dsEntityTypes[0] = (int)dsObjectType_e.dsCircleType; BlockDefinition dsBlkDef = dsDoc.CreateBlockDefinition("SampleBlock", "Sample block definition", 0, 0, 0, dsEntityTypes, dsEntities, dsBlockDefinitionEntities_e.dsBlockDefinitionEntities_RemoveFromDrawing); dsSketchMgr.InsertBlock2("SampleBlock", 0, 0, 0, 1, 1, 1, 0); //Zoom to fit dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); //Examine the drawing //to verify that a Block instance //was inserted //Press F10 to continue System.Diagnostics.Debugger.Break(); //Create temporary entities, which are not added to drawing //Turn temporary entity mode on dsApp.TemporaryEntityMode = true; //Create temporary Circles Circle dsTempCircle1 = dsSketchMgr.InsertCircle(0, 0, 0, 5); Circle dsTempCircle2 = dsSketchMgr.InsertCircle(0, 0, 0, 5); //Turn temporary entity mode off dsApp.TemporaryEntityMode = false; //Modify Circles, which you cannot see double PointOnCurveX = 0.0; double PointOnCurveY = 0.0; double PointOnCurveZ = 0.0; dsCircle.GetClosestPointOn(2.5, 2.5, 0, out PointOnCurveX, out PointOnCurveY, out PointOnCurveZ); dsTempCircle1.SetCenter(PointOnCurveX, PointOnCurveY, PointOnCurveZ); dsTempCircle1.GetClosestPointOn(PointOnCurveX + 2.5, PointOnCurveY + 2.5, PointOnCurveZ, out PointOnCurveX, out PointOnCurveY, out PointOnCurveZ); dsTempCircle2.SetCenter(PointOnCurveX, PointOnCurveY, PointOnCurveZ); //Zoom to fit dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); //Add temporary Circles to Block definition //Block instance updates accordingly dsBlkDef.AddTemporaryEntity(dsTempCircle1); dsBlkDef.AddTemporaryEntity(dsTempCircle2); //Zoom to fit dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null); } } }