Vla-elevateorder

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年11月1日 (日) 10:35時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-elevateorder ''vla-object'' ''order'') ; 機能 : スプラインの次数を、指定値まで上げる。 ; 引数 :* vla-object … S...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-elevateorder vla-object order)


機能
スプラインの次数を、指定値まで上げる。


引数
  • vla-object … Spline の VLAオブジェクト
  • order … 現在の順位よりも大きい正の値。最大順位は 26 です。


戻り値
nil


  • 注意
スプラインの順位は、スプラインの次数プラス 1 に等しくなる。スプラインの次数を取得するには、Degree プロパティを使用する。
現在の値より大きい値を入力すると、制御点が均等に追加され、細かくコントロールできるようになる。いったんスプラインの順位を上昇したら、それを下げることはできない。
スプラインは、高度が加えられると補間された(フィット)スプラインから制御点スプラインに変換される。つまり、スプラインは高度が加えられた後にはフィット接線を持たなくなり、このスプラインの StartTangent および EndTangent プロパティにはアクセスできなくなる。制御点スプラインを編集する唯一の方法は、vla-put-controlpoints プロパティの使用、または vla-setcontrolpoint または vla-getcontrolpoint メソッドの使用。


サンプル
(vl-load-com)
(defun c:Example_ElevateOrder()
    ;; スプラインをモデルに作成して次数を変更するサンプル
    (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)
  
    (alert (strcat "スプラインの現在のオーダーは、" (itoa (1+ (vla-get-Degree splineObj)))))
    
    ;; スプラインの次数アップ
    (vla-ElevateOrder splineObj (+ (vla-get-Degree splineObj) 10))
    (vla-Regen doc :vlax-true)
    (alert (strcat "スプラインの次数を次の値に引き上げ " (itoa (1+ (vla-get-Degree splineObj)))))
)


関連事項