・ AddLightWeightPolyline の引数 points 配列を得る
AddLightWeightPolyline メソッドは引数として x1,y1,x2,y2・・・・・・
という形の points 配列を必要とします
最低でも 4つの要素が必要で、要素の数は 2の倍数である必要があります
次の、ファンクションは、GetPoint
メソッドによって得た座標を、AddLightWeightPolylineが必要とするpoints
配列に変換します
'***********************************************************************************************
'LWPOLYLINEを作図
'ただ、LWPOLYLINE
を画くだけなら、こんなことしなくてもいいんだけど・・・(^^ゞ
'***********************************************************************************************
Sub Jo_add_lwpline()
Dim obj_lwpline As AcadLWPolyline
Dim pt_ary() As Variant
ReDim pt_ary(0)
On Error Resume Next
pt = ThisDrawing.Utility.GetPoint(, vbLf & "始点を指示:<Enter> にて終了")
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_points2(pt_ary) 'ファンクション
Jof_point2 の呼び出し
Set obj_lwpline = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
End Sub
'***********************************************************************************************
'LWPOLYLINEを作図するための points 配列を返す
' pt_aray:2次元座標の配列(3次元でも可)
' point:x1,y1,x2,y2,・・・・・の配列
'***********************************************************************************************
Function Jof_points2(pt_ary)
Dim points() As Double
n = 0
ReDim points(0 To 2 * (UBound(pt_ary) - LBound(pt_ary) + 1) - 1)
For Each x In pt_ary '変数 pt_ary の各要ごとに繰り返す
For i = 0 To 1
points(n + i) = x(i)
Next i
n = n + 2
Next x
Jof_points2 = points
End Function