Imports Autodesk.AutoCAD.RuntimeImports Autodesk.AutoCAD.ApplicationServicesImports Autodesk.AutoCAD.DatabaseServicesImports Autodesk.AutoCAD.GeometryImports Autodesk.AutoCAD.EditorInputPublic Class hackeruler
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput
Public Class hackeruler
<CommandMethod("test1")> _
Public Sub CreateEmployee1() ’首先声明我们要使用的对象
MsgBox("湖南省公路设计有限公司", , "hackeruler")
Dim li As Line ’这个是我们要加入到模型空间
Dim btr As BlockTableRecord ’我们必须打开模型空间
Dim bt As BlockTable ’要打开模型空间,我们必须通过块表(BlockTable)来访问它
’我们使用一个名为‘Transaction’的对象,把函数中有关数据库的操作封装起来
Dim trans As Transaction
’使用TransactionManager的StartTransaction()成员来开始事务处理
trans = HostApplicationServices.WorkingDatabase().TransactionManager.StartTransaction()
li = New Line(New Point3d(0, 0, 0), New Point3d(2, 2, 0))
’我们需要获得块表和模型空间对象
’注意我们是用事务处理的成员GetObject来获取它们的
bt = trans.GetObject(HostApplicationServices.WorkingDatabase.BlockTableId, OpenMode.ForRead)
’现在,我们声明了一个ObjectId对象用来表示模型空间块表记录…
Dim btrId As ObjectId = bt.Item(BlockTableRecord.ModelSpace)
’使用这个ObjectId对象来获取块表记录对象–注意我们是打开它用来写入
btr = trans.GetObject(btrId, OpenMode.ForWrite)
’现在使用btr对象来加入直线
btr.AppendEntity(li)
trans.AddNewlyCreatedDBObject(li, True) ’ 并确定事务处理知道要加入直线!
trans.Commit() ’ 一旦完成以上操作,我们就提交事务处理,这样以上所做的改变就被保存了……
trans.Dispose() ’ …然后销毁事务处理,因为我们已经完成了相关的操作(事务处理不是数据库驻留对象,可以销毁)
End Sub