如何在插入块参照的同时给块赋一个扩展属性?
www.dimcax.com
如何在插入块参照的同时给块赋一个扩展属性?
我也是初学,我用vb.net,没有vc代码,我不会vc
自己的问题自己解决了!现代码改正如下:
public sub insertblockref(byval blockname as string, byval point as point3d, byval scale as scale3d, byval rotateangle as double, byval layername as string, byval xdatacode as string)
dim db as database = hostapplicationservices.workingdatabase
dim doclock as documentlock = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument.lockdocument
dim bt as blocktable
using trans as transaction = db.transactionmanager.starttransaction
'以读的方式打开块表
bt = trans.getobject(db.blocktableid, openmode.forread)
'如果没有blockname表示的块,则程序返回
if (bt.has(blockname) = false) then
'从所指定的外部文件中导入块
importblocksfromdwg(blockname)
end if
'以读的方式打开blockname表示的块
dim block as blocktablerecord = trans.getobject(bt(blockname), openmode.forwrite)
'创建一个块参照并设置插入点
dim blockref as blockreference = new blockreference(point, bt(blockname))
blockref.scalefactors = scale '设置块参照的缩放比例
blockref.layer = layername '设置图层
blockref.rotation = rotateangle '设置块参照的旋转角度
'以写的方式打开当前空间(模型空间或图纸空间)
dim btr as blocktablerecord = trans.getobject(db.currentspaceid, openmode.forwrite)
btr.appendentity(blockref) '在当前空间加入创建的块参照
'通知事务处理加入创建的块参照
trans.addnewlycreateddbobject(blockref, true)
'给插入的块赋扩展属性
dim st as object = blockref
setxdata(st, xdatacode)
trans.commit() '提交事务处理以实现块参照的真实加入
trans.dispose()
end using
doclock.dispose()
end sub
复制代码