Create Tracker Example (C#)
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);
}
}
}