📌
AutoLISPでクロソイド曲線上に距離指定の点を打つ方法
はじめに
道路設計や線形計算で、クロソイド曲線上に指定距離が どこなのか? 計算していますか?
面倒くさい計算が嫌な小生は、IntelliCAD用のAutoLISPスクリプトを使って
この作業を自動化する方法を作成してみました。
コマンド概要
- 条件:ポリライン上に点をプロットさせるので、ポリラインが切れていないようにします。
- 内容:ポリラインは、曲線でも、クロソイド曲線のように折れ点が沢山でも大丈夫です。
- 機能:選択したパスオブジェクト上で、始点から指定距離(起点からの追加距離)の位置に点(POINT)を作成します。(連続で 20、40、80...のように)
コードのポイント解説
以下は、スクリプトの中で重要な部分だけ抜粋して解説します。
(setq ent (vlax-ename->vla-object (car ent1))) ; 選択したオブジェクトを取得
(setq sp (vlax-curve-getstartparam ent)) ; 始点パラメータ
(setq ep (vlax-curve-getendparam ent)) ; 終点パラメータ
(setq vll (vlax-curve-getdistatparam ent ep)) ; オブジェクト全長
vlax-curve-getdistatparam:曲線上の距離を取得
vlax-curve-getpointatparam:指定距離の座標を取得
距離を入力すると、次の処理で座標を計算し、POINTコマンドで配置します。
(setq param (vlax-curve-getparamatdist ent dis))
(setq p0 (vlax-curve-getpointatparam ent param))
(command "_POINT" (trans p0 0 1))
実行手順
1.パスオブジェクトを選択
2.始点と方向を指定
3.追加距離を入力 → 点が打たれる
まとめ
このスクリプトを使えば、クロソイド曲線上の距離管理が簡単になります。
次回は、図面例とスクリーンショット付きで詳しく解説します。
直線の時は、20mの円を作成して追いかけたり、曲線の時は、角度を計算してプロットしよったけんど
このLISPを書いてからは、「あのLISP、どこにあったかにゃー?」って言いながら やりゆう
ほいたらネー
Discussion