EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2026|回复: 29
打印 上一主题 下一主题

[实体对象] 添加块参照

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-8 16:47:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
块参照就是AutoCAD中的图块,它引用于块定义(即添加到块表的块表记录)。而块定义有两种形式:
1、引用外部DWG图纸。
2、种是图纸中添加在块表中的块表记录。

      以下是块定义引用为块参照的例子。

  • using System;
  • using Autodesk.AutoCAD.DatabaseServices;
  • using Autodesk.AutoCAD.Geometry;
  • using Autodesk.AutoCAD.Runtime;
  • [assembly: CommandClass(typeof(Sample.AddBlock))]
  • namespace Sample
  • {
  •     class AddBlock
  •     {
  •         /// <summary>
  •         /// 引用外部文件为块参照插入
  •         /// </summary>
  •         [CommandMethod("AddRefBlock")]
  •         public void Add1()
  •         {
  •             Database db = HostApplicationServices.WorkingDatabase;
  •             using (Transaction trans = db.TransactionManager.StartTransaction())
  •             {
  •                 BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  •                 BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  •                 ObjectId refid = db.OverlayXref(@"c:\drwing.dwg", "name");// 通过外部文件获取图块定义的ObjectId
  •                 BlockReference br = new BlockReference(Point3d.Origin, refid); // 通过块定义添加块参照
  •                 btr.AppendEntity(br); //把块参照添加到块表记录
  •                 trans.AddNewlyCreatedDBObject(br, true); // 通过事务添加块参照到数据库
  •                 trans.Commit();
  •             }
  •         }
  •         /// <summary>
  •         /// 把块定义变为块参照插入
  •         /// </summary>
  •         [CommandMethod("AddBlock")]
  •         public void Add2()
  •         {
  •             Database db = HostApplicationServices.WorkingDatabase;
  •             ObjectId blkid;
  •             //创建块定义
  •             using (Transaction trans = db.TransactionManager.StartTransaction())
  •             {
  •                 BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForWrite) as BlockTable;
  •                 BlockTableRecord blk = new BlockTableRecord();
  •                 blk.Name = "BLK";
  •                 Line L = new Line(Point3d.Origin, new Point3d(1000, 1000, 0));
  •                 Circle C = new Circle(Point3d.Origin, Vector3d.ZAxis, 500);
  •                 blk.AppendEntity(L);
  •                 blk.AppendEntity(C);
  •                 blkid = bt.Add(blk);
  •                 trans.AddNewlyCreatedDBObject(blk, true);
  •                 trans.Commit();
  •             }
  •             using (Transaction tr = db.TransactionManager.StartTransaction())
  •             {
  •                 BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  •                 BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  •                 BlockReference br = new BlockReference(new Point3d(0,0, 0), blkid); // 通过块定义创建块参照
  •                 btr.AppendEntity(br); //把块参照添加到块表记录
  •                 tr.AddNewlyCreatedDBObject(br, true); // 通过事务添加块参照到数据库
  •                 tr.Commit();
  •             }
  •         }
  •     }
  • }

复制代码

AutoCAD中加载运行 AddBlock命令后得到如下结果:

查看块表中的块定义得到如下结果:

AutoCAD中加载运行 AddRefBlock命令后得到如下结果:
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

0

主题

328

帖子

508

积分

BIM专业负责人

Rank: 4Rank: 4Rank: 4Rank: 4

积分
508

社区QQ达人

推荐
发表于 2016-10-28 17:40:46 | 只看该作者
hoooma 发表于 2016-9-17 01:34
谢谢你把好的资料分享给大家

不错

2

主题

885

帖子

1615

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1615
推荐
发表于 2014-3-10 13:30:37 | 只看该作者
路过!!! 不发表意见……

7

主题

865

帖子

1435

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1435
推荐
发表于 2014-5-20 14:32:05 | 只看该作者
路过!!! 不发表意见……

4

主题

723

帖子

1173

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1173
5F
发表于 2014-2-18 12:09:28 | 只看该作者
顶...... 楼下跟上.....

15

主题

899

帖子

1462

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1462
7F
发表于 2014-3-10 13:14:24 | 只看该作者
顶...... 楼下跟上.....

6

主题

873

帖子

1347

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1347
12F
发表于 2014-3-14 11:19:17 | 只看该作者
顶......
楼下跟上.....

32

主题

830

帖子

1383

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1383
16F
发表于 2014-5-13 10:21:03 | 只看该作者
(*^__^*) 嘻嘻……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-23 10:25

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表