私はドット ネット 3.50 で autocad アドオンを作成し、autocad 2012 から acdbmgd.dll,acmgd.dll を参照しています。 autocad 2010 の dll 私はちょうど autocad 2012 を持っていますが、どこでこの dll を入手できますか?
4 に答える
AutoCAD 2010で2008ライブラリを使用することにある程度成功したので、AutoCAD 2010のライブラリを使用するのがおそらく最善の策ですが、動作が保証されているわけではありません。それはあなたが何をしているかに正確に依存します。
ライブラリは、ObjectARX2010パッケージの一部としてAutodeskDeveloper Center(ページの下部)からダウンロードできます。必要に応じて、そこからObjectARX2011を入手することもできます。
AutoCAD アドオンの寿命が長いのは、AutoLISP のおかげです。私は 1995 年に書いたツールを持っていますが、それらは今でも修正なしで強力に調理されています。
.Net API は ActiveX API よりも互換性がありますが、まだいくつかの違いがあります。
リフレクションを使用して関数を呼び出す (名前で呼び出す) ことはいつでもできますが、実行する必要のあるチェックがたくさんあり、アプリを作成するには多くの作業が必要になります。すべてのバージョンで同じように反応します。
あなたの最善の策(少なくとも私がすること)は、必要な機能ごとにラッパークラスを作成することです。たとえば、円を操作する「MyCircle」クラスを作成し、このクラス内で汎用関数 (例:「ChangeThickness(int newThickness)」) を作成し、そこでリフレクション コードを実行します。インストールされている AutoCAD のバージョンに応じて呼び出し方法を制御します (たとえば、AutoCAD の特定のバージョンでは、バグが含まれているために特定の関数を呼び出さないようにするなど)。これにより、AutoCAD のすべてのバージョンで再利用できる拡張可能な画層が作成され、API の変更をサポートできるようになります。
私は2012年と2013年にこれを行います。それらの間にはいくつかの違いがあります。
私は通常、2つのプロジェクトを開始します。1つは2012 Acad.NETウィザードで、もう1つは2013Acad.NETウィザードで開始します。
両方を同時に更新する
ほとんどの場合、コピーして貼り付けるだけの場合もあります。たとえば、Civil3d2012でCivil3d2012に進化したCo-GoポイントAPIがない場合は、2013年のように追加されたため、コードを少し変更する必要があります。 2013年に動作するビット。