This example shows how to create a tracker and add a temporary entity to the tracker.
//-------------------------------------------------------------- // 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 a temporary Circle for the tracker. // 2. Creates a tracker and adds the temporary Circle to the // the tracker. // 3. Examine the pointer in the drawing to verify. // 4. Prompts you to click in the drawing to insert a Circle. // 5. Inserts a Circle in the drawing at the point where you clicked. //---------------------------------------------------------------- using System; using DraftSight.Interop.dsAutomation; using System.Runtime.InteropServices; using System.Windows.Forms; namespace TrackerCSharp { class Program { private static DraftSight.Interop.dsAutomation.Application dsApp; private static Circle dsTempCircle; static void Main(string[] args) { //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(); if (null == dsApp) { return; } //Get active document Document dsDoc = dsApp.GetActiveDocument(); if (null == dsDoc) { MessageBox.Show("There are no open documents in DraftSight."); return; } //Get Sketch Manager SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager(); //Create temporary Circle dsApp.TemporaryEntityMode = true; dsTempCircle = dsSketchMgr.InsertCircle(0, 0, 0, 10); dsApp.TemporaryEntityMode = false; //Create tracker and add temporary Circle Tracker dsTracker = dsApp.CreateTracker(); dsTracker.AddTemporaryEntity(dsTempCircle); //Prompt for point where to insert Circle //Before prompt, add tracker to command message CommandMessage dsCmdMsg = dsApp.GetCommandMessage(); dsCmdMsg.AddTracker(dsTracker); double X = 0.0; double Y = 0.0; double Z = 0.0; dsTracker.UpdateNotify += new _ITrackerEvents_UpdateNotifyEventHandler(dsTracker_UpdateNotify); bool res = dsCmdMsg.PromptForPoint("Click to insert Circle", out X, out Y, out Z); dsTracker.UpdateNotify -= new _ITrackerEvents_UpdateNotifyEventHandler(dsTracker_UpdateNotify); if (res == true) { //Set the center of the Circle where user clicked dsTempCircle.SetCenter(X, Y, Z); //Add temporary Circle to drawing dsSketchMgr.AddTemporaryEntity(dsTempCircle); } //Remove tracker from command message if no longer needed dsCmdMsg.RemoveTracker(dsTracker); } private static void dsTracker_UpdateNotify(MathPoint CursorPosition) { if (CursorPosition == null) return; double x = 0.0, y = 0.0, z = 0.0; CursorPosition.GetPosition(out x, out y, out z); dsTempCircle.SetCenter(x, y, z); } } }