TranslateCoordinates メソッド(ActiveX)

点を、ある座標系から他の座標系に変換します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

RetVal = object.TranslateCoordinates(Point, FromCoordSystem, ToCoordSystem, Displacement, [OCSNormal])
object

タイプ: Utility

このメソッドが適用されるオブジェクト。

Point

アクセス: 入力のみ

タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)

変換前の座標を指定する 3D WCS 座標。このパラメータは、Displacement の値に応じて、点または変位ベクトルとみなされます。

FromCoordSystem

アクセス: 入力のみ

タイプ: AcCoordinateSystem 列挙型

点の変換前の座標系。

  • acWorld
  • acUCS
  • acOCS
  • acDisplayDCS
  • acPaperSpaceDCS
ToCoordSystem

アクセス: 入力のみ

タイプ: AcCoordinateSystem 列挙型

点の変換後の座標系。

  • acWorld
  • acUCS
  • acOCS
  • acDisplayDCS
  • acPaperSpaceDCS
Displacement

アクセス: 入力のみ

タイプ: 長整数型

変位ベクトル フラグ。

  • True: Point は変位ベクトルとみなされます。
  • False: Point は点とみなされます。
OCSNormal

アクセス: 入力のみ; オプション

タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)

OCS の法線。

戻り値(RetVal)

タイプ: バリアント型(3 要素の倍精度浮動小数点数型配列)

変換後の 3D WCS 座標。

注意

ある OCS の座標を、直接別の OCS の座標に変換することはできません。この変換を行うには、まず、ある OCS の座標を WCS などの、中間の座標系の座標に変換します。次に、この座標をもう 1 つの OCS の座標に変換します。

Polyline または LWPolyline オブジェクトの点を OCS から WCS に変換するには、次のようにします。

  1. OCS の点の XY 座標を Coordinate または Coordinates プロパティから取得します。
  2. OCS の点の Z 座標を Elevation プロパティから取得します。
  3. ポリラインに対する法線を Normal プロパティから取得します。
  4. XYZ 座標および Normal を使用して TranslateCoordinates を呼び出します。

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)))
)