ADN Open CIS
Сообщество программистов Autodesk в СНГ

27/11/2013

Как узнать если у блока определения атрибутов?

Определения атрибутов хранятся вместе со всеми остальными примитивами, составляющими блок. А когда добавляется ссылка на блок, то вставляются и соответствующие ссылки атрибутов. Один из способов определить наличие определений атрибутов в блоке – это использование метода “BlockTableRecord.HasAttributeDefinitions” соответствующей записи таблицы блоков.

Код - C#: [Выделить]
  1.  [CommandMethod("AttributeDefTest")]
  2.  static public void AttributeDefTest()
  3.  {
  4.      Document doc = Application.DocumentManager.MdiActiveDocument;
  5.      Database db = doc.Database;
  6.      Editor ed = doc.Editor;
  7.  
  8.      PromptStringOptions opts =
  9.         new PromptStringOptions("\nУкажите имя блока: ");
  10.      opts.AllowSpaces = true;
  11.  
  12.      PromptResult blockName = ed.GetString(opts);
  13.  
  14.      if (blockName.Status != PromptStatus.OK)
  15.          return;
  16.  
  17.      using (Transaction tx =
  18.                          db.TransactionManager.StartTransaction())
  19.      {
  20.          BlockTable blockTable = tx.GetObject(db.BlockTableId,
  21.                                     OpenMode.ForRead) as BlockTable;
  22.  
  23.          if (blockTable.Has(blockName.StringResult))
  24.          {
  25.              BlockTableRecord block = tx.GetObject(
  26.                               blockTable[blockName.StringResult],
  27.                              OpenMode.ForRead) as BlockTableRecord;
  28.              bool bAttDef = block.HasAttributeDefinitions;
  29.  
  30.              if (bAttDef)
  31.              {
  32.                  ed.WriteMessage("Блок " + block.Name +
  33.                              " содержит определения атрибутов \n");
  34.              }
  35.              else
  36.              {
  37.                  ed.WriteMessage("Блок " + block.Name +
  38.                      " не содержит определений атрибутов \n");
  39.              }
  40.  
  41.          }
  42.          tx.Commit();
  43.      }
  44.  }

 

Источник: 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