几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(VB.NET/C#) (http://www.dimcax.com/hust/forumdisplay.php?f=176)
-   -   【转帖】请问c#中如何插入一个已定义的块啊? (http://www.dimcax.com/hust/showthread.php?t=10057)

yang686526 2009-04-22 01:32 PM

【转帖】请问c#中如何插入一个已定义的块啊?
 
请问c#中如何插入一个已定义的块啊?
www.dimcax.com
请问c#中如何插入一个已定义的块啊?
arxobject中好象找不到类似于insert这样的对象,dotnetarx中也只有关于如何定义block的说明,请帮助,谢谢!
有谁知道啊?能不能给点代码?
哈哈!终于在foreign friend帮助下,解决了我摸索多日的菜鸟问题,原来是用的是tablerecord,这个类很容易搞混淆,打开模型空间也是用这个类: blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite, false); 打开块定义也是用这个类: blocktablerecord blkdefine= (blocktablerecord)trans.getobject(bt[blkname], openmode.forwrite, false); 真正要插入到dwg中时,要用到blockrefrence: blockrefrence blk = new blockrefrence(insertpt, blkdefine.objectid); 最后用: btr.appendentity(blk, true); 加入到模型空间,就搞定了! 希望大家多交流,高手多指点,大侠们的一句话,就顶得上菜鸟们郁闷几天了!
能不能把代码 贴全一点
获得blockid: private void getblockid() { blockid = objectid.null; using (transaction trans = transman.starttransaction())    //启动事务处理 { //看数据库中是否存在这样的块定义 blocktable bt = (blocktable)trans.getobject(currdb.blocktableid, openmode.forread, false); if (bt.has(blockname)) { blockid = bt[blockname]; return; } //读入定义 database blkdb = new database(false, false); try { blkdb.readdwgfile(pathname + blockname + ".dwg", system.io.fileshare.read, true, ""); } catch (system.exception exp) { blkdb.dispose(); tools.toolutils.alertmsg("无法找到块文件:" + blockname); return; } blockid = currdb.insert(blockname, blkdb, true); blkdb.dispose(); trans.commit(); } } 利用blockid插入到图形中: public override void draw() { try { getblockid(); if (blockid == objectid.null) //这个块文件无法调入 return; using (transaction trans = transman.starttransaction())    //启动事务处理 { blockreference blk = new blockreference(insertpt, blockid); blk.rotation = insertangle; blocktable bt = (blocktable)trans.getobject(currdb.blocktableid, openmode.forread, false); blocktablerecord btr = (blocktablerecord)trans.getobject(bt[blocktablerecord.modelspace], openmode.forwrite, false); objectid = btr.appendentity(blk); trans.addnewlycreateddbobject(blk, true); trans.commit(); } } finally { } }


所有的时间均为北京时间。 现在的时间是 12:00 PM.