お知らせ

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

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

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

2010年1月23日土曜日

.NET(基本)(AutoCAD 2010)

オートデスク社の Webサイト(Microsoft Visual Basic for Applications Module FAQ)に以下の記述があります。
What is the status of VBA support in the AutoCAD 2010 product line?
Autodesk has begun the transition of VB customization from VBA to .NET technology. This transition will occur over a few years. During this time, Autodesk will provide documentation and other assistance to help our customers and developers migrate from VBA to this new automation technology.
オートデスク社は VBA から .NET への移行を始めているということのようです。

管理人は、AutoLISP でカスタマイズを行ったことはありますが、その他の言語でのカスタマイズは行ったことがありません。
AutoLISP はずっと昔からある古い言語なので、新しいカスタマイズにチャレンジしようかと思っています。

そこで、VBA は .NET に移行されるということのようなので、.NET をいちからやってみようと思います。きっと、分からない事だらけで、なかなか進まないと思いますが、地道にコツコツやっていこうかと思います。

とりあえず管理人がやってみたことをそのまま書くだけですので、あくまでも参考ということで見てください。(初心者なので間違いや勘違いがあると思いますので。。。)

環境の準備
まずは、環境の準備から始めようと思いますが、いったい何が必要なのでしょうね???(なにぶん初心者なので。。。)

とりあえず、オートデスク社の Web サイトの ここ に「AutoCAD .NET デベロッパガイド(日本語) 」(acad_mdg.zip)があるので、これをダウンロードして解凍した acad_mdg.chm を C:\Program Files\AutoCAD 2010\Help フォルダに置いて、中を見てみました。
※ Help フォルダに置かないと、ちゃんと内容を表示できないので注意!!
まずは、acad_mdg.chm でこんな記述を見つけました。
Microsoft Visual Studio には複数のバージョンおよびエディションがあります。AutoCAD 2010 対応の .NET API を使用するには、次を使用する必要があります。
・ Microsoft Visual Studio 2008 Service Pack 1
・ Microsoft .NET Framework 3.5 Service Pack 1
管理人の OS は、Windows 7 なので .NET Framework 3.5.1 が元からはいっているので、Microsoft .NET Framework 3.5 Service Pack 1 は気にしなくていいでしょう。(他の OS の場合も、AutoCAD 2010 と一緒にインストールされますから気にしなくていいでしょう。)

Microsoft Visual Studio 2008 Service Pack 1 に関しては、無償版で Microsoft Visual Studio 2008 Express Edition というものがあるようなので、これにしましょう。(有償版の方がいいようですが、初心者としてはやっぱり無償版がいいです。)

そこで、http://www.microsoft.com/japan/msdn/vstudio/express/ から Microsoft Visual Studio 2008 Express Edition を入手してインストールを開始したところ、以下の画面になりました。

どれを選べばいいんでしょうね???
とりあえず、Visual Basic 2008 をインストールしてみました。

では、さっそく Visual Basic 2008 を起動してみました。
で、このあとどうすればいいんでしょう???

参照の追加(AcDbMgd.dll、AcMgd.dll、AcCui.dll)
何が何だかわからないので、とりあえず手探りで [ファイル]-[新しいプロジェクト] を選択したあと、クラス ライブラリを選択して、test01 というプロジェクト名にして OK ボタンをクリックしました。
acad_mdg.chm にこんな記述を発見しました。
AutoCAD .NET API の DLL ファイルのうち、主に次の 3 つを頻繁に使用します。
・ AcDbMgd.dll: 図面ファイル内のオブジェクトの操作に使用します。
・ AcMgd.dll: AutoCAD アプリケーションの操作に使用します。
・ AcCui.dll: カスタマイズ ファイルの操作に使用します。
ということで、[プロジェクト]-[参照の追加] で、[参照] タブを選択して上記の 3 つの dll ファイルを選択して OK ボタンをクリックしました。
サンプル プログラムを元にして DLL ファイルを作成
で、まずはサンプルを探してやってみようと思い、acad_mdg.chm を探してこんなコードを見つけました。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry

<CommandMethod("AngleFromXAxis")> _
Public Sub AngleFromXAxis()
Dim pt1 As Point2d = New Point2d(2, 5)
Dim pt2 As Point2d = New Point2d(5, 2)

Application.ShowAlertDialog("Angle from XAxis: " & _
pt1.GetVectorTo(pt2).Angle.ToString())
End Sub

ということで、さっそくカット&ペーストです。
Class1.vb にまるごとカット&ペーストしてみましたが、「<CommandMethod("AngleFromXAxis")> _」と「Public Sub AngleFromXAxis()」に波線が入って、「名前空間のステートメントが無効です。」というエラーになってしまいました。
Class1.vb には元々以下の内容があったので、消しちゃいけないんですね、きっと。

Public Class Class1

End Class

ということで、この記述は残して、こんな感じにしました。

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Geometry
Public Class Class1
    <CommandMethod("AngleFromXAxis")> _
    Public Sub AngleFromXAxis()
        Dim pt1 As Point2d = New Point2d(2, 5)
        Dim pt2 As Point2d = New Point2d(5, 2)

        Application.ShowAlertDialog("Angle from XAxis: " & _
        pt1.GetVectorTo(pt2).Angle.ToString())
    End Sub
End Class

今度は、エラーなしです。

で、[ファイル]-[すべて保存] を選択して、test01 という名前で保存です。

そうすると、C:\Users\acadvideo\Documents\Visual Studio 2008\Projects\test01\test01\bin\Debug フォルダに test01.dll というファイルが出来ました。
これをロードすればいいんですねきっと。

AutoCAD で実行
test01.dll ができたので、さっそく AutoCAD で実行です。

まずは、AutoCAD を起動して、NETLOAD[.NET アプリケーション ロード] コマンドを実行です。
さっきできた test01.dll を選択して、[開く] ボタンをクリックしてロードです。

<CommandMethod("AngleFromXAxis")> _」という記述があったので、AngleFromXAxis と入力すると、作成したコマンド(AngleFromXAxis)が実行されて、 こんな AutoCAD メッセージが表示されました!!
なんとかコマンドを作れてよかったです!!

0 件のコメント:

コメントを投稿