お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2010年5月21日金曜日

AutoCAD 2011 .Net Wizards を使用して .NET プロジェクトを作成(AutoCAD 2011)

今日は、AutoCAD Managed VB Application Wizard っていうのを使用して .NET プロジェクトを作成できるようなので、それを試してみた結果を書こうかと思います。

まずは、Developer Center にある 「AutoCAD 2011 .Net Wizards.zip」 をダウンロードして、それに含まれる AutoCAD 2011 dotNET Wizards.msi を実行してインストールです。

すると、こんなメッセージがでて、ちゃんとインストールできませんでした。

管理者権限で、Windows 7 にログインしてるんですけど。。。

ぶつぶつ言ってもしょうがないので、コマンド プロンプトを 「管理者として実行」 で起動して、そこから AutoCAD 2011 dotNET Wizards.msi を実行してみました。

すると、今度は問題なくインストールが完了しました。


ということで、早速 Visual Studio 2008 を起動です。


[ファイル] - [新しいプロジェクト] で [新しいプロジェクト] ダイアログを表示して、[Vusual Basic] を選択すると、[AutoCAD 2011 plug-in] というテンプレートがでてきたので、これを選んで OK です。

そうすると、[AutoCAD .NET Wizard Configurator] ダイアログが表示されるので、[Spacify the location of the ...] のことろに ObjectARX 2011 の inc フォルダを指定して Ok です。

これで、プロジェクトが開かれるのですが、ここでは既に参照設定に AcDbMgd と AcMgd が追加されているので、参照設定は何もする必要がないみたいです。

で、MyCommands.vb っていうのがあったので、これを見てみると、こんな記述がありました。
<CommandMethod("MyGroup", "MyCommand", "MyCommandLocal", CommandFlags.Modal)> _
Public Sub MyCommand() ' This method can have any name
    ' Put your command code here
End Sub
ここに、自分で作ったコマンドを入れるってことですね。

ということで、まずはコマンドの定義のところを以下のように変更しました。
<CommandMethod("acadvideo", "test0521", "MyCommandLocal", CommandFlags.Modal)> _
Public Sub test0521() ' This method can have any name

また、ソリューション エクスプローラにある myCommands.res をダブルクリックして myCommands.res を表示して、MyCommand を test0521 に変更しました。


そして、「' Put your command code here」の下に以下を記述してみました。

'' Get the current document and database
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database

'' Start a transaction
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

    '' Open the Block table for read
    Dim acBlkTbl As BlockTable
    acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)

    '' Open the Block table record Model space for write
    Dim acBlkTblRec As BlockTableRecord
    acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)

    '' Create a line that starts at 5,5 and ends at 12,3    Dim acLine As Line = New Line(New Point3d(5, 5, 0), New Point3d(12, 3, 0))    acLine.SetDatabaseDefaults()

    '' Add the new object to the block table record and the transaction
    acBlkTblRec.AppendEntity(acLine)
    acTrans.AddNewlyCreatedDBObject(acLine, True)

    '' Save the new object to the database
    acTrans.Commit()
End Using

AutoCAD にロードして test0521 コマンドを実行してみたところ、問題なく線分が作成されました。

このテンプレートを使えば、簡単に作れますよってことですね。

2 件のコメント:

  1. .NET Wizards インストール時のエラーは、Windows Vista と Windows 7 上で発生する問題です。
    インストール時には、管理者権限に加えて、Windows の ユーザ アカウント制御(UAC)をオフにして実行すると、正しくインストールできるはずです。

    返信削除
  2. コメントありがとうございます。
    なるほど。そうやってインストールすればいいんですね。

    返信削除