「Acet-safe-command」の版間の差分
(ページの作成:「 {{AutoLISP}} ; 構文 : (acet-safe-command cmdlist) ; 機能 : (command) 関数をより安全に実行するためのラッパー(包む)関数。 : 主な目的は、command 関数の実行中にユーザーが [Esc] キーを押してキャンセルしたり、コマンド自体がエラーで失敗したりしても、LISPプログラム全体がエラーで停止してしまうのを防ぐ用途。 ; 引数 :* cmdlist : コマンドとオプション…」) |
(相違点なし)
|
2025年8月5日 (火) 05:48時点における最新版
- 構文
- (acet-safe-command cmdlist)
- 機能
- (command) 関数をより安全に実行するためのラッパー(包む)関数。
- 主な目的は、command 関数の実行中にユーザーが [Esc] キーを押してキャンセルしたり、コマンド自体がエラーで失敗したりしても、LISPプログラム全体がエラーで停止してしまうのを防ぐ用途。
- 引数
-
- cmdlist : コマンドとオプションのリスト。 '(<command_name> <arg1> <arg2> ...)
- 戻り値
- コマンドが正常に終了したら T、しなかったらnil
- サンプル
(defun c:SafeCircle ()
(princ "\n円を描画します。")
; acet-safe-commandを使ってCIRCLEコマンドを実行
; ユーザーが途中で[Esc]を押しても、このLISPはエラーで止まらない
(setq success (acet-safe-command '("._circle" pause pause)))
; 戻り値をチェック
(if success
; Tが返ってきた場合(成功)
(princ "\n円が作成されました。")
; nilが返ってきた場合(キャンセルまたは失敗)
(princ "\nコマンドがキャンセルされました。")
)
(princ)
)
; --- 比較用の標準(command)を使った場合のコード ---
; 以下のコマンドを実行し、円を描く途中で[Esc]キーを押すと、
; LISPプログラム自体がエラーで停止し、"コマンドはキャンセルされました。"
; というメッセージは表示されません。
(defun c:UnsafeCircle ()
(princ "\n円を描画します。")
; 標準のcommand関数
(command "._circle" pause pause)
; 上の行で[Esc]が押されると、この行以降は実行されない
(princ "\nコマンドはキャンセルされました。")
(princ)
)
関連事項