ポリラインの取得(特定データのデータ取得関数) LTCustomizer21 for AutoCAD LT リファレンスマニュアル

ActiveX
  
Function get_select_polyline(ename As Integer) As Integer
    Function get_select_polyline_vertex(ename As Integer, index As Integer, ByRef x As Double, ByRef y As Double, ByRef z As Double) As Boolean
C/C++
    int WINAPI LTC_get_select_polyline(int ename);
    int WINAPI LTC_get_select_polyline_vertex(int ename,int index,double xyz[3]);

パラメータ
ename :読み込んだデータの配列のインデックス。0〜select()の返り値−1までの値を指定する。
index:ポリラインの頂点番号。0〜get_select_polyline()の返り値−1までの値を指定する。
xyz[3](C/C++のみ):ポリラインの頂点座標。最初のインデックスがX座標、2番目がY座標,3番目がZ座標
x,y,z(ActiveXのみ):ポリラインの頂点座標

返り値(get_select_polyline())
ポリラインの頂点数

返り値(get_select_polyline_vertex())
Trueまたは1:成功 Falseまたは0:失敗

get_select_polyline()を実行して関数の返り値が0以上の時、enameが指すデータはポリラインです。
その後、get_select_polyline_vertex()で座標を取り出します。

例:
Dim x,y,z As Double
If (num=get_select_polyline(ename))>0 Then
for i=0 to num-1
  get_select_polyline_vertex(ename,i,x,y,z)
Next i
Endif

注意:
1.ポリラインは非常に複雑なフォーマットで、LTCustomizer21はすべてのポリラインの種類をサポートしていません。get_select_polyline()はスプラインやポリメッシュ、ポリゴンメッシュ、円弧の入ったポリラインの場合は0を返します。またポリラインは、LWPOLYLINEとPOLYLINEの2種類があり、get_select_polyline(),get_select_polyline_vertex()を使う限りその区別はしなくてけっこうです。
2.get_select_polyline()は内部で煩雑な処理を行っており、ポリラインの頂点数を得るためだけに何度もコールされるとパフォーマンスが落ちますので注意してください。(例のようにすればよい)
3.2Dポリラインか軽量化ポリライン(LWPOLYLINE)を選択時、ユーザ座標系(UCS)で描画した場合の頂点座標は、UCSで描画したときのローカルな座標値です。(座標系を知らない場合は、ワールド座標系が基本的な座標系と認識してください。)この場合はグループコード210番,220番,230番(ワールド座標系から見たUCSの法線ベクトル)が追加されています。したがって、ワールド座標に変換する場合はこれらのコードを元にして変換する必要があります。それに加えてUCSの原点座標も変換する際に考慮する必要があります。UCSの原点はread_DXF_table()などを使って取得します。この詳細はAutoCAD/LTのヘルプでUCSもしくはOCSの項目を探してください。