为何加入多义线总出错
 ublic Function addpl()Dim db As Database = HostApplicationServices.WorkingDatabase()
Dim trans As Transaction = db.TransactionManager.StartTransaction()
MsgBox("0")
Try
Dim pl As New Circle(New Point3d(0, 0, 0), Vector3d.ZAxis, 100)
MsgBox("1")
Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead)
MsgBox("2")
Dim btrid As ObjectId = bt.Item(BlockTableRecord.ModelSpace)
Dim btr As BlockTableRecord = trans.GetObject(btrid, OpenMode.ForWrite)
MsgBox("3")
Dim ObjId As ObjectId
MsgBox("4")
ObjId = btr.AppendEntity(pl)
MsgBox("5")
trans.AddNewlyCreatedDBObject(pl, True)
MsgBox("6")
trans.Commit()
Catch ex As Exception
MsgBox("pl error.")
Finally
trans.Dispose()
End Try
End Function
上面程序中红色代码总出错。请高手指点。
我可按照教程一个字都不差,不知为什么就是不行。 好像是这样吧?
Dim btr As BlockTableRecord = trans.GetObject(db.CurrentSpaceID, OpenMode.ForWrite)
谢谢楼上的弟兄回复。但我试了还是不行。我将OpenMode.ForWrite换成OpenMode.ForRead就好了,但下面出错。因为不是以写方式打开的。是什么毛病? 这是我在C#里面的代码:(成功的)复制代码 Dim btr As BlockTableRecord = trans.GetObject(btrid, OpenMode.ForWrite)
改写为下面试试
Dim btr As BlockTableRecord = (BlockTableRecord)trans.GetObject(btrid, OpenMode.ForWrite)
我的意思是加一步显式转换,我忘了VB是不是这样转换了,C#是
谢谢楼上的给出主意,我再试试看。
我今天看了看。bt(btr.ModelSpace)在我的程序中是READONLY属性。请教大侠怎么才能将其也为非只读的。我想只要是非只读就不会有问题了。
解决了,是我将这个函数放到模块下导致的,我将其放入CLASS1下就好了。但这样我在别的窗体下没法调用了。请教各位高手如何调用?
是我太水了。呵……
这个问题彻底解决了。呵…… 是CAD焦点的问题。在我调用这段代码的时候CAD失去了焦点。唉!!!!
如何设置焦点呢??
页:
[1]