・ AddPolyline の引数 points 配列を得る
AddPolyline メソッドは引数として x1,y1,z1,x2,y2,z2・・・・・・
という形の points 配列を必要とします
最低でも 6つの要素が必要で、要素の数は 3の倍数である必要があります
次の、ファンクションは、GetPoint
メソッドによって得た座標を、AddPolylineが必要とするpoints
配列に変換します
'***********************************************************************************************
'POLYLINEを作図
'ただ、POLYLINE
を画くだけなら、こんなことしなくてもいいんだけど・・・(^^ゞ
'***********************************************************************************************
Sub Jo_add_pline()
Dim obj_pline As AcadPolyline
Dim pt_ary() As Variant
ReDim pt_ary(0)
On Error Resume Next
pt = ThisDrawing.Utility.GetPoint(, vbLf & "始点を指示")
If Err Then
On Error Goto 0
Err.Clear
Exit Sub
End If
pt_ary(0) = pt
n = 1
On Error Resume Next
Do While n <> 0
pt = ThisDrawing.Utility.GetPoint(pt, vbLf & "次の点を指示 :<Enter> にて終了")
If Err Then
On Error GoTo 0
n = 0
Err.Clear
Exit Do
Else
ReDim Preserve pt_ary(UBound(pt_ary) + 1) '変数
pt_ary の配列の要素数を1つ増やす
pt_ary(n) = pt 'ユーザーが入力した点を変数配列に代入
n = n + 1
End If
Loop
points = Jof_points3(pt_ary) 'ファンクション
Jof_point3 の呼び出し
Set obj_pline = ThisDrawing.ModelSpace.AddPolyline(points)
End Sub
'***********************************************************************************************
'POLYLINEを作図するための points 配列を返す
' pt_aray:3次元座標の配列
' point:x1,y1,z1,x2,y2,z2・・・・・の配列
'***********************************************************************************************
Function Jof_points3(pt_ary)
Dim points() As Double
n = 0
ReDim points(0 To 3 * (UBound(pt_ary) - LBound(pt_ary) + 1) - 1)
For Each x In pt_ary '変数 pt_ary の各要ごとに繰り返す
For i = 0 To 2
points(n + i) = x(i)
Next i
n = n + 3
Next x
Jof_points3 = points
End Function