コマンドを送る関数 (LTCustomizer21 for AutoCAD LT リファレンスマニュアル)
ActiveX
Function command(cmd As String) As Boolean
Function command2(cmd As String, [cmdline_msg As String], [stop_next_msg As Boolean = False]) As Boolean
(注意:[]で囲まれたパラメータは、指定しない場合デフォルト値が使われます)
C/C++
int WINAPI LTC_command(const wchar_t *cmd);
int WINAPI LTC_command2(const wchar_t *cmd,const wchar_t *cmdline_msg=NULL,BOOL stop_next_msg=FALSE);
パラメータ
cmd :送出する文字列(command2は最後に改行コードを付加して送出します)
cmdline_msg :コマンドレディ状態に加えて、この中で指定した文字列がコマンドラインに出るまで関数が返ってきません。
stop_next_msg :stop_next_msgをTrueにすると、cmdline_msgの内容如何によらず、cmdを送った後にコマンドプロンプトが次のメッセージを出したところで終了します。
返り値
Trueもしくは1: 成功
Falseもしくは0: ユーザがキャンセルキーを押したか、その他のエラー
CADに文字列を送出します。command2()はcommand()と違って、コマンドプロンプトが"コマンド゙: "の状態になるまで関数が帰ってきません。パラメータcmdline_msgに文字列を入れると、それに加えて、cmdline_msgで指定した文字列がコマンドラインに出たときにも関数が終了します。stop_next_msgにTrueを指定すると、cmdline_msgの内容を無視してcmdが出た後に出てくるコマンドラインメッセージが出たところで関数が返ってきます。また、command2()はAutoCAD LT上でキャンセルキー(ESC)を押した場合にも終了するようになっています。
command2()のこれらの機能を使うことで、AutoCAD LTの制御を確実に行うことができます。
command2()の機能を更に強化した、command3()も参照してください。
注意:
1.command2()はCADにメッセージを送るときに改行コードを最後に付加して送ります。command2()を使うときは文字列の最後に改行が付くことを念頭に入れて使用してください。
2.AutoCAD/LT上でexplodeコマンド実行中にでESCキーを押した場合は、command2の返り値は0(キャンセル)でなく、1(正常終了)となります。理由は、 LTCustomizer21がキャンセルメッセージ("*キャンセル*")をコマンドラインの履歴ウィンドウの一番最後に出たときにのみ、キャンセルとみなしているため、explodeコマンドでESCキーを押した場合は、一番最後に"何も見つかりません。"と表示されるため、キャンセルとみなしません。ほとんどのコマンドはESCキーを押した場合に、コマンドライン履歴ウィンドウの最後にキャンセルメッセージが出ますが、explodeのようなメッセージを出すコマンドがあれば同様にcommannd2の返り値はキャンセルを抽出することができません。ただし、command3()を使用すればその問題は発生しません。