Vla-setcontrolpoint

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(vla-setcontrolpoint vla-object Index point)


機能
指定されたスプライン インデックスの制御点の座標を取得する。


引数
  • vla-object … Spline の VLAオブジェクト
  • Index … 取得する制御点のインデックス位置。0 を含む正の整数
  • Point … 指定されたインデックス位置のスプラインの制御点を指定する 3D WCS 座標。


戻り値
nil


  • 注意 : 制御点は、スプライン曲線の一部に重みを加えることで、スプラインの定義を微調整する。NumberOfControlPoints プロパティを使用して、スプラインの制御点の総数を取得できる。制御点に新しい座標位置を設定するには、SetControlPoint メソッドを使用する。制御点に新しい重みを設定するには、SetWeight メソッドを使用する。


サンプル
(vl-load-com)
(defun c:Example_GetControlPoint()
    ;; スプラインを作成して最初の制御点座標を求め、
    ;; その値を変更するサンプル。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))

    ;; スプライン作成
    (setq startTan (vlax-3d-point 0.5 0.5 0)
          endTan (vlax-3d-point 0.5 0.5 0)
          fitPoints (vlax-make-safearray vlax-vbDouble '(0 . 8)))
    (vlax-safearray-fill fitPoints '(1 1 0
                                     5 5 0
                                     10 0 0
                                    )
    )

    (setq modelSpace (vla-get-ModelSpace doc))
    (setq splineObj (vla-AddSpline modelSpace fitPoints startTan endTan))
    (vla-ZoomAll acadObj)
    
    ;; 最初の制御点を表示
    (setq controlPoint (vlax-safearray->list (vlax-variant-value (vla-GetControlPoint splineObj 0))))
    (alert (strcat "最初の制御点 " (rtos (nth 0 controlPoint) 2) ", " (rtos (nth 1 controlPoint) 2) ", " (rtos (nth 2 controlPoint) 2)))
    
    ;; 制御点の座標を変更
    (setq controlPoint (vlax-3d-point 0 3 0))
    (vla-SetControlPoint splineObj 0 controlPoint)
    (vla-Update splineObj)
    (setq controlPoint (vlax-safearray->list (vlax-variant-value (vla-GetControlPoint splineObj 0))))
    (alert (strcat "いまの最初の制御点 " (rtos (nth 0 controlPoint) 2) ", " (rtos (nth 1 controlPoint) 2) ", " (rtos (nth 2 controlPoint) 2)))
)



関連事項