AUTOCADをエクセルからVBAで制御する場合 モジュールの定義、アプリケーションの指定
AUTOCADのHELPのサンプルをエクセルのVBAで制御する場合
下記の内容を追加することでエクセルから制御できることがわかりました。
参照設定には、AutoCad 2006 Type Libraly (2006の場合)を設定しておきます。
モジュールの定義とアプリケーションを指定して
サンプルで、ThisDrawingと記載してあるところを、AcadDoc と指定します。[xls変更]
エクセルのVBAに追加する行[xls追加]
AcadAPPは、AUTOCADのアプリケーションを指定。
AcadDocは、ActiveDocumentを指定。現在使用中のAutocadの図面。
あとは、サンプルの例を、利用できるようになります。
ただし、リージョンをオブジェクトにSetする場合には、Entryを経由して行わないと出来ませんでした。
たとえば、ポリラインを直接 リージョンにSetすることが、出来ませんでした。
サンプルでは、2つのポリラインからリージョンにSetするものがありましたが、
使いたかったのは、ポリラインから押し出しをするためのリージョンでしたので、
いろいろ調べた結果、Entryを経由する方法でした。
' モジュール定義 [xls追加]
Private AcadDoc As AutoCAD.AcadDocument
' AutoCAD アプリケーション変数 [xls追加]
Private AcadApp As AutoCAD.AcadApplication
sub test() 抜粋
' ブロックを定義
Dim blockObj As AutoCAD.AcadBlock
Set AcadApp = GetObject(, "AutoCAD.Application") '[xls追加]
Set AcadDoc = AcadApp.ActiveDocument() '[xls追加]
' 例
'Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock")
Set blockObj = AcadDoc.Blocks.Add(insertionPnt, "CircleBlock") '[xls変更]
' 例
'Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
Set blockRefObj = AcadDoc.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0) '[xls変更]
現在は、ブロックの属性のあたりを調べているのですが、今のところ進展はありません。
ブロックを呼び出して配置することは出来るのですが、その属性を変更したりすることがうまくいっていません。
今後の課題です。
コメント
コメントを投稿