点を、ある座標系から他の座標系に変換します。
サポートされているプラットフォーム: 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))) )