概要 - コマンドを定義する(AutoLISP)

defun 関数を使用し、関数名の前に c: を付けることによって、新しいコマンドを定義することができます。

前に c: が付いた関数は、AutoCAD のコマンド プロンプトから直接アクセスすることができ、AutoCAD コマンドの再定義に使用することができます。

コマンドとして定義された関数は、引数を直接受け入れません。代わりに getXXX 関数の 1 つを使用して、コマンドに対する入力を取得します。

次は、HELLO という名前の関数を定義します。この関数は、簡単なメッセージを表示します。

(defun HELLO () (princ "\nHello world.") (princ))
HELLO

関数は、AutoCAD のコマンド プロンプトまたは AutoLISP プログラムから呼び出すことができます。HELLO 関数は、次のように入力することで、AutoCAD のコマンド プロンプトから呼び出すことができます。

コマンド: (hello)

Hello world.

HELLO 関数は、コマンドとして定義されていないので、括弧で囲む必要があります。AutoCAD のコマンド プロンプトに対して、括弧を付けずに HELLO と入力すると、次のエラーメッセージが返されます。

そのようなコマンド "HELLO" はありません。ヘルプを表示するには F1 キーを押してください。

HELLO 関数名の前に c: を追加すると、コマンドとして定義された関数になり、AutoCAD のコマンド プロンプトに対して、括弧で囲まずに入力することができるようになります。例:

(defun C:HELLO () (princ "\nHello world.") (princ))
C:HELLO

HELLO はコマンドとして宣言されていますが、AutoLISP 関数でもあります。これで、このコマンドは AutoCAD のコマンド プロンプトに対して、次のように入力できるようになります。

コマンド: hello

Hello world.

HELLO コマンドは、呼び出しによって command 関数が実行されるわけではないので、割り込みコマンドとして使用することもできます。AutoCAD のコマンド プロンプトに対して、次のように実行できます。

コマンド: line

1 点目を指定: 'hello

Hello world.

1 点目を指定:

AutoLISP 関数がコマンドとして宣言されている場合、関数名全体を括弧で囲むことによって、AutoLISP プログラムから、そのコマンドを呼び出すことができます。例:

(c:hello)
注: Windows リリースで Visual LISP エディタを使用している場合、[コンソール]ウィンドウは AutoCAD コマンドを認識しません。関数名を括弧で囲む必要があります。

AutoLISP 文を使用して AutoLISP 実行コマンドからのプロンプトに応答することは、通常はできません。しかし、AutoLISP ルーチンが initget 関数を使用して許可した場合は、特定の関数をキーボードから入力できます。これによって、AutoLISP によってインプリメントされたコマンドは、AutoLISP 文を応答として受け入れることができるようになります. また、DIESEL 式は現在の図面について特定の評価を行うことができ、その DIESEL 式が返した値を AutoLISP に渡すことができます.