プロジェクト

プロジェクトとは

プロジェクト機能を使用することによって、次のような利点があります。

  1. 複数ファイルにまたがったプログラムの管理が容易になる。
  2. 複数ファイルを AutoCAD へ容易にロードできる。
  3. コンパイルしたFAS ファイルを作成することができる。

プロジェクトを作成すると、拡張子が「PRJ」というファイルが作成されます。ファイルの実態はいわゆる「メイクファイル」であり、コンパイルオプション等を記述したテキストファイルです。プロジェクトでの作業はプロジェクトウィンドウから行います。

プロジェクトフォルダの準備

Visual LISP プロジェクトフォルダ

プロジェクトで作業するにあたってプロジェクトフォルダを作成すると、管理が容易になります。

ここでは、「AutoLISP」フォルダ下に、これから作成するプログラムの名前「samplePrj」のフォルダを作成し、プロジェクトファイルとLISPファイルをここに保存します。

ここには、FAS ファイルを格納する「FAS」フォルダと、テンポラリファイルを格納する「TEMP」フォルダも作成します。

プロジェクトの作成

Visual LISP プロジェクトウィンドウ

プロジェクトの作成はVisual LISP のメニュー【プロジェクト】>【新規プロジェクト】を選びます。ここではプロジェクトファイルの名前と保存先が必須です。ファイルの保存先の設定が終わると、【プロジェクトのプロパティ】ダイアログが開き、プロジェクトに加えるLISP ファイルや作成オプションを指定します。これらは、後からでも【プロジェクトのプロパティ】を表示させることによって変更できます。【プロジェクトのプロパティ】のOK ボタンを押すと、プロジェクトファイルが作成され、Visual LISP 上にプロジェクトウィンドウが開かれるます。

さしあたって、【作成オプション】タブの【Fas フォルダ】と【テンポラリフォルダ】の設定を、先ほど作成したプロジェクトフォルダ下の該当のフォルダを指すように設定します。

プロジェクトに含めるLISP ソースファイルは、【プロジェクトファイル】のタブから、適時追加していきます。

プロジェクトメニュー

プロジェクトに関する操作は、Visual LISP のメニュー【プロジェクト】から行います。プロジェクトは、一度に複数開くことが可能ですので、【プロジェクト】メニューの下には、開かれているプロジェクトの一覧が表示され、アクティブになっているものにチェックマークがついています。

【プロジェクト】メニューの内容は以下のとおりです。

メニュー項目 説明
【新規プロジェクト】 プロジェクトファイルの名前と保存先を指定して、プロジェクトファイルを新規作成します。
【プロジェクトを開く】 既存のプロジェクトファイルを開きます。
【プロジェクトを閉じる】 アクティブなプロジェクトを閉じます。
【プロジェクトのプロパティ】 アクティブなプロジェクトの【プロジェクトのプロパティ】ダイアログが開きます。
【プロジェクトFAS ファイルをロード】 プロジェクトで生成されたFAS ファイルをAutoCADにロードします。ファイルがまだ生成されていなければコンパイルされます。
【プロジェクトソースファイルをロード】 プロジェクトのLISP ソースファイルをAutoCAD にロードします。
【プロジェクトFAS を生成】 FAS ファイルを生成します。既に作成したことがあるならば、LISP のソースファイルが更新されたものだけを対象にコンパイルします。
【プロジェクトFAS を再生成】 FAS ファイルを生成します。LISP のソースファイルの更新にかかわらず、すべてを対象にコンパルします。

プロジェクトのプロパティ

【プロジェクトのプロパティ】ダイアログの意味は以下のとおりです。

Visual LISP プロジェクトのプロパティ
【プロジェクトファイル】タブ
このタブでは、【プロジェクト】に含まれるソースファイルを登録します。 【探す場所】でソースファイルのフォルダを指定し、下に一覧が表示されたら選択して「>」「<」ボタンで、右の【プロジェクト】に含むファイルのリストに追加や削除します。
【プロジェクト】に含むファイルのリストはAutoCAD にロードされる順番を示しており、 場合によって重要になるときがあります。あるプログラムが別ファイルの関数等を参照しているとき、 別ファイルはAutoCAD に先にロードされる必要があります。
Visual LISP プロジェクト作成オプション
【作成オプション】タブ 説明
【コンパイルモード】 【標準】を選ぶと、コンパイル前の仕組みと同じシンボル名から実行する関数や参照する変数を特定するプログラムが生成されます。
【最適化】を選ぶと、シンボル名を介してではなく直接リンクするプログラムが生成されます。効率は上がりますが、シンボル名に依存するプログラムを書いている場合等、コンパイルすることによってエラーが発生するプログラムになることもあります。
【ファイル合成モード】 【各ファイルに1 モジュール】を選ぶと、LISP ソースファイルごとにFAS ファイルが作成されます。
【すべてに1 モジュール】を選ぶと、プロジェクト名と同名のFAS ファイルに、すべてのソースファイルから作成するFAS ファイルがまとめられます。「すべてで1 モジュール」と言うべきでしょうか。
【Fas フォルダ】 FAS ファイルが作成されるフォルダを指定します。未指定の時はプロジェクトファイルと同じフォルダに作成されます。
【テンポラリフォルダ】 一時的な作業ファイル「OBJ」や「PDB」が生成されるフォルダを指定します。
【メッセージモード】 コンパイル時のメッセージの詳細度を設定します。通常は【エラーと警告】とします。
【グローバル宣言を編集】 プロジェクトのグローバル宣言ファイルを作成または編集できます。この機能は過去のVisual LISP のバージョンと互換性を保つために提供されています。

【コンパイルモード】で【最適化】を選ぶと以下のメニューが有効になります。

【セーフ最適化】 このオプションがオンの時には、コンパイラが【最適化】によってエラーが発生しそうだと判断した場合は、下記のローカライズやリンクといった【最適化】手法のオプションが無視されます。
【変数をローカライズ】 変数を、シンボルを介してではなく直接リンクを行い、プロジェクト内部の参照のみ可能になります。
【リンクモード】 【リンクしない】はシンボルを介しての関数呼び出しを行います。
【リンク】は関数呼び出しを、シンボルを介さないで関数のアドレスでリンクを行います。
【内部】は接頭辞「C:」を付けた関数などAutoCAD から使用するコマンドを除いて、関数名が完全に削除されます。関数は直接リンクされて、プロジェクト内部の呼出しのみ可能になります。

プロジェクトウィンドウ

プロジェクトウィンドウ上部には五つのボタンがあります。

ツールボタン 説明
Visual LISP プロジェクトのプロパティ 【プロジェクトのプロパティ】 【プロジェクトのプロパティ】ダイアログを開きます。
Visual LISP FASをロード 【プロジェクトFAS をロード】 プロジェクトに登録されているすべてのFAS ファイルをAutoCAD にロードします。まだFAS ファイルが作成されていなければ、作成するか聞いてきますので、作成後、再度改めてボタンを押してください。
Visual LISP ソースをロード 【ソースファイルをロード】 プロジェクトに登録されているすべてのLISP ファイルをAutoCAD にロードします。
Visual LISP FASを生成 【プロジェクトFAS を生成】 FAS ファイルを作成します。既に作成したことがあるならば、LISP のソースファイルが更新されたものだけを対象にコンパイルします。
Visual LISP FASを再生性 【プロジェクトFAS を再生成】 FAS ファイルを作成します。LISP のソースファイルの更新にかかわらず、すべてを対象にコンパイルします。

プロジェクトウィンドウに表示されているファイル名をダブルクリックすると、該当のLISP のソースファイルがエディタで開かれるので、コンパイルの段階に限らず複数ファイルに分けたプログラムを開発しているときは管理が容易です。

プロジェクトウィンドウ右上の閉じるボタンを押してウィンドウを消しても【プロジェクト】は内部で開かれたままです。【プロジェクト】メニュー下の一覧から選ぶことで、再度ウィンドウを開くことができます。本当にプロジェクトを閉じてしまうにはVisual LISPのメニューの【プロジェクト】>【プロジェクトを閉じる】を選びます。

ソースファイルのロードの失敗

LISP ソースファイルのロードが失敗する場合は、主に次の二つの原因が考えられます。

  1. ソースコードの括弧の対応がとれていないなど、文法上のエラーがある。
  2. ソースコードが保存されていない。

最初のは、エディタの構文チェックやエラートレースを使って、どこでエラーが発生しているか確認をしてください。二番目のは、プロジェクトウィンドウからソースをロードさせるとよく陥ります。最新の AutoCAD では未保存のソースコードを保存するか確認を求めてきますが、古いものは編集はしたが保存されていないファイルをロードしようとしてエラーとなる場合があります。

コンテキストメニュー

メニュー項目 説明
【編集】 選択したファイルを、エディタウィンドウで開きます。
【ファイルを追加】 【プロジェクト】にファイルソースファイルを追加します。【プロジェクトのプロパティ】の【プロジェクトファイル】タブが開きます。
【ファイルを除去】 選択したファイルを、【プロジェクト】から除去します。
【ロード】 選択したファイルを、AutoCADにロードします。FASファイルがあればFASファイルが、無ければLISPソースファイルがロードされます。
【ソースをロード】 AutoCADにプログラムをロードします。LISPソースファイルがロードされます。
【構文をチェック】 選択したファイルを、構文チェックします。
【タッチ】 LISPソースファイルの更新フラグを立てます。内容は変更されません。次回の【プロジェクトFAS を生成】でコンパイルされます。
「タッチ」というのは、ファイルのタイムスタンプを変更するtouchというUNIXコマンドから来ていると思われます。
【ファイルを整列】 プロジェクトウィンドウのファイルの並びを変更します。ロード順/名前順/種類順/日付順が選べます。
【複数選択】 オン/オフできるオプションです。このオプションがオンの時には、複数のファイルが選択できます。
【すべて選択/解除】 すべてを選択、または選択を解除します。いくつかのファイルが既に選択されている場合は、それらの選択が解除されます。
【プロジェクトを閉じる】 プロジェクトを閉じます。Visual LISPメニューの【プロジェクト】>【プロジェクトを閉じる】と同じです。
【名前を付けてプロジェクトを保存】 別名で【プロジェクト】を保存します。

FAS ファイルの⾃動ロード

プロジェクトでは、ソースファイルをコンパイルしたFAS ファイルを作成できました。ここで作成したFAS ファイルは、【作成オプション】で【ファイル合成モード】が【各ファイルに1 モジュール】になっていればソースファイルごとに、【すべてに1 モジュール】が選択されていれば一つのFAS ファイルが作成されています。

これらを、AutoCAD に自動的にロードさせる手順は、ソースファイルのLISP プログラムの自動ロードと同じです。複数のFAS ファイルがある場合は、すべてをロードさせるようにしなければなりません。load 関数でFAS ファイルを指定する場合でも、拡張子の優先順位から拡張子FAS は不要です。