![]() |
【转帖】如何删除数据库实体?
如何删除数据库实体?
www.dimcax.com 如何删除数据库实体? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <commandmethod("tlssb")> public shared sub tlsselectionsetbreak() dim ptm as new tlstm dim obj, pnt as object ptm.starttrans() try dim pid as objectid dim plength as double dim pcurve as curve dim pnts as new point3dcollection dim i as curve ptm.openblocktablerecord(blocktablerecord.modelspace) ptm.utility.getentity(obj, pnt) pid.oldid = obj.objectid pcurve = pid.open(openmode.fornotify, false, true) plength = pcurve.getdistatpoint(pcurve.endpoint) pnts.add(pcurve.getpointatdist(plength / 4)) pnts.add(pcurve.getpointatdist(plength / 2)) pnts.add(pcurve.getpointatdist(plength * 3 / 4)) pcurve.getsplitcurves(pnts) for each i in pcurve.getsplitcurves(pnts) ptm.addentity(i) next pcurve.close() ptm.committrans() catch ex as exception msgbox(ex.message) finally ptm.dispose() end try end sub 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129imports autodesk.autocad.applicationservices imports autodesk.autocad.databaseservices imports autodesk.autocad.runtime imports autodesk.autocad.interop imports autodesk.autocad.geometry imports autocadtm = autodesk.autocad.databaseservices.transactionmanager public class tlstm private pdatabase as database private ptransactionmanager as autocadtm private pstarttransaction as transaction private pblocktable as blocktable private pblocktablerecord as blocktablerecord '程序功能:向当前块表记录中加入实体 public function addentity(byval tlsentity as dbobject) pblocktablerecord.appendentity(tlsentity) ptransactionmanager.addnewlycreateddbobject(tlsentity, true) end function '程序功能:向当前块表记录中加入实体数组 public function addentity(byval tlsentity as dbobject()) dim i as dbobject for each i in tlsentity pblocktablerecord.appendentity(i) ptransactionmanager.addnewlycreateddbobject(i, true) next i end function '程序功能:生成一个新块,并加入实体 public function addblock(byval name as string, byval entitys as dbobject()) as objectid dim i as dbobject dim pdatabase as database = application.documentmanager.mdiactivedocument.database dim ptransactionmanager as autocadtm = pdatabase.transactionmanager dim pstarttransaction as transaction = ptransactionmanager.starttransaction() try dim pblocktable as blocktable = ctype(ptransactionmanager.getobject(pdatabase.blocktableid, openmode.forwrite, false), blocktable) dim pblocktablerecord as new blocktablerecord pblocktablerecord.name = name pblocktable.add(pblocktablerecord) dim pid as objectid = pblocktablerecord.id for each i in entitys pblocktablerecord.appendentity(i) ptransactionmanager.addnewlycreateddbobject(i, true) next i pblocktablerecord.close() pblocktable.close() pstarttransaction.commit() return pid finally pstarttransaction.dispose() end try end function '开始事务 public sub starttrans() pdatabase = application.documentmanager.mdiactivedocument.database ptransactionmanager = pdatabase.transactionmanager pstarttransaction = ptransactionmanager.starttransaction() end sub '打开一个块表记录 public sub openblocktablerecord(byval str as string) pblocktable = ctype(ptransactionmanager.getobject(pdatabase.blocktableid, openmode.forread, false), blocktable) pblocktablerecord = ctype(ptransactionmanager.getobject(pblocktable(str), openmode.forwrite, false), blocktablerecord) end sub '事务提交 public sub committrans() pblocktablerecord.close() pblocktable.close() pstarttransaction.commit() end sub '事务结束 public sub dispose() pstarttransaction.dispose() pblocktablerecord = nothing pblocktable = nothing pstarttransaction = nothing ptransactionmanager = nothing pdatabase = nothing end sub '获取当前的辅助工具 public function utility() as acadutility return application.acadapplication.activedocument.utility end function public function addline(byval pointer1() as double, byval pointer2() as double) as line dim pline as line pline = new line( _ new point3d(pointer1(0), pointer1(1), pointer1(2)), _ new point3d(pointer2(0), pointer2(1), pointer2(2))) addentity(pline) return pline end function end class 上述代码四分曲线后,如何将原实体删除? 如果用obj.delete()倒是可行,但不是正规的arx方法 试一下entity类从dbobject类继承来的erase方法。 用过erase方法,总是出错,晕了 |
| 所有的时间均为北京时间。 现在的时间是 11:14 AM. |