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