Get Distance Between Two Math Points Example (C#)
This example shows how to get the distance between two math points.
//-------------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this project into the C# IDE.
// 3. Add a reference to:
// install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.
// 4. Add references to System and System.Windows.Forms.
// 5. Start DraftSight.
// 6. Run the macro.
// 7. Select two points when prompted in the DraftSight command window.
//
// Postconditions: The distance between two math points is printed in
// the DraftSight command window.
//-------------------------------------------------------------------
using
System;
using
System.Collections.Generic;
using
System.Text;
using
DraftSight;
using
System.Runtime.InteropServices;
using
System.Windows.Forms;
namespace
GetDistance
{
class
Program
{
private
static
DraftSight.Application
dsApp;
static
void Main(string[]
args)
{
//Connect to DraftSight
application
dsApp = ConnectToDraftSight();
if
(null ==
dsApp)
{
return;
}
dsApp.AbortRunningCommand();
// abort any command currently running in DraftSight to avoid nested
commands
//Get active document
Document
dsDoc = dsApp.GetActiveDocument();
if
(null ==
dsDoc)
{
MessageBox.Show("There
are no open documents in DraftSight.");
return;
}
//Get math utility
MathUtility
dsMathUtility = dsApp.GetMathUtility();
//Get distance between two
points
GetDistance(dsMathUtility);
}
private
static
DraftSight.Application
ConnectToDraftSight()
{
DraftSight.Application
dsApp = null;
try
{
//Connect to DraftSight
dsApp = (DraftSight.Application)Marshal.GetActiveObject("DraftSight.Application");
}
catch
(Exception
ex)
{
MessageBox.Show("Failed
to connect to DraftSight. Cause: " +
ex.Message);
dsApp = null;
}
return
dsApp;
}
private
static
void
GetDistance(MathUtility
dsMathUtility)
{
//Get command message
CommandMessage
dsCommandMessage = dsApp.GetCommandMessage();
dsCommandMessage.PrintLine("Get
distance between two points");
//Prompt to select the first
point and second points
//to
calculate the distance between them
double
firstX, firstY, firstZ;
double
secondX, secondY, secondZ;
if
(dsCommandMessage.PromptForPoint("Specify
the first point",
out firstX,
out firstY,
out firstZ) &&
dsCommandMessage.PromptForPoint("Specify
the second point",
out secondX,
out secondY,
out secondZ))
{
//Create the first math
point
MathPoint
dsFirstMathPoint = dsMathUtility.CreatePoint(firstX, firstY, firstZ);
//Create the second math
point
MathPoint
dsSecondMathPoint = dsMathUtility.CreatePoint(secondX, secondY,
secondZ);
//Get distance between
points
MathPoint
dsResultPoint1, dsResultPoint2;
double
distance = dsMathUtility.Distance(dsFirstMathPoint, dsSecondMathPoint,
out
dsResultPoint1, out
dsResultPoint2);
//Get result point
coordinates
dsResultPoint1.GetPosition(out
firstX, out
firstY, out
firstZ);
dsResultPoint2.GetPosition(out
secondX, out
secondY, out
secondZ);
string
message = string.Format("The
distance between ({0},{1},{2}) and ({3},{4},{5}) point is {6}.\n",
firstX, firstY, firstZ,
secondX, secondY, secondZ, distance);
dsCommandMessage.PrintLine(message);
}
}
}
}