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

ADN Club => AutoCAD .NET API => Тема начата: Dairon от 17-03-2021, 22:58:41

Название: Attribute Definition tag в текст
Отправлено: Dairon от 17-03-2021, 22:58:41
Доброго времени суток! Решаю задачу преобразования определений атрибутов в текст в модели(так как по какой-то причине в некоторых чертежах вместо текста стоят именно они, а редактировать их не удобно). Данные вбиты в поле tag.
Код - C# [Выбрать]
  1.             using (var tr = doc.TransactionManager.StartTransaction())
  2.             {
  3.                 // Let's iterate through the BlockTable, erasing the
  4.                 // relevant entities from the various BlockTableRecords
  5.                 var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
  6.  
  7.                 foreach (var btrId in bt)
  8.                 {
  9.                     var btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead);
  10.                      foreach (var entId in btr)
  11.                        {
  12.                             var ent = (Entity)tr.GetObject(entId, OpenMode.ForRead, true);
  13.                            //вызов  IsApplicable
  14.                           _tho.IsApplicable(ent)
  15.                           ...
  16.  
  17.         public override bool IsApplicable(RXObject overruledSubject)
  18.         {
  19.             var dt = overruledSubject as DBText;
  20.             var atrdef = dt as AttributeDefinition;
  21.             if ((atrdef != null))
  22.             {
  23.                 CreateText(atrdef);/просто считываю координаты и поле tag и создаю текст
  24.             }
  25.  
Пытаюсь схватить определения атрибутов и взяв из них Tag создать текст. Проблема в том что net хватает все определения и которые просто в модели и которые в блоках. Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Название: Re: Attribute Definition tag в текст
Отправлено: Александр Ривилис от 17-03-2021, 23:02:13
Dairon,
Приветствую на форуме. Сразу же прочитай у меня в подписи как следует форматировать код для форума и соблюдай это правило!
Название: Re: Attribute Definition tag в текст
Отправлено: Александр Ривилис от 17-03-2021, 23:04:14
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Может тебе не AttributeDefinition нужны, а AttributeReference (которые связаны со вставками блоков)?
Название: Re: Attribute Definition tag в текст
Отправлено: Александр Ривилис от 17-03-2021, 23:06:13
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Если же ты не ошибся и тебе нужно именно это, то тогда достаточно проверить у AttributeDefinition свойство OwnerId и сравнить его с ObjectId у ModelSpace.
Название: Re: Attribute Definition tag в текст
Отправлено: Dairon от 17-03-2021, 23:17:32
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Если же ты не ошибся и тебе нужно именно это, то тогда достаточно проверить у AttributeDefinition свойство OwnerId и сравнить его с ObjectId у ModelSpace.
Да надо имено в области модели, не в блоке. По поводу проверки OwnerId с ObjectId возможно это то что надо, завтра поэксперментирую, спасибо за подсказку
Название: Re: Attribute Definition tag в текст
Отправлено: Александр Ривилис от 17-03-2021, 23:26:09
По поводу проверки OwnerId с ObjectId возможно это то что, завтра поэксперментирую, спасибо за подсказку
Это 100% "то". :)
Будет выглядеть как-то так (не проверял):
Код - C# [Выбрать]
  1. public override bool IsApplicable(RXObject overruledSubject)
  2. {
  3.      var dt = overruledSubject as DBText;
  4.      var atrdef = dt as AttributeDefinition;
  5.      if (atrdef != null && dt.Database != null && dt.OwnerId == SymbolUtilityServices.GetBlockModelSpaceId(dt.Database))
  6.      {
  7.          CreateText(atrdef);//просто считываю координаты и поле tag и создаю текст
  8.          return true;
  9.      }
  10.      return false;
  11. }
Название: Re: Attribute Definition tag в текст
Отправлено: Dairon от 19-03-2021, 06:58:25
То что надо  :). Все получилось! Благодарю!