始点からの長さ
AutoLISP関数 |
---|
(vlax-curve-getDistAtParam curve-obj param) |
curve-obj:【図形名】、またはVLAオブジェクト param:実数 |
始点から指定されたパラメータまでのカーブの長さを返します。 |
戻り値:実数 |
vlax-curve-getDistAtParam 関数は始点から【パラメータ】で指定した位置までのカーブの長さを求めます。
curve-obj 引数には、調べたいカーブの【図形名】か VLA オブジェクトを指定します。
param 引数には、求めたい位置の【パラメータ】を指定します。
戻り値は、長さを表す実数の値が返ります。周期的な【パラメータ】を受け付けるカーブの場合を除いて【パラメータ】の値の範囲が不正だった場合は nil となります。
次の例は、図形を選択すると、【パラメータ】の範囲を10等分した位置の始点からの長さを【コマンドライン】に表示します。
(defun ParamList:sub (index) (if (<= index n) (cons (+ start (* step index)) (ParamList:sub (1+ index))) ) ) (defun ParamList (start end n / step) (setq step (/ (float (- end start)) n)) (ParamList:sub 0) ) (while (setq ename (car (entsel "\n図形を選択(選択なしで終了)[最後(L)]:"))) (setq edata (entget ename) startParam (vlax-curve-getStartParam ename) endParam (vlax-curve-getEndParam ename) ) (prompt "\n") (prompt (cdr (assoc 0 edata))) (if (and startParam endParam) (foreach param (ParamList startParam endParam 10.0) (prompt "\nparam : ") (prompt (vl-princ-to-string param)) (prompt " -> dist : ") (prompt (vl-princ-to-string (vlax-curve-getDistAtParam ename param))) ) ) )
実行すると、例えば以下のように表示されます。
図形を選択(選択なしで終了)[最後(L)]:
LINE
param : 0.0 -> dist : 0.0
param : 5.0 -> dist : 5.0
param : 10.0 -> dist : 10.0
param : 15.0 -> dist : 15.0
param : 20.0 -> dist : 20.0
param : 25.0 -> dist : 25.0
param : 30.0 -> dist : 30.0
param : 35.0 -> dist : 35.0
param : 40.0 -> dist : 40.0
param : 45.0 -> dist : 45.0
param : 50.0 -> dist : 50.0
図形を選択(選択なしで終了)[最後(L)]:
LWPOLYLINE
param : 0.0 -> dist : 0.0
param : 0.2 -> dist : 9.93766
param : 0.4 -> dist : 19.8753
param : 0.6 -> dist : 29.813
param : 0.8 -> dist : 39.7506
param : 1.0 -> dist : 49.6883
param : 1.2 -> dist : 58.6072
param : 1.4 -> dist : 67.5261
param : 1.6 -> dist : 76.4449
param : 1.8 -> dist : 85.3638
param : 2.0 -> dist : 94.2827
AutoLISP関数 |
---|
(vlax-curve-getDistAtPoint curve-obj point) |
curve-obj:【図形名】、またはVLAオブジェクト point:リスト |
始点から指定された点(WCS)までのカーブの長さを返します。 |
戻り値:実数 |
vlax-curve-getDistAtPoint 関数は、始点から指定したカーブ上の点までの長さを返します。
curve-obj 引数には、調べたいカーブの【図形名】か VLA オブジェクトを指定します。
point 引数は、カーブ上の点を WCS で指定します。
戻り値は、長さを表す実数の値が返ります。point 引数がカーブ上に無い場合は nil を返します。近接点を求める関数などを使って確実にカーブ上の点に変換して与えてください。
下は、図形を選択すると、図形タイプと選択点の始点からの長さを表示するものです。
(while (setq selInfo (entsel "\n図形を選択(選択なしで終了)[最後(L)]:")) (setq ename (car selInfo) point (trans (osnap (cadr selInfo) "NEA") acUCS acWorld) edata (entget ename) ) (prompt "\n") (prompt (cdr (assoc 0 edata))) (prompt " : 選択点の始点からの長さ ") (prompt (vl-princ-to-string (vlax-curve-getDistAtPoint ename point))) )
実行すると、例えば以下のように表示されます。
図形を選択(選択なしで終了)[最後(L)]:
LWPOLYLINE : 選択点の始点からの長さ 41.2425
図形を選択(選択なしで終了)[最後(L)]:
LINE : 選択点の始点からの長さ 38.3794
図形を選択(選択なしで終了)[最後(L)]:
SPLINE : 選択点の始点からの長さ 101.33
図形を選択(選択なしで終了)[最後(L)]:
ARC : 選択点の始点からの長さ 11.3399