Reputation: 31
I am Drawing a line using transaction class
Public Sub CreateLine()
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), _
OpenMode.ForWrite)
procedure(acTrans, acBlkTblRec, 11, 3, 0, 5, 5, 0)
acTrans.Commit()
End Using
End Sub
Private Sub procedure(ByVal var1 As Transaction, ByVal var2 As BlockTableRecord, ByVal x As Double, ByVal y As Double, ByVal z As Double, ByVal x1 As Double, ByVal y1 As Double, ByVal z1 As Double)
Dim ac As Line = New Line(New Point3d(x, y, z), _
New Point3d(x1, y1, z1))
var2.AppendEntity(ac)
var1.AddNewlyCreatedDBObject(ac, True)
End Sub
My task is to create line without using transaction can any one help me...
Upvotes: 0
Views: 3429
Reputation: 86600
Use the Autodesk.Autocad.Interop
and Autodesk.Autocad.Interop.Common
references and namespaces.
Access the desired document as AcadDocument
.
Dim Doc as AcadDocument 'and set it to the document you want
Doc.ModelSpace.AddLine(...parameters...)
Depending on what version of Autocad you're using, you can access the Application as AcadApplication
. (And from the acadapplication instance you get Documents
)
Upvotes: 0
Reputation: 13306
You can use the ActiveX API:
<CommandMethod("DRAWLINE")> _
Public Sub DrawLine()
Dim acadApp As Object
acadApp = Application.AcadApplication
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = 1.0 : startPoint(1) = 1.0 : startPoint(2) = 0.0
endPoint(0) = 5.0 : endPoint(1) = 5.0 : endPoint(2) = 0.0
acadApp.ActiveDocument.ModelSpace.AddLine(startPoint, endPoint)
End Sub
Upvotes: 1