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


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


 
 
主题工具 搜索本主题 显示模式
旧 2009-04-22, 01:32 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】请问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 { } }
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
 


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 06:47 AM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多