等不及金斑竹了,我先发个简单的例子
www.dimcax.com
等不及金斑竹了,我先发个简单的例子
imports 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
module module1
end module
public class tlstemp
<commandmethod("test")> public shared sub mytestcmd()
dim putility as acadutility = application.documentmanager.mdiactivedocument.acaddocument.utility
dim pt as new tlsdatabase
dim p1, p2 as object
'在屏幕上选取两个点生成一条直线
p1 = putility.getpoint()
p2 = putility.getpoint(p1)
dim pline as new line(new point3d(p1(0), p1(1), p1(2)), new point3d(p2(0), p2(1), p2(2)))
pt.appendentity(pline)
'生成一条直线,并加入到无名块,插入
dim p as object = putility.getpoint()
dim pes(0) as dbobject
'pes(0) = new line(new point3d(p1(0), p1(1), p1(2)), new point3d(p2(0), p2(1), p2(2)))
pes(0) = pline.clone
dim pblock as objectid = pt.appendblock("*u", pes)
dim pobj as new blockreference(new point3d(p(0), p(1), p(2)), pblock)
pt.appendentity(pobj)
end sub
end class
public class tlsdatabase
'程序功能:向当前模型空间加入实体
public function appendentity(byval tlsentity 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.forread, false), blocktable)
dim pblocktablerecord as blocktablerecord = ctype(ptransactionmanager.getobject(pblocktable(blocktablerecord.modelspace), openmode.forwrite, false), blocktablerecord)
pblocktablerecord.appendentity(tlsentity)
ptransactionmanager.addnewlycreateddbobject(tlsentity, true)
pstarttransaction.commit()
finally
pstarttransaction.dispose()
end try
end function
'程序功能:生成一个新块,并加入实体
public function appendblock(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()
pstarttransaction.commit()
return pid
finally
pstarttransaction.dispose()
end try
end function
end class
[此贴子已经被作者于
金版主用的夹叙夹议之春秋笔法,有滋有味。你来个只练不讲,责把开头的一堆“imports”解释清楚。:)
河伯老兄,偶还等着金版主的文章呢,就靠偶的三脚猫可不行,:)
这是用vb.net做的吗?怎么这么像arx啊。。。
好像挺烦的,不如vba来得简单啊,不知有什么优点???