概要 - 3D 座標を指定する(VBA/ActiveX)

3D WCS (ワールド座標系)座標の入力は、2D WCS 座標入力と似ています。

X および Y 値の指定に加えて、Z 値を指定します。2D 座標と同様に、バリアントは座標を ActiveX® のメソッドやプロパティに渡したり、座標を照会するために使用されます。

2D と 3D のポリラインの座標を定義、照会する

次の例では、それぞれ 3 つの座標を持つ 2 つのポリラインを作成します。最初のポリラインは 2D ポリラインであり、2 つ目のポリラインは 3D です。3D ポリラインの作成では、頂点を含む配列の長さが、Z 座標を含めるように拡張されていることに注意してください。ポリラインの座標を照会し、その座標をメッセージ ボックスに表示します。

Sub Ch8_Polyline_2D_3D()
    Dim pline2DObj As AcadLWPolyline
    Dim pline3DObj As AcadPolyline

    Dim points2D(0 To 5) As Double
    Dim points3D(0 To 8) As Double

    ' Define three 2D polyline points
   points2D(0) = 1: points2D(1) = 1
   points2D(2) = 1: points2D(3) = 2
   points2D(4) = 2: points2D(5) = 2

    ' Define three 3D polyline points
   points3D(0) = 1: points3D(1) = 1: points3D(2) = 0
   points3D(3) = 2: points3D(4) = 1: points3D(5) = 0
   points3D(6) = 2: points3D(7) = 2: points3D(8) = 0

    ' Create the 2D light weight Polyline
    Set pline2DObj = ThisDrawing.ModelSpace. _
 AddLightWeightPolyline(points2D)
    pline2DObj.Color = acRed
    pline2DObj.Update

    ' Create the 3D polyline
    Set pline3DObj = ThisDrawing.ModelSpace. _
 AddPolyline(points3D)
    pline3DObj.Color = acBlue
    pline3DObj.Update

    ' Query the coordinates of the polylines
    Dim get2Dpts As Variant
    Dim get3Dpts As Variant

    get2Dpts = pline2DObj.Coordinates
    get3Dpts = pline3DObj.Coordinates

    ' Display the coordinates

    MsgBox ("2D polyline (red): " & vbCrLf & _
 get2Dpts(0) & ", " & get2Dpts(1) & vbCrLf & _
 get2Dpts(2) & ", " & get2Dpts(3) & vbCrLf & _
 get2Dpts(4) & ", " & get2Dpts(5))

    MsgBox ("3D polyline (blue): " & vbCrLf & _
 get3Dpts(0) & ", " & get3Dpts(1) & ", " & _
 get3Dpts(2) & vbCrLf & _
 get3Dpts(3) & ", " & get3Dpts(4) & ", " & _
 get3Dpts(5) & vbCrLf & _
 get3Dpts(6) & ", " & get3Dpts(7) & ", " & _
 get3Dpts(8))
End Sub