コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
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 ・・・ 一般的な線形代数オブジェクトやジオメトリ オブジェクト用のユーティリティ クラス * ADS ・・・ AutoCAD アプリケーションを作成するための C ライブラリ。ARX アプリケーションは通常エンティティの選択などの操作にこのライブラリを使用して、選択セット操作やデータを取得する。 == ObjectARXの開発環境 == :{| class="wikitable" ! AutoCAD !! BricsCAD !! IJCAD !! IDE !! コンパイラ |- | 2000/2000i/2002 || - || - || Visual Studio 6 || VC 6 |- | 2004/2005/2006 || - || - || Visual Studio 2003(.NET) || VC7 |- | 2007/2008/2009 || - || - || Visual Studio 2005 || VC8 |- | 2010/2011 || - || 8/2013 || Visual Studio 2008 || VC9 |- | 2012/2013/2014 || - || 2014/2015/2016/2017/2018/2019 || Visual Studio 2010 || VC10 |- | 2015/2016 || V16/V17/V18 || - || Visual Studio 2012 / 2013 || VC11 |- | 2017/2018 || - || - || Visual Studio 2015 || VC14 |- | 2019/2020|| V19/V20/V21 || 2020/2021/2022/2023 || Visual Studio 2017 Update 2 || VC14.1 |- | 2021/2022/2023|| V22/V23 || - || Visual Studio 2019 || VC16 |} ==AutoLISP からの ObjectARX アプリケーションの実行== ObjectARX アプリケーションは、[[AutoLISP]] が外部関数として認識している関数セットを、acedDefun() を使用して定義することができる。アプリケーションがロードされると、組み込みまたはユーザ定義の AutoLISP 関数の呼び出しとまったく同じように、外部関数を呼び出すことができる。 AutoLISP 変数は引数として外部関数に渡され、外部関数が結果を返す。外部関数は、キーボードから、またはポイント デバイスを使用してポイントやオブジェクトを指定して、データを入力するようにユーザに指示することもでき、さらに外部関数は、Windows ヘルプを設定することもできる。 外部関数は、対話形式に加えて、AutoLISP 関数を使用して呼び出すことができる。ObjectARX アプリケーションは、AutoLISP 関数を呼び出すことができない。ObjectARX アプリケーションは、AutoLISP シンボルの値を検索して設定できる (シンボルのデータ タイプは、C++ プログラムが認識できるものでなければならない)。 ObjectARX アプリケーションは、AutoLISP と同じ C:XXX 規則を使用して、新しい AutoCAD コマンドを定義できる。外部関数を呼び出すには、コマンド プロンプトで括弧を使わずに名前を入力する。 外部関数を定義すると、同じ名前の古い定義は新しい定義に置き換えられる。2 つの ObjectARX アプリケーションが同じ名前で関数を定義すると、最初にロードされるアプリケーションの関数は失われ、2 番目のアプリケーションをロード解除すると重複した関数は無くなるため呼び出せない。 == 互換CAD における ObjectARX互換 == * 互換CAD において、AutoCAD用に開発された ObjectARX のプログラムの移植は、軽微な修正+コンパイルのしなおしだけで移植して利用できるというレベルの幅も広がってきており、移植の敷居は年々下がってきている。移植可能な範囲もよく使われる範囲は問題なくなっている状態。(2023 年現在) * Bricsys Teigha eXtension (TX) SDK … BricsCAD用に調整された [[Teigha_Extension]]。 基本 Teigha Extension と同じだけど局所的にちょっと違う。 * [[BRX]] … BricsCAD の API * [[DRX]] … ODA の API(Teigha Extension の前身) * [[GRX]] … IJCAD の API * [[IRX]] … IntelliCAD の API * [[NRX]] … NanoCAD の API * [[Teigha_Extension]] … TX。ODA の API ** TX はグラフィカルな部分はサポートされていないので、ARX 相当の APIとするにはその辺りを補う必要がある。互換CADでは、大概 TX + CAD独自の Runtime Extension で ARX 相当の機能提供をしている。 * [[ZRX]] … ZWCAD の API
ObjectARX
に戻る。
検索
検索
ObjectARXのソースを表示
話題を追加