89364


IJLISPにて以下の２つの機能を作成しました。

[code]

    ;-----------------------------------------------------
    (defun c:exit ( / )
    ;
      (princ "\nこの図面を終了するには、quit コマンドを使用してください。")
      (princ)
    )
    ;-----------------------------------------------------
    (defun c:quit ( / )
    ;
        (getstring "\n終了するには何か文字を入力してください。：")
      (command ".quit") ;AutoCADを終了。
    )
    ;------------------------------------------------------
    
[/code]

これらを IJCAD2021Std にロードして実行したところ、以下の様になりました。

`exit` : 正常に `princ` による文字列が表示され、その後コマンドプロンプトが表示された。  
`quit` : `getstring` が無視され、すぐにシステムが終了した。

システムベンダーのヘルプセンターによれば、この現象は `quit` の仕様であるとのことです。しかし、`exit` で再定義が可能であり、`quit`
で再定義が不可能というのはシステムとしてちぐはぐな印象がぬぐえません。  
なぜ `exit` と `quit` とで取り扱いが異なるのか理由をご存の方はいらっ  
しゃいませんでしょうか？


CC BY-SA 4.0
2022-06-10T07:04:47.790
89313
2022-06-13T05:54:05.770
2022-06-11T09:20:54.987
3060
53006
question
ijcad lisp
exit と quit とでコマンド再定義の扱いが異なる


IJCADの既存コマンドを独自で作成したコマンドに置き換えるためのUNDEFINEコマンドというコマンドがあります。  
UNDEFINEコマンドでQUITコマンドを無効にすると、独自で作成したQUITコマンドを使用できると思います。

> なぜ、exit と quit とで取り扱いが異なるのか理由をご存の方はいらっしゃいませんでしょうか？

exitとquitで取り扱いが異なるのは、exitがquitコマンドのエイリアスだからだと思います。  
エイリアスと同じ名前のコマンドを独自で作成した場合は、UNDEFINEを実行しなくても独自コマンドの方が実行されるようです。

参考：  
UNDEFINE [コマンド登録抹消] (コマンド)  
<https://support.ijcad.jp/hc/ja/articles/900005211486>  
エイリアス（コマンドの短縮形）のカスタマイズ  
<https://support.ijcad.jp/hc/ja/articles/115000185401>


CC BY-SA 4.0
2022-06-13T05:54:05.770
89364
2022-06-13T05:54:05.770
52306
89313
answer