怎么样通过块名获得在模型空间下的BlockReference
如果在BlockTable下可以通过BlockTable[块名]和BlockTable.has(块名)来获取块操作但是在模型空间下是BlockTableRecord类型
在不知道块的objectId,怎么样通过块名来获取块呢,或者不用foreach来获取objectId
如果用foreach的话,感觉对象实体太多的话,会造成速度慢吧,所以除了foreach还有没有其他方法 BlockTableRecord.GetBlockReferenceIds 其实遍历一下也无所谓,花不了多少时间
我按下面这些代码写,一个都找不到啊,何解??
public void selAll() {
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
//开启事务
using (Transaction transaction = db.TransactionManager.StartTransaction())
{
//打开块表
BlockTable bt = transaction.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
//打开模型空间块表记录
BlockTableRecord modelspace = transaction.GetObject(bt, OpenMode.ForRead) as BlockTableRecord;
ObjectIdCollection objidcoll =modelspace.GetBlockReferenceIds(true, true);
ed.WriteMessage("\n共有{0}个",objidcoll.Count);
foreach (ObjectId item in objidcoll)
{
Entity ent = (Entity)transaction.GetObject(item, OpenMode.ForRead);
ed.WriteMessage("\n名字有:{0}",ent.BlockName);
}
}
} ObjectIdCollection objidcoll =modelspace.GetBlockReferenceIds(true, true);模型空间是一个特殊的块,只有一个。你可以换其它的块试一下。 modelspace是不会被blockreference引用的
页:
[1]