梁を描くLISP 2|ファイルに保存してコマンド化する
要点
繰り返し使う処理を.lspに保存し、APPLOADで読み込みます。defunとc:を使ってコマンド化し、梁の幅や端点を受け取る準備をします。
始める前に
先に確認すると読み進めやすい記事:
確認の手順
- 処理をテキストエディタで.lspファイルとして保存します。
- APPLOADで読み込み、エラーがないか確認します。
- c:を付けた関数名をコマンド欄から実行します。
- 幅と2つの点を入力し、次の座標計算に渡す値を確認します。
LISPファイルの保存方法
AutoLISPのルーチンは、拡張子 .lsp のASCIIテキストファイルとして保存します。
メモ帳などのテキストエディタで以下のコードを入力してください:
(defun testline () ; 関数の定義
(setq a (getpoint "\nEnter First Point : ")) ; 最初の点を取得
(setq b (getpoint "\nEnter Second Point : ")) ; 次の点を取得
(command "Line" a b "") ; 線を描く
) ; 関数終了このファイルを testline.lsp として保存し、AutoCADの検索パス内のフォルダに置きます。
AutoCADでの読み込みと実行
AutoCADを開いて以下を入力:
(load "testline")
(testline)これで関数が実行されます。
AutoCADコマンド風にするには?
関数名の前に c: を付けることで、コマンドのように使えます:
(defun c:testline ()
(setq a (getpoint "\nEnter First Point : "))
(setq b (getpoint "\nEnter Second Point : "))
(command "Line" a b "")
) ; end defunこれで (testline) ではなく、testline と入力するだけで実行できます。
「nil」を消すには?
関数実行時に表示される「nil」を消すには (princ) を使います:
(defun c:testline ()
(setq a (getpoint "\nEnter First Point : "))
(setq b (getpoint "\nEnter Second Point : "))
(command "Line" a b "")
(princ) ; 実行後のクリーンアップ
)
(princ) ; 読み込み時のクリーンアップ梁を描く準備
次は、AutoLISPで梁を描くための計算を行います。
ユーザーから以下の値を取得します:
| パラメータ名 | 説明 |
|---|---|
| ip | 挿入点 |
| lb | 梁の長さ |
| hb | 梁の高さ |
| wt | 梁の厚さ |
| ep | 梁の厚さ |
| nl | 梁の長さ |
| nd | ノッチの深さ |
以下は入力ルーチンの例です:
(defun c:testbeam ()
;; ユーザー入力
(setq lb (getdist "\nLength of Beam : "))
(setq hb (getdist "\nHeight of Beam : "))
(setq wt (getdist "\nFlange Thickness : "))
(setq ep (getdist "\nEnd Plate Thickness : "))
(setq nl (getdist "\nLength of Notch : "))
(setq nd (getdist "\nDepth of Notch : "))
;; 挿入点取得
(setq ip (getpoint "\nInsertion Point : "))
(princ)
)
(princ)このルーチンを読み込んで実行すると、すべての値を入力できます。
変数の値を確認するには、!ip のように ! を付けて確認します。
結果の確認
.lsp.txtになっていないか、読み込みが成功したかを確認します。実際の輪郭を計算する方法は「梁を描くLISP 3」で扱います。
参照資料
対象環境・動作確認
AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。