如何正确删除ACAD DBObjects?

时间:2015-02-04 16:17:59

标签: .net vb.net autocad-plugin objectarx

在网上找到一些东西后,我自己发现了这个。我花了一段时间,但对于任何想知道如何做的人,请看下面。 此外,我发布的代码有一个很大的问题,它从未在其中声明acText。我也错误地将它设置为等于acadObj。它需要根据具体情况进行设置。以下是我的删除代码。它与打开工作数据库编辑器有关。

Public Sub deleteDBObject(ByRef dbObj As DBObject)
    Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
    Dim db As Database = HostApplicationServices.WorkingDatabase
    Dim tm As Transaction = db.TransactionManager.StartTransaction()
    Try
        Dim ent As Entity = CType(tm.GetObject(dbObj.Id, OpenMode.ForWrite), Entity)
        ent.Erase()
        ent = Nothing
        dbObj = Nothing
        tm.Commit()
    Catch
    Finally
        tm.Dispose()
    End Try
    Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen()
End Sub

如果有人知道怎么做更好的方式,或者他们能解释为什么这样做会很热。

1 个答案:

答案 0 :(得分:1)

抱歉,但我不明白。由于您已经有一个DBObject(dbObj),如果它是一个数据库驻留对象,请调用它的Erase方法(dbObj.Erase());如果不是,请不要管它,.NET Framework的gc将处理它。