1

オンラインでいくつかのものを見つけた後、これを自分で見つけました。少し時間がかかりましたが、その方法を知りたい人は以下を参照してください。また、私が投稿したコードには、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

誰かがそれをより良い方法で行う方法を知っている場合、またはこれが機能する理由を説明できる場合は、それが熱くなります.

4

1 に答える 1

1

申し訳ありませんが、わかりません。すでに DBObject(dbObj) があるので、それがデータベース常駐オブジェクトである場合は、その Erase メソッド (dbObj.Erase()) を呼び出します。そうでない場合は、そのままにしておくと、.NET Framework の gc が処理します。

于 2015-02-28T06:46:15.313 に答える