development of

Tieghaに関する備忘録とおまけ

【IJCAD】COMの機能をもっと楽に活用する

COM 相互運用機能とは

.NET API で開発を進めるときに、GrxCAD.Interop.dll を参照することで、COM の機能を使用することができるようになります。

COM 相互運用機能を使用することで、過去に VBA を使用して開発を進めていたときのコードを、一部を書き換えるだけで簡単に .NET API へ移植することができます。

COM の機能を活用する

.NET API ではオブジェクト範囲にズームを実装するのが多少面倒なんですが、COM には標準の関数として ZoomExtents メソッドが存在しています。

現在アクティブな空間のオブジェクト範囲を取得して、アクティブなビューをオブジェクト範囲から計算した幅と高さに変更するという処理を実装する位なら、COM の ZoomExtents メソッドを呼び出す方が楽です。

ただ、COM 相互運用機能を使用するために参照する GrxCAD.Interop.dll ですが、このライブラリは 32bit 用と 64bit 用で分けられていて、使用する IJCAD に合わせて参照設定を変更する必要があります。

もっと楽にCOMの機能を使用する

.NET Framework 4.0 から動的言語ランタイムが追加されました。これによって GrxCAD.Interop.dll を参照しなくても、簡単に COM のメソッドを呼び出せるようになりました。

例えば ZoomExtents メソッドを呼び出すには次のようなコードになります。

((dynamic)Application.AcadApplication).ZoomExtents();

Application.AcadApplication プロパティの値を dynamic にキャストして ZoomExtents メソッドを呼び出しています。