IJCAD の .NET API では、COM の機能を使用することが可能で、
例えばメニューのロードや、ズームを行いたいときに使用することが考えられます。
.NET プロジェクト内で COM の機能を使用するためには、参照の追加を行う必要があり、
IJCAD のプラットフォームに合わせた GRXSDK 内の GrxCAD.Interop.dll や、
COMの一覧からIJCAD20XXの場合は、GCAD20XX Object Libraryを追加します。
※「20XX」は同じバージョンを指定
また当然のことながら、64bit に合わせた場合は 32bit のIJCADでは使用できず、
同一のソースファイルで両方のプラットフォームに対応する為には、
複数のプロジェクトをソリューションの中に作成し、ソースを共有する必要があります。
ですが、COM の機能を処理の際に一時的に使用する場合では、
VB.NET の場合では Object 型を、C# の場合では dynamic 型を使用すると、
参照設定を追加することなく COM の機能を使用することも可能となり、
プラットフォームの違いを事を気にせずに開発を進めていくことが出来ます。
下の例では、COM の MenuGroups オブジェクトを使用しています。
VB.NET
-
<CommandMethod("SAMPLECMD")> Public Sub SampleCommand() Dim ed = Application.DocumentManager.MdiActiveDocument.Editor Dim MenuGroups = Application.MenuGroups Dim MenuGroup = MenuGroups.Item(0) Dim Menus = MenuGroup.Menus For idx As Integer = 0 To Menus.Count - 1 Dim Menu = Menus.Item(idx) ed.WriteMessage(vbLf + "Menu : {0}", Menu.Name) Next End Sub
- C#
-
[CommandMethod("SAMPLECMD")] public void SampleCommand() { var ed = Application.DocumentManager.MdiActiveDocument.Editor; dynamic MenuGroups = Application.MenuGroups; var MenuGroup = MenuGroups.Item(0); var Menus = MenuGroup.Menus; for(var idx = 0; idx < Menus.Count; idx++) { var Menu = Menus.Item(idx); ed.WriteMessage("\nMenu : {0}", Menu.Name); } }
ただし、実際使用するには注意しなければならない点も多くあります。
例えば、プロパティ名やメソッド名が、間違って入力していた場合でもビルドが通り、
実行された時に '○○'の定義がありません といった例外が発生します。