AutoLISP入門その4

Autolisp

AutoLISPでビームを描くルーチン、前回まででかなり完成度が高まりましたね。今回はさらに一歩進んで、AutoCADの設定を制御しながら、繰り返し描画できるようにルーチンを改良していきます。


スナップとブリップを制御する

AutoCADのスナップ(osmode)やブリップ(blipmode)は、AutoLISPルーチンに予期せぬ影響を与えることがあります。そこで、ルーチンの冒頭でこれらをオフにし、終了時に元に戻すようにしましょう。

(setq oldsnap (getvar "osmode"))      ; 元のスナップ設定を保存
(setq oldblipmode (getvar "blipmode")) ; 元のブリップ設定を保存

(setvar "osmode" 0)       ; スナップをオフ
(setvar "blipmode" 0)     ; ブリップをオフ

終了時には以下で復元:

(setvar "osmode" oldsnap)
(setvar "blipmode" oldblipmode)

不正な入力を防ぐ(initget)

ユーザーが「0」や「マイナスの値」を入力すると、図形が崩れる原因になります。これを防ぐには (initget) 関数を使います。

(initget (+ 1 2 4)) ; Enter,0,マイナスの値
(setq lb (getdist "\nLength of Beam : "))

この設定により、ユーザーは有効な数値しか入力できなくなります。


同じビームを何度も描くには?

同じ寸法のビームを複数描きたいとき、毎回入力するのは面倒ですよね。そこで (while) ループを使って、挿入点を繰り返し取得し、何度でも描けるようにします。

(while
  (setq ip (getpoint "\nInsertion Point : "))
  ;; 座標計算と描画処理をここに
)

Enterキーを押すと nil が返り、ルーチンが終了します。


最終的な構造

このパートでは、以下の3つを追加しました:

  • システム設定の保存・復元
  • 不正入力の防止
  • 挿入点を繰り返し取得するループ処理

これで、より堅牢で使いやすいAutoLISPルーチンが完成です!


次回は、さらに便利な機能やエラーハンドリングを加えていく予定です。AutoLISPでの自動化がどんどん楽しくなってきますね!

AutoLISP入門その1,AutoLISP 入門その2,AutoLISP入門その3

コメント

タイトルとURLをコピーしました