- 积分
- 5774
- 明经币
- 个
- 注册时间
- 2010-1-25
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 chmenf087 于 2011-8-13 00:48 编辑
情况是这样的,不知道大家有没有这样的情况在重载drawJig类实现拖拽的时候如果打开捕捉那么Jig的对象会飘走(呃,这点先不谈)。所以我用entityJig把对象加入block用块来实现拖拽,但是问题出现了,我想用一个固定的块名(blockJig)来实现很多个块的拖拽,所以拖拽完成一次后我会用以下代码删除没有了引用的块(blockJig)
Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
Dim ids As New ObjectIdCollection()
Using trans As Transaction = db.TransactionManager.StartTransaction
Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForWrite, False, True)
If bt.Has(blockName) = True Then
Try
ids.Add(bt(blockName))
db.Purge(ids)
trans.GetObject(ids(0), OpenMode.ForWrite, True, True).Erase(True)
trans.Commit()
Return True
Catch ex As Autodesk.AutoCAD.Runtime.Exception
trans.Dispose()
Return False
End Try
Else : Return False
trans.Dispose()
End If
End Using
但是当我再次拖拽创建(blockJig)名称的块时候错误出现了错误描述是“eDuplicateObjectName”,呃,反正就是说这个块名被占用了,不能创建。忘了从神马地方看到的,块表记录删除后必须dispose 掉database对象然后重新打开才能更新块名,这个我就有点奇怪了那么cad中的Purge命令清理未引用的块表记录时是怎么处理的呢。我到底该怎么实现我想要的效果呢——(blockJig)多次使用。
还有不知道为甚么有时候CAD的application.showmodellessdialog()显示不出窗体?
|
|