查看单个帖子
旧 2009-04-20, 10:18 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】如何删除数据库实体?

如何删除数据库实体?
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方法,总是出错,晕了
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)