Jagaimo
システム変数を変更しても、エラー/キャンセル時には元の値に戻す
エラー処理の問題です。
課題
図形をクリックすると、その図形がX方向に150、Y方向に50移動するコマンドがあります。
MOVE[移動]コマンドで図形を移動させる前に、オブジェクトスナップのシステム変数OSMODEの値を0にし、最後に元の値に戻しています。
(defun c:test ( / Old_Os)
(setq Old_Os (getvar "OSMODE")) ;Old_OsにOSMODEの値を入れる
(setvar "OSMODE" 0) ;OSMODEの値を0にする
;--------------------------------------------------------
(command-s "._MOVE" pause "" "0,0" "150,50")
;--------------------------------------------------------
(setvar "OSMODE" Old_Os) ;OSMODEの値を元の値(Old_Os)にする
(princ))
このコマンドだと、 途中でESCキーを押してキャンセルした場合、最後の (setvar “OSMODE” Old_Os) が実行されずに元の値に戻りません。
途中でキャンセルしてもシステム変数が元にもどるようににコードを追加してください。
ヒント
エラー処理(エラー/キャンセル時に実行する処理)を加えます。
関連記事
コマンド実行
(command-s “._MOVE” pause “” “0,0” “150,50”) は、コマンドMOVE[移動]実行しています。
コマンド実行について詳しくはこちらの記事で。
Comments