Acet-safe-command

提供:GizmoLabs - だいたい CAD LISP なサイト
2025年8月5日 (火) 05:48時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「 {{AutoLISP}} ; 構文 : (acet-safe-command cmdlist) ; 機能 : (command) 関数をより安全に実行するためのラッパー(包む)関数。 : 主な目的は、command 関数の実行中にユーザーが [Esc] キーを押してキャンセルしたり、コマンド自体がエラーで失敗したりしても、LISPプログラム全体がエラーで停止してしまうのを防ぐ用途。 ; 引数 :* cmdlist : コマンドとオプション…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(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)
)


関連事項