27/11/2013
Как узнать если у блока определения атрибутов?
Определения атрибутов хранятся вместе со всеми остальными примитивами, составляющими блок. А когда добавляется ссылка на блок, то вставляются и соответствующие ссылки атрибутов. Один из способов определить наличие определений атрибутов в блоке – это использование метода “BlockTableRecord.HasAttributeDefinitions” соответствующей записи таблицы блоков.
Код - C#: [Выделить]
- [CommandMethod("AttributeDefTest")]
- static public void AttributeDefTest()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Database db = doc.Database;
- Editor ed = doc.Editor;
- PromptStringOptions opts =
- new PromptStringOptions("\nУкажите имя блока: ");
- opts.AllowSpaces = true;
- PromptResult blockName = ed.GetString(opts);
- if (blockName.Status != PromptStatus.OK)
- return;
- using (Transaction tx =
- db.TransactionManager.StartTransaction())
- {
- BlockTable blockTable = tx.GetObject(db.BlockTableId,
- OpenMode.ForRead) as BlockTable;
- if (blockTable.Has(blockName.StringResult))
- {
- BlockTableRecord block = tx.GetObject(
- blockTable[blockName.StringResult],
- OpenMode.ForRead) as BlockTableRecord;
- bool bAttDef = block.HasAttributeDefinitions;
- if (bAttDef)
- {
- ed.WriteMessage("Блок " + block.Name +
- " содержит определения атрибутов \n");
- }
- else
- {
- ed.WriteMessage("Блок " + block.Name +
- " не содержит определений атрибутов \n");
- }
- }
- tx.Commit();
- }
- }
Источник: http://adndevblog.typepad.com/autocad/2012/06/identify-attribute-definitions-in-blocks.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=350
Опубликовано 27.11.2013Отредактировано 27.11.2013 в 15:51:47