乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 90|回复: 5

怎么样通过块名获得在模型空间下的BlockReference

[复制链接]

6

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
34
发表于 2015-12-26 20:16:00 | 显示全部楼层 |阅读模式
如果在BlockTable下可以通过BlockTable[块名]和BlockTable.has(块名)来获取块操作
但是在模型空间下是BlockTableRecord类型
在不知道块的objectId,怎么样通过块名来获取块呢,或者不用foreach来获取objectId
如果用foreach的话,感觉对象实体太多的话,会造成速度慢吧,所以除了foreach还有没有其他方法
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2015-12-26 21:39:00 | 显示全部楼层
BlockTableRecord.GetBlockReferenceIds
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2015-12-26 21:40:00 | 显示全部楼层
其实遍历一下也无所谓,花不了多少时间
回复

使用道具 举报

6

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
34
发表于 2015-12-27 21:01:00 | 显示全部楼层

我按下面这些代码写,一个都找不到啊,何解??
  1. [CommandMethod("tests")]
  2.         public void selAll() {
  3.             Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  4.             Database db = doc.Database;
  5.             Editor ed = doc.Editor;
  6.            //开启事务
  7.             using (Transaction transaction = db.TransactionManager.StartTransaction())
  8.             {
  9.                 //打开块表
  10.                 BlockTable bt = transaction.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
  11.                 //打开模型空间块表记录
  12.                 BlockTableRecord modelspace = transaction.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord;
  13.                 ObjectIdCollection objidcoll =modelspace.GetBlockReferenceIds(true, true);
  14.                 ed.WriteMessage("\n共有{0}个",objidcoll.Count);
  15.                 foreach (ObjectId item in objidcoll)
  16.                 {
  17.                     Entity ent = (Entity)transaction.GetObject(item, OpenMode.ForRead);
  18.                     ed.WriteMessage("\n名字有:{0}",ent.BlockName);
  19.                 }
  20.             }
  21.         }
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2015-12-29 11:52:00 | 显示全部楼层
ObjectIdCollection objidcoll =modelspace.GetBlockReferenceIds(true, true);模型空间是一个特殊的块,只有一个。你可以换其它的块试一下。
回复

使用道具 举报

0

主题

275

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2015-12-29 18:39:00 | 显示全部楼层
modelspace是不会被blockreference引用的
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 09:12 , Processed in 0.267623 second(s), 64 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表