2013-04-25 1 views
0
내가 트랜잭션 클래스를 사용하여 라인을 그리기하고

을 트랜잭션 클래스를 사용하지 않고 VB에서 선 그리기 내 작업 중 하나가 나를 도울 수있는 거래 를 사용하지 않고 라인을 만드는 것입니다AutoCAD를

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 

...

+0

이것은 분명히 누군가의 숙제입니다. 트랜잭션 외부에서 AutoCAD 데이터베이스를 수정하지 마십시오. –

답변

1

당신은 액티브 X 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 
0

Autodesk.Autocad.InteropAutodesk.Autocad.Interop.Common 참조와 네임 스페이스를 사용합니다.

원하는 문서 as AcadDocument에 액세스하십시오.

Dim Doc as AcadDocument 'and set it to the document you want 
Doc.ModelSpace.AddLine(...parameters...) 

사용중인 오토 캐드의 버전에 따라 응용 프로그램 as AcadApplication에 액세스 할 수 있습니다. (그리고 acadapplication 인스턴스에서 당신은 Documents을 얻습니다)