By using the methods provided by the Editor object and the Geometry and Runtime namespaces, you can quickly solve a mathematical problem or locate points in your drawing. Some of the available methods are:
This example calculates a vector between two points and determines the angle from the X-axis.
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry
<CommandMethod("AngleFromXAxis")> _
Public Sub AngleFromXAxis()
Dim pt1 As Point2d = New Point2d(2, 5)
Dim pt2 As Point2d = New Point2d(5, 2)
Application.ShowAlertDialog("Angle from XAxis: " & _
pt1.GetVectorTo(pt2).Angle.ToString())
End Sub
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
[CommandMethod("AngleFromXAxis")]
public static void AngleFromXAxis()
{
Point2d pt1 = new Point2d(2, 5);
Point2d pt2 = new Point2d(5, 2);
Application.ShowAlertDialog("Angle from XAxis: " +
pt1.GetVectorTo(pt2).Angle.ToString());
}
Sub AngleFromXAxis()
' This example finds the angle, in radians, between the X axis
' and a line defined by two points.
Dim pt1(0 To 2) As Double
Dim pt2(0 To 2) As Double
Dim retAngle As Double
pt1(0) = 2: pt1(1) = 5: pt1(2) = 0
pt2(0) = 5: pt2(1) = 2: pt2(2) = 0
' Return the angle
retAngle = ThisDrawing.Utility.AngleFromXAxis(pt1, pt2)
' Display the angle found
MsgBox "The angle in radians between the X axis is " & retAngle
End Sub
This example calculates a point based on a base point, an angle and distance.
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry
Public Shared Function PolarPoints(ByVal pPt As Point2d, _
ByVal dAng As Double, _
ByVal dDist As Double)
Return New Point2d(pPt.X + dDist * Math.Cos(dAng), _
pPt.Y + dDist * Math.Sin(dAng))
End Function
Public Shared Function PolarPoints(ByVal pPt As Point3d, _
ByVal dAng As Double, _
ByVal dDist As Double)
Return New Point3d(pPt.X + dDist * Math.Cos(dAng), _
pPt.Y + dDist * Math.Sin(dAng), _
pPt.Z)
End Function
<CommandMethod("PolarPoints")> _
Public Sub PolarPoints()
Dim pt1 As Point2d
pt1 = PolarPoints(New Point2d(5, 2), 0.785398, 12)
Application.ShowAlertDialog(vbLf & "PolarPoint: " & _
vbLf & "X = " & pt1.X & _
vbLf & "Y = " & pt1.Y)
Dim pt2 As Point3d
pt2 = PolarPoints(New Point3d(5, 2, 0), 0.785398, 12)
Application.ShowAlertDialog(vbLf & "PolarPoint: " & _
vbLf & "X = " & pt2.X & _
vbLf & "Y = " & pt2.Y & _
vbLf & "Z = " & pt2.Z)
End Sub
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Geometry;
static Point2d PolarPoints(Point2d pPt, double dAng, double dDist)
{
return new Point2d(pPt.X + dDist * Math.Cos(dAng),
pPt.Y + dDist * Math.Sin(dAng));
}
static Point3d PolarPoints(Point3d pPt, double dAng, double dDist)
{
return new Point3d(pPt.X + dDist * Math.Cos(dAng),
pPt.Y + dDist * Math.Sin(dAng),
pPt.Z);
}
[CommandMethod("PolarPoints")]
public static void PolarPoints()
{
Point2d pt1 = PolarPoints(new Point2d(5, 2), 0.785398, 12);
Application.ShowAlertDialog("\nPolarPoint: " +
"\nX = " + pt1.X +
"\nY = " + pt1.Y);
Point3d pt2 = PolarPoints(new Point3d(5, 2, 0), 0.785398, 12);
Application.ShowAlertDialog("\nPolarPoint: " +
"\nX = " + pt2.X +
"\nY = " + pt2.Y +
"\nZ = " + pt2.Z);
}
Sub PolarPoints()
' This example finds the coordinate of a point that is a given
' distance and angle from a base point.
Dim polarPnt As Variant
Dim basePnt(0 To 2) As Double
Dim angle As Double
Dim distance As Double
basePnt(0) = 2#: basePnt(1) = 2#: basePnt(2) = 0#
angle = 0.785398
distance = 6
polarPnt = ThisDrawing.Utility.PolarPoint(basePnt, angle, distance)
MsgBox vbLf + "PolarPoint: " + _
vbLf + "X = " + CStr(polarPnt(0)) + _
vbLf + "Y = " + CStr(polarPnt(1)) + _
vbLf + "Z = " + CStr(polarPnt(2))
End Sub
This example uses the GetDistance method to obtain two points and displays the calculated distance.
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Runtime
<CommandMethod("GetDistanceBetweenTwoPoints")> _
Public Sub GetDistanceBetweenTwoPoints()
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim pDblRes As PromptDoubleResult
pDblRes = acDoc.Editor.GetDistance(vbLf & "Pick two points: ")
Application.ShowAlertDialog(vbLf & "Distance between points: " & _
pDblRes.Value.ToString())
End Sub
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
[CommandMethod("GetDistanceBetweenTwoPoints")]
public static void GetDistanceBetweenTwoPoints()
{
Document acDoc = Application.DocumentManager.MdiActiveDocument;
PromptDoubleResult pDblRes;
pDblRes = acDoc.Editor.GetDistance("\nPick two points: ");
Application.ShowAlertDialog("\nDistance between points: " +
pDblRes.Value.ToString());
}
Sub GetDistanceBetweenTwoPoints()
Dim returnDist As Double
' Return the value entered by user. A prompt is provided.
returnDist = ThisDrawing.Utility.GetDistance(, "Pick two points.")
MsgBox "The distance between the two points is: " & returnDist
End Sub