コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
GizmoLab 関連
オンラインショップ
CAD&CGブログ
YouTube
GitHub
CAD 系
GizmoTools
AutoLISP
Visual LISP
BricsCADのLISP
GzLib
DCL
OpenDCL
DWG
DXF
CADのコマンド一覧
システム変数
図形の種類
Ver別サポートAPI
CAD用語集
メモ
newLISP
CommonLISP
Script-Fu
Inno setup
JavaScript
ANDROID
Windowsでのファイルハッシュ確認
Prolog
Python
Clojure
Electron
フォント
数学メモ
イメージサイズとメモリ量
blender
Processwire
Win10,11メモ
IIJmio
mediawiki資料
ヘルプ
検索
検索
表示
ログイン
個人用ツール
ログイン
ObjectARXのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
ObjectARX
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
ObjectARX (AutoCAD Runtime Extension) は、ADS 開発環境の後継となる形で登場した C++による AutoCAD アプリケーション開発用のプログラム環境。<br /> ObjectARX は、AutoCAD R14 から利用可能になり、多数のダイナミック リンク ライブラリ(DLL)を含むプログラミング環境で、DLL は AutoCAD と同じアドレス空間で実行され、コアとなる AutoCAD データ構造とコードを直接操作するようになっている。 これらのライブラリは、AutoCAD のオープン アーキテクチャを利用した形になっており、AutoCAD のデータベース構造や、グラフィックス システム、ジオメトリ エンジンに直接アクセスして、AutoCAD クラスと機能を実行時に拡張できる。 ObjectARX ライブラリを、AutoLISP や VBA のような他の AutoCAD プログラミング インタフェースと一緒に使用することができ、複数の API 間の統合も可能。 AutoCAD R13 以降にAutoCAD 自身の開発言語がC++ 言語に替わり、それ以降 C++ 言語によるオブジェクト指向 API を提供を開始していった経緯があり、ObjectARX が持つ C++ クラスライブラリは、AutoCAD 自身のクラスライブラリと一部を除いて同一であるため、API 中では最も強力なカスタマイズが可能になっている。 最終生成ファイルである .arx ファイルは、拡張子を変更したダイナミックリンクライブラリ(.dll )で、AutoCAD 上にロードすることで利用可能となり、AutoCAD とメモリを共有して同一プロセスで動作する。 従って、アプリケーションがクラッシュすると必然的に AutoCAD もクラッシュするので、高品質の開発技術が望まれる。 DLL を使用する事で、AutoCAD の組み込みコマンドとまったく同じように操作できる新しいコマンドを作成できる他、AutoCAD 上の操作をイベントとして取得して、イベントドリブンな処理を行うリアクタの実装や、LINE 、CIRCLE など、AutoCAD が持つオブジェクトと同じよう振舞う"カスタムオブジェクト"を定義することができる。(* 定義した"カスタムオブジェクト"の扱いには注意が必要。) また、Visual C++ に添付されているクラスライブラリの MFC を利用して、ユーザインタフェーイス を実装したり、COM 拡張によってVBA のオブジェクトモデルを拡張できることも大きな強みとなっている。 ObjectARX の SDK は、Autodesk の Web サイト http://www.autodesk.com/objectarx から無償でダウンロード可能。 ObjectARX SDK の中身は、膨大でとても個人の片手間プロジェクトで書ききれる内容ではないので当サイトでは中身の解説はしません。 == ObjectARX の構成 == ObjectARX 環境の基本的なクラスと関数のグループ。 * AcRx ・・・ アプリケーションのバインドと、ラインタイム クラス登録およびランタイム クラス識別に使うクラス * AcEd ・・・ ネイティブ AutoCAD コマンドの登録と AutoCAD イベント通知のためのクラス * AcDb ・・・ AutoCAD データベース クラス * AcGi ・・・ AutoCAD エンティティをレンダリングするためのグラフィックス クラス * AcGe ・・・ 一般的な線形代数オブジェクトやジオメトリ オブジェクト用のユーティリティ クラス == ObjectARXの開発環境 == :{| class="wikitable" ! AutoCAD製品 !! IDE !! コンパイラ |- | AutoCAD 2000/2000i/2002 || Visual Studio 6 || VC 6 |- | AutoCAD 2004/2005/2006 || Visual Studio 2003(.NET) || VC7 |- | AutoCAD 2007/2008/2009 || Visual Studio 2005 || VC8 |- | AutoCAD 2010/2011 || Visual Studio 2008 || VC9 |- | AutoCAD 2012/2013/2014(?) || Visual Studio 2010 || VC10 |} ==AutoLISP からの ObjectARX アプリケーションの実行== ObjectARX アプリケーションは、[[AutoLISP]] が外部関数として認識している関数セットを、acedDefun() を使用して定義することができる。アプリケーションがロードされると、組み込みまたはユーザ定義の AutoLISP 関数の呼び出しとまったく同じように、外部関数を呼び出すことができる。 AutoLISP 変数は引数として外部関数に渡され、外部関数が結果を返す。外部関数は、キーボードから、またはポイント デバイスを使用してポイントやオブジェクトを指定して、データを入力するようにユーザに指示することもでき、さらに外部関数は、Windows ヘルプを設定することもできる。 外部関数は、対話形式に加えて、AutoLISP 関数を使用して呼び出すことができる。ObjectARX アプリケーションは、AutoLISP 関数を呼び出すことができない。ObjectARX アプリケーションは、AutoLISP シンボルの値を検索して設定できる (シンボルのデータ タイプは、C++ プログラムが認識できるものでなければならない)。 ObjectARX アプリケーションは、AutoLISP と同じ C:XXX 規則を使用して、新しい AutoCAD コマンドを定義できる。外部関数を呼び出すには、コマンド プロンプトで括弧を使わずに名前を入力する。 外部関数を定義すると、同じ名前の古い定義は新しい定義に置き換えられる。2 つの ObjectARX アプリケーションが同じ名前で関数を定義すると、最初にロードされるアプリケーションの関数は失われ、2 番目のアプリケーションをロード解除すると重複した関数は無くなるため呼び出せない。 ----- *互換CAD の ObjectARX 的(互換)な API も整備されつつある。 ** [[Teigha_Extension]] … ODA の API ** [[DRX]] … ODA の API(Teigha_Extension の前身) ** [[IRX]] … IntelliCAD の API
ObjectARX
に戻る。
検索
検索
ObjectARXのソースを表示
話題を追加