フォローする

.NET - COMの機能を使用する

更新 : 2017-10-26 06:07:58 UTC

IJCAD の .NET API では、COM の機能を使用することが可能で、
例えばメニューのロードや、ズームを行いたいときに使用することが考えられます。

.NET プロジェクト内で COM の機能を使用するためには、参照の追加を行う必要があり、
IJCAD のプラットフォームに合わせた GRXSDK 内の GrxCAD.Interop.dll や、
COM の一覧から IJCAD 2017 の場合は、GCAD2017 Object Library を追加します。

また当然のことながら、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);
	}
}

 

ただし、実際使用するには注意しなければならない点も多くあります。
例えば、プロパティ名やメソッド名が、間違って入力していた場合でもビルドが通り、
実行された時に '○○'の定義がありません といった例外が発生します。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

コメント