Editor オブジェクトで提供されているメソッドおよび Geometry 名前空間と Runtime 名前空間を使用すると、数学的問題をすばやく解いたり、図面内の点を特定したりできます。次のようなメソッドを使用できます。
この例では、2 つの点の間のベクトルを計算し、X 軸からの角度を決定します。
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
この例では、基準点、角度、距離に基づいて、点を計算します。
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
この例では、GetDistance メソッドを使用して、2 つの点を取得し、計算された距離を表示します。
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