Vla-get-starttangent

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


機能
方向ベクトルとしてスプラインの始点接線を取得する。


引数
  • vla-object … Spline のVLAオブジェクト


戻り値
スプラインの始点の接線の方向ベクトル


  • MEMO : スプラインは、高度が加えられると補間された(フィット)スプラインから制御点スプラインに変換される。つまり、スプラインは高度が加えられた後にはフィット接線を持たなくなり、このスプラインの StartTangent および EndTangent プロパティにはアクセスできなくなる。制御点スプラインを編集する唯一の方法は、ControlPoints プロパティの使用、または SetControlPoint または GetControlPoint メソッドを使用する。


サンプル
(vl-load-com)
(defun c:Example_EndTangent()
    ;; スプラインを作成して始点と終点の接線方向を変更するサンプル
    (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 msg "")

    ;; 視点の接線方向を取得
    (setq startTangent (vlax-safearray->list (vlax-variant-value (vla-get-startTangent splineObj))))
    (setq msg (strcat msg (rtos (nth 0 startTangent) 2 3) ","
		          (rtos (nth 1 startTangent) 2 3) ","
		          (rtos (nth 2 startTangent) 2 3)))

    (alert (strcat "スプラインの視点の接線方向は " msg))

    ;; 終点の接線方向を取得
    (setq endTangent (vlax-safearray->list (vlax-variant-value (vla-get-EndTangent splineObj))))
    (setq msg (strcat msg (rtos (nth 0 endTangent) 2 3) ","
		          (rtos (nth 1 endTangent) 2 3) ","
		          (rtos (nth 2 endTangent) 2 3)))

    (alert (strcat "スプラインの終点の接線方向は " msg))

    ;; 変更 視点の接線 (0.2,0.707,1) 、終点の接線 (1.5,0.707,2)
    (vla-put-startTangent splineObj (vlax-3d-point 0.2 0.707 1))
    (vla-put-EndTangent splineObj (vlax-3d-point 1.5 0.707 2))

    (vla-Regen doc :vlax-true)

    (setq msg "")
    (setq startTangent (vlax-safearray->list (vlax-variant-value (vla-get-startTangent splineObj))))
    (setq endTangent (vlax-safearray->list (vlax-variant-value (vla-get-EndTangent splineObj))))
    (setq msg (strcat msg 
                (rtos (nth 0 startTangent) 2 3) ","
                (rtos (nth 1 startTangent) 2 3) ","
                (rtos (nth 2 startTangent) 2 3)) ", 終点の接線方向は"
                (rtos (nth 0 endTangent) 2 3) ","
                (rtos (nth 1 endTangent) 2 3) ","
                (rtos (nth 2 endTangent) 2 3))
    )

    (alert (strcat "スプラインの視点の接線方向は " msg))
)


関連事項