DelphiARX2002 で初めてARXアプリケーションを開発される方へ

当ページでは、DelphiARX2002 で初めてARXアプリケーションを開発される方に、プロジェクトの始め方を説明するものです。 なお、事前に必要な知識としては、ObjectARX や Delphi にて使われる用語、ARXアプリケーションそのもの知識が必要です。 本説明では、Borland Delphi6 (エディションは問わず)での操作となっていますが、基本的に他のバージョンでも同様ですので、実際に操作しながら確認されるとよいでしょう。 また、説明は Delphi6 を起動した直後からとなっています。 説明通りに進める場合は、一旦 Delphi を終了させてから起動し直してください。
新規ARX用プロジェクトの作り方
プログラムコード自動作成機能に関する注意事項  (重要)
AutoCAD コマンドや AutoLISP 関数の作り方
ARX用フォームウィンドウの作り方
Delphi の基礎知識 - 再構築、デバッグ実行、デバッグ・リリースの切替え方法等
なお、当ページで説明する Borland Delphi とは、Delphi5、Delphi6、Delphi7 までを示しますので、これ以降のバージョンも同じとは限りません。

1.Delphi を起動後に表示されるプロジェクトを閉じる

Delphi を起動すると、初期状態で Project1 という標準の空プロジェクトが立ち上がっています。 ARXアプリケーションは、Delphi の標準プロジェクトとは異なりますので、まずは全てのプロジェクトを閉じてください。
メニューから[ファイル]→[すべて閉じる]を実行してください。

すべて閉じる

2.DelphiARX の新規プロジェクトを作成する

ARX用のプロジェクトは、新規作成のその他で表示される新規作成ダイアログ内にあるため、これを表示します。
メニューから[ファイル]→[新規作成]→[その他]を実行してください。
(Delphi5 の場合は、[ファイル]→[新規作成]のみで表示します。)

新規作成

3.DelphiARX2002 プロジェクトウィザードを実行する

Delphi の新規作成ダイアログが表示した各ページタブの1つに「Wizard」というタブがあります。 このページの中に「DelphiARX2002 AppWizard」というプロジェクトがあるので、これを選択して「OK」ボタンをクリックしてください。

DelphiARX2002 AppWizard

4.プロジェクトウィザード(ステップ1/4)を進める

下記のようなプロジェクトウィザードが Delphi 上に表示するので、ステップに従って順番に進めていきます。 ステップ1/4は、ウィザードの説明と言語切替え、DelphiARX 用ライブラリフォルダの変更の画面となっています。 日本語環境で使う場合、特にこの画面を変更することはありません。 ライブラリフォルダについても、基本的に変更する必要はありませんので、そのまま「次へ」ボタンをクリックしてください。

ステップ1/4

5.プロジェクトウィザード(ステップ2/4)で新規プロジェクトを指定する

ステップ2/4は、新規に作成するARX用プロジェクトのファイルの保管場所やプロジェクト名を指定します。 まずは、ARX用プロジェクトを作成するドライブとフォルダを指定してください。 指定したフォルダの下に「プロジェクト名」で入力した名前のサブフォルダが自動的に作成されます。 次に開発者シンボルコードですが、これは ObjectARX のシンボルコードと同じものを示し、個人名や企業名等を区別するための任意のコードを入れてください。 (このコードは、AutoCAD にARXアプリケーションをロードした際、同じコマンドがあってもシンボルが異なれば重複しないようになるための識別コードです。) 最後にプロジェクト名を入力してください。 なお、シンボルやプロジェクト名は必ず半角英数字でファイル名として有効な文字コードのみを使ってください。 入力が完了したら、「次へ」ボタンをクリックしてください。

ステップ2/4

6.プロジェクトウィザード(ステップ3/4)で再配布ライセンスとコンパイル条件を指定する

ステップ3/4は、再配布ライセンスとコンパイル条件定義を指定します。 「ライセンス登録」の箇所は、一度再配布ライセンスを登録しておくと、この箇所にライセンスコードとライセンス名が明記されるので、再度登録し直す必要はありません。 まだ、再配布ライセンスを入手していない方は、再配布ライセンス登録の説明をご確認ください。
コンパイル条件定義には、ARX用 Form オブジェクト( AutoCAD と連動するウィンドウ)と AutoCAD COMオブジェクトを使うプロジェクトかによってチェックをつけてください。 なお、LT/com2002 を使った AutoCAD LT での使用ができるARXアプリケーションを作る場合は、AutoCAD COMオブジェクトにチェックをつけてはいけません。
指定が完了したら、「次へ」ボタンをクリックしてください。 (このステップは後から DelphiARX のメニューで変更することができます)

ステップ3/4

7.プロジェクトウィザード(ステップ4/4)で生成条件の確認とランタイムの生成を指定する

ステップ4/4は、これから作成するARX用プロジェクトの生成条件の表示とランタイムの生成をするかを指定します。 DelphiARX のプロジェクトが作る実行ファイルは、拡張子が「.drx」というもので、このままでは AutoCAD にロードすることができません。 AutoCAD の APPLOAD コマンドで指定するファイルは、同一ファイル名の拡張子「.arx」というランタイムファイルになります。 「ARXランタイムファイルの生成」は、ARX用プロジェクトを再構築(リビルドとも呼ぶ)する際に自動的に「.arx」のランタイムを生成するかを指定することになるので、必ずチェックをつけてください。 指定が完了したら、「作成」ボタンをクリックしてプロジェクトを作成してください。 (ランタイムの生成は後から DelphiARX のメニューで変更することができます)

ステップ4/4

8.新規ARX用プロジェクトの生成結果を確認する

新しいARX用プロジェクトを自動作成した後、生成結果の画面を表示するので、それぞれのファイルに対する説明を確認してください。 これらのファイルは、ステップ2/4で指定したフォルダ以下にプロジェクト名のサブフォルダがありますので、その中に作成されています。 確認が終わったら、「完了」ボタンをクリックして、DelphiARX2002 プロジェクトウィザードを閉じてください。

説明

9.DelphiARX のプログラムコード自動作成機能に関する注意事項

重要
DelphiARX には AutoCAD のコマンドやリアクタ、エントリーポイントなどのプログラムコードを自動的に追加・削除するメニュー機能が準備されていますが、 これらプログラムコードの自動生成機能には不十分な面があり、複雑なプログラムコードを記述した後で実行すると、自動生成に失敗したり、元々のプログラムコードを壊すことがあります。
このため、DelphiARX メニュー機能を利用する際は、できるだけプロジェクトを作成した後で、任意のプログラムコードを記述する前に作成しておいてください。 また、どうしても後から追加しなければならない場合は、実行前にプロジェクトのバックアップをとってから操作するようにしてください。 バックアップとは、プロジェクト内の全ファイルを別のフォルダなどにコピーしたり、圧縮ファイルにまとめるなどして残しておく操作をいいます。

10.AutoCAD コマンドや AutoLISP 関数の作り方

作成したARX用プロジェクトに AutoCAD コマンドや AutoLISP 関数を追加する方法を説明します。 まず、DelphiARX メニューの「コマンド追加」を実行してください。

コマンド追加

11.コマンド定義ダイアログの設定

表示されたダイアログでコマンドを追加します。(この画面は ObjectARX2002 と同じものとなっています)
AutoCAD のコマンドを定義する方法は ads_defun() 関数addCommand() 関数の2種類があります。
ads_defun() 関数で定義すると、AutoLISP の関数として使えるようになります。 コマンドと LISP 関数の両方で呼び出したい場合は、ads_defun() を指定して、グローバル名の頭に「C:」を加えます。 例えば、グローバル名に「ADFUN」と入力して定義すると LISP 関数に「ADFUN」が追加されます。 しかし、コマンドとしては呼び出せません。 グローバル名を「C:ADFUN」とすると、「ADFUN」というコマンドでも LISP 関数としても呼び出すことができます。
addCommand() 関数で定義すると、グループ名での区別やコマンドのステータスを指定することができ、ads_defun() 関数では作れないコンテキストやドキュメントロックの指定ができます。 但し、addCommand() 関数では LISP 関数は作れません。 下記の例では、addCommand() で「DODO」というコマンドを作ります。グループ名は任意で「FOO」としています。また、ads_defun() 関数で「ADFUN」という LISP 関数を作ろうとしています。

DelphiARX Defined Commands

12.作られたコマンドの呼び出し関数

上記でコマンドを定義後「OK」ボタンをクリックすると、「DocMain.pas」ファイルに「DODO」コマンドと「ADFUN」関数が呼び出された時に実行されるイベント関数が作られます。 addCommand() 関数で定義されたコマンドは「ArxCmdDODO」という引数のない関数(メソッド)が生成され、ads_defun() 関数で作成した関数は「LispCmdADFUN」という戻り値を示す引数を持つ関数(メソッド)が生成されます。 LispCmdADFUN() 関数にコメントされている「lispArgs」は、この LISP 関数が呼び出された際に付加されていた LISP 側の引数の情報が記録されているオブジェクトになっています。
TDArxDocManager というクラスは、AutoCAD の図面ドキュメント1つに対して1つづつ自動的にインスタンスが生成される予約されたクラスとなっていますので、このクラスにメンバ変数を定義すると、AutoCAD のドキュメント毎に異なる情報を保持させることができます。

コマンドイベント関数

12.ARX用フォームウィンドウの作り方

作成したARX用プロジェクトに AutoCAD と連動するダイアログやウィンドウ(ARXフォームと呼ぶ)を追加する方法を説明します。 なお、Delphi が標準で持つ TForm は AutoCAD と連動させることができないので、ARXアプリケーションでは使わないようにしてください。 まず、DelphiARX メニューの「ARX Form の新規作成」を実行してください。

ARX Form の新規作成

13.作成するARXフォームの選択と実行

ARXフォームの新規作成ダイアログを表示しますので、作成したいタイプのウィンドウを選択してください。 なお、各フォームは以下のような特徴があります。
モーダル ダイアログは、AutoCAD の環境設定ダイアログのようにこのウィンドウが表示中は、AutoCAD 内の操作ができないARXフォームです。
モードレス ARXフォームは、AutoCAD にドッキングしていないサブウィンドウで、画面が表示中でもAutoCAD 内の操作ができるARXフォームです。
ドッキング ARXフォームは、デフォルトで AutoCAD の左右にドッキングした状態となるモードレスARXフォームです。
ドッキング ツールバーは、AutoCAD のツールバー部分に表示されるフォームで、ツールボタン用のARXフォームです。
作成するフォームを1つ選択して、必要な場合はフォーム名を指定してから「OK」ボタンをクリックしてください。 (フォーム名は半角英数字のみ指定できます。また、1文字目は必ず英字でなければなりません。)

New ARX Form

14.新たに作成されるARXフォームとユニットの編集

フォーム名を指定しないでARXフォームを作成すると、プロジェクトに「Unit(番号).pas」と「Unit(番号).frm」ファイルが自動的に追加されます。 また、このフォームの表示や非表示の実行をする呼び出し関数は、「MsgMain.pas」ファイルと「DocMain.pas」ファイルにコメントアウトされます。 AutoCAD を起動した1回だけウィンドウを表示したい場合は、エントリーメッセージの管理をする「MsgMain.pas」ファイル内でフォームの表示関数を呼び出してください。 コマンドを実行したときにウィンドウを表示したい場合は、ドキュメントの管理をする「DocMain.pas」ファイルのコマンド内でフォームの表示関数を呼び出してください。
なお、フォーム名を指定しないで自動作成されたユニット名( Unit1.pas など)を変更して保存すると、「MsgMain.pas」ファイルと「DocMain.pas」ファイルの Uses 節に記述された Unit1 等の名前と食い違うことになります。 名前を変更する際は、これらも修正する必要があるため、13項目でフォームを作成する際にあらかじめ名前を指定したほうがよいでしょう。 なお、フォームを使ったサンプルプログラムが DelphiARX のダウンロードファイルに含まれています。 詳細はそちらで確認してください。

Unit1