Polymorphism

AutoCAD をプログラムによってカスタマイズする方法についてご紹介!

ObjectARX
ObjectARX


ホーム > 技術情報 > 開発・カスタマイズ情報 > プログラムによるカスタマイズ > ObjectARX


 概要
ObjectARXの基本概念はAutoCADの図面データベース内のオブジェクトをC++言語により直接操作することです。C++言語はオブジェクトを操作するための開発言語のため、オブジェクト操作には最適です。このC++言語に従い図面データベース内のオブジェクトを柔軟に操作することができます。開発言語がC++のため、その開発環境におきましては図面データベースのオブジェクトを操作するだけではなく、一般的なC++言語による各種プログラムも作成できます。AutoCADの図面データベースのオブジェクトの操作と合わせて、C++言語の汎用的な機能により、外部システムとの連携やWindowsシステムを利用したりすることもできます。
また、ObjectARXは図面データベースのオブジェクト操作ばかりでなく、「ADS-Rx」機能により、AutoCADの図面エディタに関しても高度で柔軟なプログラムによる設計を行なうことができます。


特徴:
 ・高度な設計を高速で実現
 ・オブジェクトの直接操作
 ・入力インターフェースの操作
 ・ドラッグ処理
 ・ジオメトリの活用
 ・リアクタの活用
 ・外部図面(DWG)の読み込み
 ・ドキュメント管理
 ・拡張データ・ディクショナリの活用
 ・AutoCADのグラフィック操作
 ・図面データベースの拡張




 AutoCADの構造




高度な設計を高速で実現
ObjectARXはAutoCADの図面データベースやCADエディタ、グラフィックなどをを直接操作可能なプログラム開発環境です。これはAutoCADのシステムを直接操作できると考えるとわかりやすいと思います。図面データベースの操作はもちろん、CADエディタやグラフィックに関する開発が可能なため、高度なカスタマイズを実現できます。しかも、システムの「直接」操作のため大変高速な処理となります。


オブジェクトの直接操作
ObjectARXは、図面データベースを初めとするAutoCADのシステムを構成するメモリ中の様々な「オブジェクト」を直接操作することが可能です。これは、AutoCADが図面データベースやシステムの構造を可能な限り公開していることを意味し、その公開されているシステムの構造をそのまま直接利用できるのがObjectARXという開発カスタマイズ手法となります。


入力インターフェースの操作
AutoCADの実装しているあらゆるユーザ入力(オブジェクト選択、座標入力、文字入力など)の方法をプログラムで利用することが可能です。さらに、ダイアログを利用して独自の入力画面を作成することもできます。また、AutoCADの標準入力操作中のイベントに割り込んで、独自の処理を実行させることなども可能です。


ドラッグ処理
プログラムにより、図形のドラッグ(カーソルで図形を画面上で移動させる処理)を利用することや、ドラッグ中の状況の監視や図形の回転、変形など、高度な処理を実現することが可能です。AutoCADをより使いやすくするためのカスタマイズでは重要なツールとなります。


ジオメトリの活用
AutoCADをプログラムでカスタマイズする際、必ず必要となる技術が座標、ベクトル、平面などに関する様々な幾何計算(ジオメトリ)です。ObjectARXではこの幾何計算のためだけに専用のオブジェクト(ジオメトリオブジェクト)を用意することで、面倒で複雑な幾何計算をこのジオメトリオブジェクトに計算させることができます。このジオメトリオブジェクトにより、開発者は幾何計算の設計を大きく軽減することができます。


リアクタの活用
実行中のAutoCADが発行する各種イベントをObjectARXで取得することが可能です。このイベントを取得する機能(オブジェクト)をリアクタと呼んでいます。イベントの取得を行うと、そのイベント発行の際アプリケーション側に処理が移り、AutoCADの標準機能に「割り込む」プログラムを作成することができます。AutoCADの発行するイベントは、AutoCADエディタの利用状況や、図面データベースの更新など、様々な種類があります。ObjectARXではこれらすべてのイベントを自由に取得することが可能です。


外部図面(DWG)の読み込み
AutoCADは図面(DWG)ファイルを開くと、その図面(DWG)ファイルの内容をすべてメモリ内の図面データベースに展開し、格納します。この作業とまったく同等の作業をObjectARXでは実現できます。そのため、AutoCADの機能を経由せず、ObjectARXのプログラムだけで目的の図面をメモリー内に図面データベースとして展開し、ObjectARXで独自に操作可能とできます。


AutoCADのグラフィック操作
AutoCADエディタのグラフィック表示に関する機能も「オブジェクト」として作成されており、この機能も公開されております。そのため、AutoCADのグラフィック情報を独自にコントロールすることや、情報を取得することが可能です。重い3次元図形のデータを更新することなく、グラフィックのみを移動、回転させたり、グラフィック画面上にだけ描画される線などの作図も可能です。


ドキュメント管理
AutoCADはMDI(Multi Document Interface)のため、1つのAutoCADの中に複数の図面を読み込み、複数の図面を切り替えながら作業を行うことができます。ObjectARXではこのAutoCADに読み込まれた複数の図面ファイルをプログラムですべて管理することも可能です。そのため、複数の図面を同時に処理するプログラムなども、このドキュメント操作で対象図面を切り替えながら制御することができます。


拡張データ・ディクショナリの活用
AutoCADの図面データベース内に存在する「オブジェクト」は図形に限らず、プログラムによって「拡張データ」を付加することができます。これは任意の情報を各オブジェクト単体に付加できるため、非常に便利で用途も広く活用できます。この付加情報はAutoCADの図面ファイルにも保管されます。任意の情報を付加することで、図形などのオブジェクト単体に、「部品番号」や「価格」、「製作者」などの付加情報を追加することができます。また、「温度」や「重さ」、「材質」など図面では表現できない特別な特性を持たせることもできます。運用面では、オブジェクトを操作する際の「履歴」情報を保管したり、関連する図形同士の情報を保管することで、独自のグループ化なども実現できます。


図面データベースの拡張
ObjectARXは公開されたAutoCADの図面データベースのオブジェクトを操作することを目的とした開発手法です。逆に言うと、AutoCADの図面データベースのオブジェクトは、ObjectARXという形ですべて公開されております。オブジェクトの公開とは、そのオブジェクトの設計図にあたる「クラス」が公開されていることになります。
C++言語では設計図である「クラス」が存在する場合、その「クラス」から「派生」した「クラス」を簡単に定義することができます。「派生」した「クラス」はもとの「クラス」(ベースクラス)の情報を「継承」しているため、すでに定義済みの情報は自分で定義する必要はありません。AutoCADの「ベースクラス」にはすでに、「どのような手続きでAutoCADのオブジェクトになれるか」という基本情報は定義済みです。この「ベースクラス」から自分で新しい「クラス」を「派生」すれば、その「派生」した「クラス」には「どのような手続きでAutoCADのオブジェクトになれるか」という基本情報は「継承」されるため、自分で定義することなく、簡単にAutoCADのオブジェクトの設計図=「クラス」を設計できます。これは従来の「カスタマイズ」や「アプリケーション」という考え方ではなく、AutoCADの図面データベースを「拡張」できると考えた方が良いでしょう。簡単に言うと、自分の欲しいオブジェクトを実装させたAutoCADのバージョンアップがユーザにできてしまうのです。