<?xml encoding=”UTF-8″>By Balaji Ramamoorthy
LINQ provides an easy way to find the number of entities in modelspace without having to iterate on our own. The IEnumerator exposed by BlockTableRecord can be cast as IEnumerable<ObjectId> to find the count. Here is a code snippet :
<span>using</span><span> System.Linq;</span>
Document doc
= Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
<span>using</span><span> (Transaction tr </span>
= db.TransactionManager.StartTransaction())
<span>{</span>
BlockTable bt = tr.GetObject(
db.BlockTableId,
OpenMode.ForRead) as BlockTable;
ObjectId modelSpaceId
= SymbolUtilityServices.GetBlockModelSpaceId(db);
BlockTableRecord btr = tr.GetObject(
modelSpaceId,
OpenMode.ForRead) as BlockTableRecord;
System.Collections.Generic.IEnumerable<ObjectId>
idCollection = btr.Cast<ObjectId>();
doc.Editor.WriteMessage(
String.Format(<span>"<span>{</span>0<span>}</span> Model space count : <span>{</span>1<span>}</span>"</span><span> , </span>
Environment.NewLine, idCollection.Count<ObjectId>()));
tr.Commit();
<span>}</span>

Leave a Reply