Vla-put-coordinates

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(vla-put-coordinates vla-object points)


機能
オブジェクトの各頂点の座標を取得する。


引数
  • vla-object … VLAオブジェクト(3DFace、3DPolyline 、Leader、LWPolyline、MLine、Point、PolyfaceMesh、PolygonMesh、Polyline、Solid、SubDMesh、SubDMeshVertex、Trace)
  • points … 点の配列。
  • 3DFace オブジェクト: バリアントは、WCS の 3 つまたは 4 つの 3D 点の配列。
  • 3DPolyline オブジェクト: バリアントは、WCS の 3D 点の配列。
  • Leader オブジェクト: バリアントは、WCS の 3D 点の配列。
  • LightweightPolyline オブジェクト: バリアントは、OCS の 2D 点の配列。
  • Mline オブジェクト: バリアントは、WCS の 3D 点の配列。
  • Point オブジェクト: バリアントは、WCS の 3D 点の配列。
  • PolyfaceMesh オブジェクト: バリアントは、WCS の 3D 点の配列。
  • PolygonMesh オブジェクト: バリアントは、WCS の 3D 点の配列。
  • Polyline オブジェクト: バリアントは、3D 点の配列(X と Y 座標は OCS で、Z 座標は無視される)。
  • Solid オブジェクト: バリアントは、WCS の 3 つまたは 4 つの 3D 点の配列。
  • Trace オブジェクト: バリアントは、WCS の 4 つの 3D 点の配列。
  • 他のすべてのオブジェクト: バリアントは、WCS の 3D 点配列。


戻り値
nil


  • 注意

このプロパティは、指定されたオブジェクトの座標を更新する。このプロパティ内の座標を処理するには、標準的な配列操作方法を使用すること。

    • PolyfaceMesh、PolygonMesh、Trace: このプロパティを使用してオブジェクト内の座標数を変更することはできない。既存の座標の位置のみを変更することができる。
    • 3DPolyline、Polyline、PolygonMesh: 単純なポリライン(スプライン化またはカーブ フィットされていないポリライン)の場合、このプロパティは単純な頂点を指定する。スプライン化またはカーブ フィットしたポリラインの場合、制御点の頂点も含んでいる。
    • ポリラインの座標を設定するときに、オブジェクトが現在所有しているよりも少ない座標を指定すると、ポリラインは切り捨てられる。切り捨てられた頂点に適用されていたフィット点もすべて切り捨てられる。オブジェクトが現在所有しているよりも多い座標を指定すると、ポリラインに余分な頂点が追加される。
    • Polyline および LightweightPolyline オブジェクトの OCS 座標は、TranslateCoordinates メソッドにより他の座標システムとの間で相互変換可能。


サンプル
(vl-load-com)
(defun c:Example_Coordinates()
    ;; ポリラインを作成して座標プロパティを使用して、ポリラインの
    ;; すべての座標を返すサンプル。座標プロパティを使用して頂点の 
    ;; 1 つをリセットする。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))    

    ;; ポリラインを作成
    (setq points (vlax-make-safearray vlax-vbDouble '(0 . 5)))
    (vlax-safearray-fill points '(3 7 0
                                  9 2 0
                                )
    )

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq plineObj (vla-AddPolyline modelSpace points))
    (vla-ZoomAll acadObj)

    ;; ポリラインの座標を返す
    (setq retCoord (vla-get-Coordinates plineObj))

    ;; 2 番目の頂点の現在の座標を表示。
    (alert (strcat "2 番目の頂点の現在の座標 : " 
                   (rtos (vlax-safearray-get-element points 3) 2) ", "
                   (rtos (vlax-safearray-get-element points 4) 2) ", "
                   (rtos (vlax-safearray-get-element points 5) 2)))

    ;; 2 番目の頂点の座標を(5,5,0) に変更。
    ;; LWポリラインの場合 2D点のみなので注意。
    (vlax-safearray-put-element points 3 5)
    (vlax-safearray-put-element points 4 5)
    (vlax-safearray-put-element points 5 0)
    (vla-put-Coordinates plineObj points)

    ;; 表示更新
    (vla-Regen doc :vlax-true)

    (alert (strcat "新しい座標点設定 : " 
                   (rtos (vlax-safearray-get-element points 3) 2) ", "
                   (rtos (vlax-safearray-get-element points 4) 2) ", "
                   (rtos (vlax-safearray-get-element points 5) 2)))
)


関連事項