点を、ある座標系から他の座標系に変換します。
サポートされているプラットフォーム: Windows のみ
VBA:
RetVal = object.TranslateCoordinates(Point, FromCoordSystem, ToCoordSystem, Displacement, [OCSNormal])
タイプ: Utility
このメソッドが適用されるオブジェクト。
アクセス: 入力のみ
タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)
変換前の座標を指定する 3D WCS 座標。このパラメータは、Displacement の値に応じて、点または変位ベクトルとみなされます。
アクセス: 入力のみ
タイプ: AcCoordinateSystem 列挙型
点の変換前の座標系。
アクセス: 入力のみ
タイプ: AcCoordinateSystem 列挙型
点の変換後の座標系。
アクセス: 入力のみ
タイプ: 長整数型
変位ベクトル フラグ。
アクセス: 入力のみ; オプション
タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)
OCS の法線。
タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)
変換後の 3D WCS 座標。
ある OCS の座標を、直接別の OCS の座標に変換することはできません。この変換を行うには、まず、ある OCS の座標を WCS などの、中間の座標系の座標に変換します。次に、この座標をもう 1 つの OCS の座標に変換します。
Polyline または LWPolyline オブジェクトの点を OCS から WCS に変換するには、次のようにします。
VBA:
Sub Example_TranslateCoordinates()
' This example creates a UCS with an origin at 2, 2, 2.
' Next, a point is entered by the user. The WCS and UCS
' coordinates of that point are output in a Msgbox.
AppActivate ThisDrawing.Application.Caption
' Create a UCS named "New_UCS" in current drawing
Dim ucsObj As AcadUCS
Dim origin(0 To 2) As Double
Dim xAxisPnt(0 To 2) As Double
Dim yAxisPnt(0 To 2) As Double
' Define the UCS
origin(0) = 2#: origin(1) = 2#: origin(2) = 2#
xAxisPnt(0) = 5#: xAxisPnt(1) = 2#: xAxisPnt(2) = 2#
yAxisPnt(0) = 2#: yAxisPnt(1) = 6#: yAxisPnt(2) = 2#
' Add the UCS to the UserCoordinatesSystems collection
Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxisPnt, yAxisPnt, "New_UCS")
ThisDrawing.ActiveUCS = ucsObj
' Get the active viewport and make sure the UCS icon is on
Dim viewportObj As AcadViewport
Set viewportObj = ThisDrawing.ActiveViewport
viewportObj.UCSIconOn = True
viewportObj.UCSIconAtOrigin = True
ThisDrawing.ActiveViewport = viewportObj
' Have the user enter a point
Dim pointWCS As Variant
pointWCS = ThisDrawing.Utility.GetPoint(, "Enter a point to translate:")
' Translate the point into UCS coordinates
Dim pointUCS As Variant
pointUCS = ThisDrawing.Utility.TranslateCoordinates(pointWCS, acWorld, acUCS, False)
' Display the coordinates of the point
MsgBox "The point has the following coordinates:" & vbCrLf & _
"WCS: " & pointWCS(0) & ", " & pointWCS(1) & ", " & pointWCS(2) & vbCrLf & _
"UCS: " & pointUCS(0) & ", " & pointUCS(1) & ", " & pointUCS(2), , "TranslateCoordinates Example"
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_TranslateCoordinates()
;; This example creates a UCS with an origin at 2, 2, 2.
;; Next, a point is entered by the user. The WCS and UCS
;; coordinates of that point are output in a Msgbox.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; Create a UCS named "New_UCS" in current drawing
;; Define the UCS
(setq origin (vlax-3d-point 2 2 2)
xAxisPnt (vlax-3d-point 5 2 2)
yAxisPnt (vlax-3d-point 2 6 2))
;; Add the UCS to the UserCoordinatesSystems collection
(setq ucsObj (vla-Add (vla-get-UserCoordinateSystems doc) origin xAxisPnt yAxisPnt "New_UCS"))
(vla-put-ActiveUCS doc ucsObj)
;; Get the active viewport and make sure the UCS icon is on
(setq viewportObj (vla-get-ActiveViewport doc))
(vla-put-UCSIconOn viewportObj :vlax-true)
(vla-put-UCSIconAtOrigin viewportObj :vlax-true)
(vla-put-ActiveViewport doc viewportObj)
;; Have the user enter a point
(setq pointWCS (vlax-variant-value (vla-GetPoint (vla-get-Utility doc) nil "\nEnter a point to translate:")))
;; Translate the point into UCS coordinates
(setq pointUCS (vlax-variant-value (vla-TranslateCoordinates (vla-get-Utility doc) pointWCS acWorld acUCS :vlax-false)))
;; Display the coordinates of the point
(alert (strcat "The point has the following coordinates:"
"\nWCS: " (rtos (vlax-safearray-get-element pointWCS 0) 2) ", "
(rtos (vlax-safearray-get-element pointWCS 1) 2) ", "
(rtos (vlax-safearray-get-element pointWCS 2) 2)
"\nUCS: " (rtos (vlax-safearray-get-element pointUCS 0) 2) ", "
(rtos (vlax-safearray-get-element pointUCS 1) 2) ", "
(rtos (vlax-safearray-get-element pointUCS 2) 2)))
)