Vla-get-coordinate

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年11月14日 (土) 13:42時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-get-coordinate ''vla-object'' ''index'') ; 機能 : オブジェクトの単一の頂点の座標を取得する。 ; 引数 :* vla-objec...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(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)))
)

関連事項