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

04/11/2014

Определение наличия имени приложения в расширенных данных примитива

Вы можете использовать метод GetXDataForApplication класса DBobject для определения наличия имени приложения в расширенных данных (Xdata). Следующий код показывает есть ли расширенные данные приложения "ADSK" у примитива или нет:

Код - C#: [Выделить]
  1. [CommandMethod("FindAppName")]
  2. static public void FindAppName()
  3. {
  4.     Document doc = Application.DocumentManager.MdiActiveDocument;
  5.     Database db = doc.Database;
  6.     Transaction tr = db.TransactionManager.StartTransaction();
  7.     using (tr)
  8.     {
  9.         Editor ed = doc.Editor;
  10.         try
  11.         {
  12.            PromptEntityResult ers = ed.GetEntity("Выберите примитив ");
  13.            Entity ent = (Entity)tr.GetObject(ers.ObjectId,  OpenMode.ForRead);
  14.  
  15.             ResultBuffer buffer =  ent.GetXDataForApplication("ADSK");
  16.  
  17.             // Если null – нет расширенных данных для приложения ADSK
  18.             if (buffer != null)
  19.             {
  20.                 ed.WriteMessage("Есть расширенные данные с именем приложения ADSK");
  21.                 buffer.Dispose();
  22.             }
  23.             else
  24.             {
  25.                 ed.WriteMessage("Нет расширенных данные с именем приложения ADSK");
  26.             }
  27.             tr.Commit();
  28.         }
  29.         catch
  30.         {
  31.             tr.Abort();
  32.         }
  33.     }
  34. }

 

Источник: http://adndevblog.typepad.com/autocad/2012/05/identifying-the-presence-of-registered-application-name-in-xdata-of-the-entity.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=1062

Опубликовано 04.11.2014
Отредактировано 04.11.2014 в 09:45:16