24/12/2014
Быстрое получение количества примитивов в Пространстве Модели
LINQ предлагает легкий способ нахождения числа примитивов в Пространстве Модели без итерации по ней. Интерфейс IEnumerator обеспеченный классом BlockTableRecord может быть приведён к IEnumerable<ObjectId> для подсчета количества. Ниже пример кода :
Код - C#: [Выделить]
- using System.Linq;
- Document doc
- = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- using (Transaction tr
- = db.TransactionManager.StartTransaction())
- {
- 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("{0} Количество примитивов в Модели: {1}" ,
- Environment.NewLine, idCollection.Count<ObjectId>()));
- tr.Commit();
- }
Обсуждение: http://adn-cis.org/forum/index.php?topic=1729
Опубликовано 24.12.2014