AutoLISP は、ワークフローを自動化し、AutoCAD LTの機能を拡張できる強力な生産性向上ツールです。
AutoLISP は新機能ではありませんが、2024 リリース以降の AutoCAD LT で使用できるようになりました。
AutoCAD LT に AutoLISP を実装すると、若干の制限はありますが、過去 40 年近くにわたって開発されたほとんどの AutoLISP プログラムを実行することができます。AutoLISP の専門家でなくても既存の多くのプログラムを利用できますが、AutoLISP プログラミングを学ぶと、埋もれた生産性を開放するスキルを身につけることができます。
AutoLISP プログラムは、通常、拡張子が .lsp のテキスト ファイルに保存します。AutoLISP プログラミングの基礎を学習する前に、次の演習の学習内容の 1 つとして、AutoLISP ファイルのロード方法を学びます。AutoLISP を利用するうえで、プログラミング経験は必要ありません。多くの場合、実際に必要なのは、いくつかの新しい概念と、AutoCAD のコマンドおよびシステム変数に関する現在の理解のみです。
AutoLISP を初めて使用する場合、独自のプログラムを作成するのではなく、オンラインで見つけた AutoLISP ファイルや会社が作成した AutoLISP ファイルをロードすることになるでしょう。AutoLISP ファイルは、次の場合にロードできます。
次の方法を使用して、起動時、図面を開くとき、または手動で AutoLISP ファイルをロードすることができます。
起動時にロードする | 手動でロードする |
---|---|
|
|
このように、AutoCAD LT はさまざまな方法で AutoLISP ファイルをロードできます。使用する方法は、作図環境の環境設定によって異なります。ここでは、[アプリケーションのロード/ロード解除]ダイアログ ボックスを使用して AutoLISP ファイルをロードする方法を見ていきます。
コマンド プロンプトに対して、APPLOAD[アプリケーション ロード] コマンドを入力することもできます。
英語以外の言語(ja-JP など)をインストールしている場合は、en-us の代わりにそのフォルダを選択します。
acadlt2024doc.lsp ファイルは、特別な名前が付けられた AutoLISP ファイルの 1 つで、開かれたり作成されたりしたそれぞれの図面内にその名前が見つかったときに、AutoCAD LT によって検索され、ロードされます。この AutoLISP ファイルには、製品で使用されるいくつかのコマンドとカスタム AutoLISP 関数が含まれています。ここでは、サンプル ファイルとして使用します。
ダイアログ ボックスの左下のメッセージボックス、およびコマンド ライン ウィンドウに、"acadlt2024doc.lsp が正常にロードされました。" と表示されます。
これにより、acadlt2024doc.lsp 内の AutoLISP で定義された DDGRIPS コマンドが開始されます。DDGRIPS コマンドは、[オプション]ダイアログ ボックスを開き、[選択]タブを現在に設定します。
前の演習では、DDGRIPS コマンドを使用しました。ロードした AutoLISP ファイル内のコマンドを知る方法について、疑問に思われたことと思います。どのコマンドが定義され、使用できるのかを示すために、メッセージをコマンド ライン ウィンドウに直接表示するコードを使用したプログラムもあります。しかし、常にそうであるとは限りません。場合によっては、どのコマンドが定義されているかを知るために、AutoLISP ファイルを開く必要があります。AutoLISP ファイルは、[メモ帳]を使用して開くことができます。
次の図は、[メモ帳]で開いた acadlt2024doc.lsp ファイルの一部を示しています。コマンド プロンプトに対して入力できる AutoLISP 定義コマンドには、c: という接頭語が付きます。c: の直後の文字は、コマンドの名前です。
ダウンロードまたは作成した AutoLISP ファイルを使用する前に、必ず特定の場所に保存しなければならないということはありませんが、共有の場所に保存することをお勧めします。図面テンプレートやブロック ライブラリと同様に、チームや社内のすべての製図担当者が同じ AutoLISP ファイルにアクセスできるようにする必要があります。次の点を考慮する必要があります。
AutoLISP ファイルを保存するフォルダを決めたら、[オプション]ダイアログ ボックスの[ファイル]タブの[サポート ファイルの検索パス]と[信頼できる場所]の設定を使用して、フォルダの場所を AutoCAD LT に通知する必要があります。AutoCAD LT は、次の理由により、LSP ファイルの場所を認識する必要があります。
次の手順では、[サポート ファイルの検索パス]および[信頼できる場所]の設定にフォルダ C:¥AutoLISP Files を追加する方法を示します。この場所は、後でいくつかの短い AutoLISP プログラムを含む LSP ファイルを作成するときに使用します。
リストされているフォルダは、AutoCAD LT が AutoLISP ファイルを検索したり、ハッチング パターン、線種、コマンド エイリアスの保存や新しいユーザ インタフェース要素の定義に使用する他のタイプのカスタム ファイルを検索する際に使用されます。
選択したフォルダが、リストの一番下に追加されます。
選択したフォルダが、リストの一番下に追加されます。
AutoLISP ファイルが含まれるフォルダを読み取り専用としてマークし、それらのフォルダを信頼できるフォルダとして識別することに加えて、AutoCAD LT には、悪意のあるコードやマルウェアから AutoCAD LT を保護するための追加設定がいくつか用意されています。AutoCAD LT のセキュリティ設定にアクセスするには、次の手順に従います。
オンラインで見つけた AutoLISP ファイル、または既に社内に存在する AutoLISP ファイルをロードしたり、管理したりできるようになっても、それは AutoCAD LT で AutoLISP を使用して生産性を向上させることの始まりにすぎません。日常的なワークフローで既存の AutoLISP ファイルの AutoLISP プログラムを使用し始めた後、それらに変更を加えたり、独自の基本的な AutoLISP プログラムを作成したくなる日が来るかもしれません。
AutoLISP はプログラミング言語であり、自分はプログラマではないと思っていらっしゃるかもしれません。確かに、AutoLISP はプログラミング言語ですが、AutoLISP プログラムを学習して作成するために、プログラマである必要はありません。最も単純な AutoLISP プログラムは、コマンドを実行したり、システム変数の値を変更したりできる単一の文です。
AutoLISP文は、左括弧で始まり、右括弧で終わります。次に、システム変数 ORTHOMODE を使用して直交モードをオンにする AutoLISP 文の例を示します。
(setvar "orthomode" 1)
コマンドやシステム変数の名前と同様に、AutoLISP 文は AutoCAD LT のコマンド プロンプトに対して入力することができます。試してみましょう。
オフの場合、ステータス バーのボタンの色はグレー表示になります。
ステータス バーの[直交モード]ボタンがオンになり、青色になります。
初めての AutoLISP 文の作成、おめでとうございます。これで、あなたもプログラマーです。
前の AutoLISP 文では、setvar 関数を使用してシステム変数の値を設定しました。システム変数の現在の値を返す getvar という名前の関数もあります。setvar および getvar 関数は、AutoLISP を使用してワークフローを自動化するために使用できる数百の関数の中の 2 つにすぎません。AutoLISP プログラミング言語を構成する関数は数百ありますが、使い始める際に理解する必要があるのは 5 つの主要関数のみです。そのうち 2 つは既に学習しました。5 つの関数とは、次のとおりです。
5 つの主要な関数が分かり、setvar 関数を使用してシステム変数を設定したところで、次に command 関数を使用方法を見てみましょう。続行する前に、コマンド名の前に . (ピリオド)および _ (アンダースコア)文字を付けることができ、コマンドのオプション名の前には _ (アンダースコア)文字を付けることができるということを知っておく必要があります。これらの文字を付けると、指定したコマンドが確実に期待どおりに実行されます。
これらの文字の意味は次のとおりです。
次の手順では、command 関数を使用して円を描き、図面のオブジェクト範囲にズームします。
現在の画層の 5,5 の位置に、半径が 5 単位の円が描かれます。
円が図面内の唯一のオブジェクトである場合は、円のオブジェクト範囲がズームされ、それ以外の場合は、図面内のすべてのオブジェクトのオブジェクト範囲がズームされます。
AutoLISP 文をいくつか見てきたので、次に AutoLISP 文の例のさまざまな部分と構文を詳しく見てみましょう。
コマンド プロンプトに対して AutoLISP 文を直接入力することは、リアルタイムでフィードバックを得られるため、AutoLISP の学習を始めるには最適な方法ですが、コマンド プロンプトに対して文を繰り返し再入力するのは、まったく効率的ではありません。AutoLISP 文を再利用するための 1 つの方法は、defun 関数を使用してカスタム コマンドとしてグループ化することです。
defun 関数を使用して、図面の直前のビューにズームする ZP というカスタム コマンドを定義してみましょう。
コマンドに、C:ZP と出力されます。
直前のビューが復元されます。
直前のビューが復元されます。
defun 関数を使用してカスタム コマンドを定義すると、AutoLISP 文を簡単に再利用できるようになりますが、定義したコマンドは、定義した図面内でのみ、および図面を開いている間のみでしか使用できません。次のセクションでは、AutoLISP ファイルを作成し、カスタム AutoLISP コマンドを AutoLISP ファイルのロード時に実行する他のAutoLISP 文と一緒に保存する方法を学習します。
5 つの主要な関数、および他の利用可能な数百の関数の詳細については、『AutoLISP リファレンス ガイド』を参照してください。
コマンド プロンプトに対して AutoLISP 式を入力する方法は理解できたので、次に、AutoLISP ファイルを作成し、AutoLISP 式およびカスタム コマンドを保存して、必要なときに使用できるようにする方法を見てみましょう。AutoLISP ファイルは、[メモ帳]などの簡単なテキスト エディタで作成できるプレーン ASCII テキスト ファイルで、ファイル拡張子は .lsp です。Write や Word などのワード プロセッサ アプリケーションを使用すると、特殊な文字や書式設定が導入され、LSP ファイルをロードするときに問題が発生する可能性があるため、これらを使用することはお勧めできません。
次の演習では、LSP ファイルを作成し、LSP ファイルにいくつかの AutoLISP 文を追加し、LSP ファイルをロードし、そして LSP ファイルで定義されているコマンドを試す方法を学習します。前述の 5 つの主要な関数に加えて、次の関数も紹介します。
次に、独自のファイルを作成して AutoCAD LT にロードします。
; Zoom commands (defun c:ze () (command "._zoom" "_e")) (defun c:zp () (command "._zoom" "_p")) ; Creates the layer A-ANNO-REV, draws a rectangle and ; converts the rectangle to a revision cloud with arc lengths ; based on half the current value of the LTSCALE system variable (defun c:rv () (setq old-layer (getvar "clayer")) (command "._-layer" "_m" "A-ANNO-REVCLD" "_c" "1" "" "") (command "._rectang" PAUSE PAUSE) (command "._revcloud" "_a" (/ (getvar "ltscale") 2) "" "_o" "_l" "_n") (setvar "clayer" old-layer) ) ; Display a general message in the command line upon load (prompt "\nLoaded MyFirst.lsp") (princ)
プログラムで Unicode 文字を使用する必要がある場合は、[UTF-8]を選択します。
これでファイルが作成されたので、[アプリケーションのロード/ロード解除]ダイアログ ボックス(APPLOAD[アプリケーション ロード]コマンドで表示)を使用する代わりに、ファイル エクスプローラーを使用して LSP ファイルをロードします。
ロードが完了すると、prompt 関数によって、コマンド ライン ウィンドウの履歴に「Loaded MyFirst.lsp」というメッセージが表示されます。
赤色の雲マークが、画層 A-ANNO-REVCLD に配置されます。これは、リボンの[画層]パネルの[画層]ドロップダウン リストまたは[プロパティ] / [クイック プロパティ]パレットで確認できます。
図面のオブジェクト範囲がズームされます。
図面の直前のビューが復元されます。
[アプリケーションのロード/ロード解除]ダイアログ ボックスを使用すると、必要に応じて AutoLISP ファイルを手動でロードできるだけでなく、新しい図面ファイルを開いたり作成したりしたときに AutoLISP ファイルを自動的にロードすることもできます。[アプリケーションのロード/ロード解除]ダイアログ ボックスの[スタートアップ登録]領域を使用すると、自動的にロードする AutoLISP ファイルを指定することができます。
AutoLISP ファイルをスタートアップ登録に追加するには、次の手順を使用します。
コマンド プロンプトに対して、APPLOAD[アプリケーション ロード] コマンドを入力することもできます。
前のセクションで myfirst.lsp ファイルを作成した場合は、そのファイルを選択できます。
スタートアップ登録に追加した AutoLISP ファイルは、現在の図面に自動的にロードされます。
AutoCAD LT を起動するか、図面を作成または開くと、AutoCAD LT は特定の名前の 4 つの AutoLISP ファイルを検索します。ファイルが見つかった場合は、自動的にロードされます。これらのファイルは、AutoCAD LT 環境を正常に環境設定し、図面を作成したり開いたりしたときに AutoLISP 定義済みコマンドが確実に使用可能となるようにします。
AutoCAD LT は、サポート パスで次の 4 つのファイルを検索し、見つかった場合は自動的にロードします。
acadlt.lsp と acadltdoc.lsp は、AutoCAD LT の標準インストールには含まれていないため、自分で作成する必要があります。acadlt2024.lsp と acadltdoc2024.lsp はプログラムに含まれているので、変更しないでください。
acadlt.lsp および acadltdoc.lsp ファイルは、他の LSP ファイルと同様に使用でき、前述のように、それらのファイルを自動的にロードすることができます。これら 2 つのファイルを使用することにより、AutoLISP load 関数を使用して他の AutoLISP ファイルをロードしたり、それらのファイルのロード時に AutoLISP 文を実行したり、図面を作成または開いた後すぐに使用できるように AutoLISP コマンド定義したりできます。AutoLISP load 関数は、2 つのパラメータを受け入れます。1 番目のパラメータはロードする AutoLISP ファイルで、これは必須です。2 番目のパラメータは、ロードする AutoLISP ファイルが AutoCAD LT のサポート ファイルの検索パスのいずれでも見つからなかった場合に表示されるメッセージで、これは省略可能です。サポート ファイルの検索パスの設定については、「AutoLISP ファイルを管理、保護する」セクションを参照してください。
次の手順では、C:¥AutoLISP Files フォルダに acadltdoc.lsp ファイルを作成し、そこにいくつかの AutoLISP 文を追加し、それを AutoCAD LT にロードし、ファイルがロードされたことを確認する方法を説明します。
; AutoLISP to be executed in each drawing created or opened ; Set Object Snap and Ortho modes (setvar "osmode" 4133) (setvar "orthomode" 1) ; Load the LSP file created earlier under the ; "Store AutoLISP Statements in AutoLISP (LSP) Files" section (load "myfirst.lsp" "\nMyFirst.lsp file couldn't be found") ; Display a general message in the command line upon load (prompt "\nLoading my custom programs") (princ)
コマンド ライン ウィンドウに、"Loading my custom programs" というメッセージが表示されます。これは、前述の手順 2 で入力した最後の 2 行の 1 つからのメッセージです。
ステータス バーのボタンが再びオンになります。
プラグイン バンドルは、PackageContents.xml という名前のマニフェスト ファイルを持つフォルダ構造で、プラグインを構成するファイルと設定を AutoCAD LT に通知します。AutoLISP プログラムを AutoCAD LT にロードする場合は、この記事で既に学習したように、プラグイン バンドルは必要ありませんが、プラグイン バンドルを使用すると、AutoLISP ファイルの管理が容易になり、acadlt.lsp や acadltdoc.lsp ファイルを使用するよりも、簡単かつ安全にカスタム プログラムを配置することができます。また、プラグイン バンドルは、ほとんどの場合、[オプション]ダイアログ ボックスを必要とせず、AutoCAD LT の環境設定に役立ちます。
プラグイン バンドルの詳細については、「例: プラグインの基本的な .bundle フォルダ構造」を参照してください。
ワークフローを自動化すると、生産性を向上させ、反復的なタスクを削減できます。AutoLISP プログラミングには学習曲線がありますが、5 つの主要な関数をしっかりと覚えるだけでも、小さなプログラムを作成することができ、日常のワークフローで AutoLISP がどれだけ価値があるかを理解することができます。
次に、AutoLISP に関連して頻繁に使用されるコマンドとシステム変数を示します。
コマンド | 説 明 |
---|---|
APPAUTOLOADER[アプリケーション自動ロード] | アプリケーション プラグイン フォルダのすべてのプラグインを一覧表示または再ロードします。 |
APPLOAD[アプリケーションロード] | アプリケーションをロード、ロード解除したり、起動時にロードするアプリケーションを定義します。 |
OPTIONS[オプション] | プログラムの設定をカスタマイズします |
SECURITYOPTIONS[セキュリティ オプション] | 製品で実行ファイルを実行する場合のセキュリティ制限をコントロールします。 |
UNDEFINE[コマンド定義解除] | 内部コマンドを無効にし、アプリケーション定義コマンドを使用できるようにします。 |
システム変数 | 説 明 | 既定値 | 保存場所 |
---|---|---|---|
ACADLSPASDOC | acad.lsp ファイル、または AutoCAD LT の場合は acadlt.lsp ファイルを、すべての図面にロードするか、セッションで開かれる最初の図面だけにロードするかをコントロールします。 | 0 | レジストリ |
APPAUTOLOAD | プラグイン アプリケーションがいつロードされるかをコントロールします。 | 14 | レジストリ |
CLAYER | 現在の画層を設定します。 | 0 | 図面 |
CLIPROMPTUPDATE | AutoLISP またはスクリプト ファイルの実行中に生成されたメッセージ、プロンプトをコマンド ラインに表示するかをコントロールします。 | 1 | レジストリ |
CMDDIA | DIMEDIT[寸法編集]コマンドと QLEADER[クイック引出線記入]コマンドのインプレイス テキスト エディタの表示、および AutoCAD ベースの製品での特定のダイアログ ボックスの表示をコントロールします。 | 1 | レジストリ |
CMDECHO | AutoLISP の command 関数を実行中に、プロンプトとユーザ入力をエコーバック表示するかどうかをコントロールします。 | 1 | 保存されません |
FILEDIA | ファイル選択ダイアログ ボックスの表示/非表示をコントロールします。 | 1 | レジストリ |
LEGACYCODESEARCH | 実行可能ファイルの検索にプログラム起動フォルダを含めるかどうかをコントロールします。 | 0 (ゼロ)。CAD 管理者によってロックされている場合があります。 | レジストリ |
NOMUTT | 通常はメッセージ表示が省略されない場合に、メッセージ表示を省略します。 | 0 | 保存されません |
ORTHOMODE | カーソルの移動を水平方向および垂直方向に制限します。 | 0 | 図面 |
OSMODE | 定常オブジェクト スナップを設定します。 | 4133 | レジストリ |
SECURELOAD | 実行可能ファイルのロード元を信頼できるフォルダのみに制限するかどうかをコントロールします。 | 1、CAD 管理者によってロックされている場合があります | レジストリ |
TEXTEVAL | TEXT[文字記入]または -TEXT コマンドで入力する文字列の解釈方法をコントロールします。 | 0 | 保存されません |
TRUSTEDPATHS | コードを含むファイルをロードして実行する権限があるフォルダを指定します。 | 不定、CAD 管理者によってロックされている場合があります | レジストリ |