Acet-safe-command

提供:GizmoLabs - だいたい CAD LISP なサイト
構文
(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)
)


関連事項