0

Autocad の VBA でプログラミングしていますが、今日まで、VB.NET で線を作成または挿入する方法が見つかりません。

VB.NET には、acad ファイルを使用するための 2 種類の概念があることがわかりました。

  1. 使用: AcApplication.DocumentManager.MdiActiveDocument;

  2. このようなものを使用すると、複数のファイルのトランザクションとして、フォルダーのすべてのファイルがデータベースとして宣言され、ブロックテーブルと変更がトランザクションとして宣言されるため、概念について少し迷っているかもしれませんが、VB.NET は初めてです

多くの図面を修正する必要があるため、VB.NET で線または円を作成し、概念 2 をデータベースとして使用して DXF 図面に挿入する方法のサンプルが必要です。

For Each Filedxf As IO.FileInfo In Modfiles 
Try 
    Change = False 
    Dim MyDB As New Database(False, True) 
    MyDB.DxfIn(Filedxf.FullName.ToString, IO.Path.Combine(PathToChange, "dxf.log")) 
    Using MyTrans As Transaction = MyDB.TransactionManager.StartTransaction 
        Dim MyBT As BlockTable = MyDB.BlockTableId.GetObject(OpenMode.ForRead) 
        For Each MyBTRId As ObjectId In MyBT 
            Dim MyBTR As BlockTableRecord = MyBTRId.GetObject(OpenMode.ForRead) 
            For Each cadID As ObjectId In MyBTR 
                Select Case cadID.ObjectClass.DxfName.ToUpper 
                    Case "TEXT" 
                        Dim MyText As DBText = cadID.GetObject(OpenMode.ForWrite) 
                        Select Case MyText.Layer.ToUpper

助けてくれてどうもありがとう

4

2 に答える 2

0

開始するのに適した場所はここです

http://exchange.autodesk.com/autocad/enu/online-help/browse

Google がモデル空間に線を挿入します。レイヤ プロパティの変更、および transaction.GetObject()

それはあなたに良いスタートを与えるでしょう。

于 2013-07-29T23:41:35.133 に答える
0

AutoCAD 相互運用機能は、新しい ObjectARX dll を参照することでアクセスできます。線の描画、ブロックの追加、またはその他の AutoCAD 機能のコードは、過去数年間、ほとんど変更されていません。

VB からできることの一部:

Imports Autodesk.AutoCAD.Interop
Imports AutoCAD

'drawing lines
'Set start point x:y:z coordinates
Dim sPoint(2) As Double 'Declare start point
sPoint(0) = X1 : sPoint(1) = Y1 : sPoint(2) = Z1
'Set end point x:y:z coordinate
ePoint(0) = X2 : ePoint(1) = Y2 : ePoint(2) = Z2


'Drawing lines
temp = ThisDrawing.ModelSpace.AddLine(sPoint, ePoint)
'changing layer for new object
temp.Layer = "LONGDASH"

'setting layer
ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item(11)

' Adding blocks
Dim dblRotate As Double

Dim temp As AcadBlockReference
'Call Block_Detector(blockName)
'convert rotation to radians
dblRotate = ThisDrawing.Utility.AngleToReal(CStr(dblRotation), AcAngleUnits.acDegrees) '* 3.141592 / 180#

sPoint(0) = X 'Set start point x coordinate
sPoint(1) = Y 'Set start point y coordinate
sPoint(2) = Z 'Set start point z coordinate

'Set temp = ThisDrawing.Blocks.Add(sPoint, blockName)
temp = ThisDrawing.ModelSpace.InsertBlock(sPoint, blockName, 1, 1, 1, dblRotate)

詳細については、AutoCAD 開発者ガイドを参照してください。

于 2014-09-10T14:57:34.543 に答える