
こんにちは!はこです。
AutoLISPを独学し、5年以上業務で使用しています。
AutoLISPってなに?という方はまずこちらの記事をご覧ください。
AutoCADユーザーがAutoLISPを覚えるべきメリット3選
今回の記事では関数「command」について解説していきます。
AutoCADには便利な標準コマンドが数多く用意されていますが、通常は手動で実行する必要があります。コマンドを実行したらその都度必要なオプションをユーザー自身が入力しなければなりません。コマンドによっては複雑なオプションの入力を何度も求めてくるため実行するのが面倒です。
commandを活用すればそんな面倒なコマンドの実行を自動化することができます。オプションの入力も自動で行うことができるため作業の効率化が可能です。
使用例と合わせて解説していきますのでぜひご覧ください。
【AutoLISP】コマンドを呼び出す関数「command」

commandの動作
AutoCADのコマンドはcommandによって呼び出すことが可能です。引数として、左右に「"」を記述したコマンド名と、実行に必要なオプションを指定してください。
使用例① lineを実行する
線分を作図するコマンドlineを例に説明していきます。lineについてはこちらの記事でもご紹介していますのでよろしければご覧ください。
【AutoLISP】線分を作図するコマンド「line」
(command "line" (list 0 0) (list 1 1))
先頭にはコマンド名が必要なため"line"と記述し、オプションとして始点と終点の座標を指定しています。今回は座標をそのまま記述していますが、変数を指定することも可能です。
上記の例の場合コマンドが終了できていないため、カーソルを動かすと終点からラバーハンドが表示されます。Enterを押すことでコマンドを終了できますが、引数の最後に""を記述しておくと自動終了させることが可能です。
(command "line" (list 0 0) (list 1 1) "")
使用例② circleを実行する
続いて円を作図するコマンドcircleでの動作を説明します。circleについてはこちらで解説していますので興味があるようでしたらご覧ください。
【AutoLISP】円を作図するコマンド「circle」
中心(0,0)で直径10の円を作図するプログラムは次のようになります。
(command "circle" (list 0 0) "D" 10)
引数の”D"は直径を表すオプションです。"D"のあとに記述した数値が円の直径となります。
ユーザー入力待ち状態にする
特定の引数のみユーザー入力としたい場合は「pause」と記述することでユーザー入力待ち状態にすることが可能です。例えば、円の作図で中心座標をユーザー入力とする場合は次のように記述します。
(command "circle" pause "D" 10)
pauseとはAutoLISPの定義済み変数と呼ばれるもので、あらかじめ特定のデータが格納されている変数です。他には円周率を表す「pi」やnilでないことを表す「T」などがあります。
エコーバックをコントロールする
AutoCADコマンドを実行するとコマンドラインへ処理に関連する文字列が次々と表示されていきますが、これをエコーバックと呼びます。エコーバックはシステム変数CMDECHOによって表示をコントロールすることが可能です。0で非表示、1で表示させることができます。
システム変数ってなに?という方はこちらの記事をご覧ください。
AutoCADの環境設定をお手軽にカスタマイズ!便利なシステム変数4選
commandの書式
commandの構文と引数および返り値は次のとおりです。
- (command [arguments] …)
- arguments
- AutoCADのコマンド名とそのオプション。オプションには座標や文字列などコマンド毎に必要なものを記述する。
- nil
- コマンドが正常に終了するとnilを返す。
まとめ
今回のまとめ
- AutoCADコマンドはcommandによって実行できる
- 引数の最後に""を記述するとコマンドは自動終了する
- システム変数CMDECHOでエコーバックをコントロールできる