# Get Distance Between Two Math Points Example (VB.NET)

This example shows how to get the distance between two math points.

'--------------------------------------------------------------
' Preconditions:
' 1. Create a VB.NET Windows console project.
' 2. Copy and paste this project into the VB.NET 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 command window.
'----------------------------------------------------------------
Imports System.Collections.Generic
Imports System.Text
Imports DraftSight.Interop.dsAutomation
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
Module Module1
Dim dsApp As DraftSight.Interop.dsAutomation.Application
Sub Main(ByVal args As String())
'Connect to DraftSight application
dsApp = ConnectToDraftSight()
If dsApp Is Nothing Then
Return
End If
dsApp.AbortRunningCommand() ' abort any command currently running in DraftSight to avoid nested commands
'Get active document
Dim dsDoc As Document = dsApp.GetActiveDocument()
If dsDoc Is Nothing Then
MessageBox.Show("There are no open documents in DraftSight.")
Return
End If
'Get math utility
Dim dsMathUtility As MathUtility = dsApp.GetMathUtility()
'Get distance between two points
GetDistance(dsMathUtility)
End Sub
Function ConnectToDraftSight() As DraftSight.Interop.dsAutomation.Application
Dim dsApp As DraftSight.Interop.dsAutomation.Application = Nothing
Try
'Connect to DraftSight
dsApp = DirectCast(Marshal.GetActiveObject("DraftSight.Application"), DraftSight.Interop.dsAutomation.Application)
Catch ex As Exception
MessageBox.Show("Failed to connect to DraftSight. Cause: " & ex.Message)
dsApp = Nothing
End Try
Return dsApp
End Function
Sub GetDistance(ByVal dsMathUtility As MathUtility)
'Get command message
Dim dsCommandMessage As CommandMessage = dsApp.GetCommandMessage()
dsCommandMessage.PrintLine("Get distance between two points")
'Prompt to select the first point and second points
'to calculate the distance between them
Dim firstX As Double, firstY As Double, firstZ As Double
Dim secondX As Double, secondY As Double, secondZ As Double
If dsCommandMessage.PromptForPoint("Specify the first point", firstX, firstY, firstZ) AndAlso dsCommandMessage.PromptForPoint("Specify the second point", secondX, secondY, secondZ) Then
'Create the first math point
Dim dsFirstMathPoint As MathPoint = dsMathUtility.CreatePoint(firstX, firstY, firstZ)
'Create the second math point
Dim dsSecondMathPoint As MathPoint = dsMathUtility.CreatePoint(secondX, secondY, secondZ)
'Get distance between points
Dim dsResultPoint1 As MathPoint = Nothing
Dim dsResultPoint2 As MathPoint = Nothing
Dim distance As Double = dsMathUtility.Distance(dsFirstMathPoint, dsSecondMathPoint, dsResultPoint1, dsResultPoint2)
'Get result point coordinates
dsResultPoint1.GetPosition(firstX, firstY, firstZ)
dsResultPoint2.GetPosition(secondX, secondY, secondZ)
Dim message As String = String.Format("The distance between ({0},{1},{2}) and ({3},{4},{5}) point is {6}." & vbLf, firstX, firstY, firstZ, secondX, secondY, _
secondZ, distance)
dsCommandMessage.PrintLine(message)
End If
End Sub
End Module