Vla-get-coordinate
- 構文
- (vla-get-coordinate vla-object index)
- 機能
- オブジェクトの単一の頂点の座標を取得する。
- 引数
-
- vla-object … VLAオブジェクト(3DFace、3DPoly、Leader、LWPolyline、PolyfaceMesh、PolygonMesh、Polyline、Section、Solid、SubDMesh、Trace)
- index … 設定または取得したい頂点に対する、頂点の配列でのインデックス。頂点の配列は 0 で始まる。
- 戻り値
- 指定された頂点に対する X、Y、Z 座標の配列。
- LightweightPolyline オブジェクト: バリアントは 2 要素で、OCS の X および Y 座標を表す。
- Polyline オブジェクト: バリアントは 3 要素で、OCS の X および Y 座標を表します。バリアントには Z 座標も含まれるが、無視される。
- 他のすべてのオブジェクト: バリアントは、WCS の X および Y 座標を表す 3 要素を持ち、Z 座標はアクティブな UCS 上の既定の 0 となる。
- 注意
このプロパティは、指定オブジェクトのどんな既存頂点をも置き換える。このプロパティ内の値を処理するには、標準的な配列操作方法を使用すること。
3DPolyline、Polyline、PolygonMesh : 単純なポリライン(スプライン化またはカーブ フィットされていないポリライン)の場合、このプロパティは単純な頂点を指定する。スプライン化またはカーブ フィットしたポリラインの場合、制御点の頂点も含んでいる。
Polyline および LightweightPolyline オブジェクトの OCS 座標は、TranslateCoordinates メソッドにより他の座標システムとの間で相互変換可能。
- サンプル
(vl-load-com)
(defun c:Example_Coordinate()
;; モデルにポリラインを作成して
;; 最初のインデックスの座標を返すサンプル
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; LWポリラインの設定
(setq points (vlax-make-safearray vlax-vbDouble '(0 . 14)))
(vlax-safearray-fill points '(1 1 0
1 2 0
2 2 0
3 2 0
4 4 0
)
)
;; LWポリラインを作成
(setq modelSpace (vla-get-ModelSpace doc))
(setq plineObj (vla-AddPolyline modelSpace points))
(vla-ZoomAll acadObj)
;; 最初のインデックスの座標を見つける
(setq coord (vlax-safearray->list (vlax-variant-value (vla-get-Coordinate plineObj 0))))
(alert (strcat "ポリラインの最初のインデックスの座標は : "
(rtos (nth 0 coord) 2) ", " (rtos (nth 1 coord) 2) ", " (rtos (nth 2 coord) 2)))
;; 座標を変更
(setq newCoord (vlax-make-safearray vlax-vbDouble '(0 . 2)))
(vlax-safearray-fill newCoord (list (+ (nth 0 coord) 1)
(nth 1 coord)
(nth 2 coord)))
(vla-put-Coordinate plineObj 0 newCoord)
(vla-Update plineObj)
; 新しい座標を照会
(setq coord (vlax-safearray->list (vlax-variant-value (vla-get-Coordinate plineObj 0))))
(alert (strcat "新しいポリラインの最初のインデックスの座標は : "
(rtos (nth 0 coord) 2) ", " (rtos (nth 1 coord) 2) ", " (rtos (nth 2 coord) 2)))
)
関連事項