Attribute Definition tag в текст

Автор Тема: Attribute Definition tag в текст  (Прочитано 7620 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн DaironАвтор темы

  • СЦБ + БИМ
  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
  • WhatsApp 89215683286
Attribute Definition tag в текст
« : 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 хватает все определения и которые просто в модели и которые в блоках. Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
« Последнее редактирование: 17-03-2021, 23:00:43 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Attribute Definition tag в текст
« Ответ #1 : 17-03-2021, 23:02:13 »
Dairon,
Приветствую на форуме. Сразу же прочитай у меня в подписи как следует форматировать код для форума и соблюдай это правило!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Attribute Definition tag в текст
« Ответ #2 : 17-03-2021, 23:04:14 »
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Может тебе не AttributeDefinition нужны, а AttributeReference (которые связаны со вставками блоков)?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Dairon 17-03-2021, 23:14:18

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Attribute Definition tag в текст
« Ответ #3 : 17-03-2021, 23:06:13 »
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Если же ты не ошибся и тебе нужно именно это, то тогда достаточно проверить у AttributeDefinition свойство OwnerId и сравнить его с ObjectId у ModelSpace.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DaironАвтор темы

  • СЦБ + БИМ
  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
  • WhatsApp 89215683286
Re: Attribute Definition tag в текст
« Ответ #4 : 17-03-2021, 23:17:32 »
Как ограничить выбор только теми определениями атрибутов которые просто вставлены в модель.
Если же ты не ошибся и тебе нужно именно это, то тогда достаточно проверить у AttributeDefinition свойство OwnerId и сравнить его с ObjectId у ModelSpace.
Да надо имено в области модели, не в блоке. По поводу проверки OwnerId с ObjectId возможно это то что надо, завтра поэксперментирую, спасибо за подсказку

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Attribute Definition tag в текст
« Ответ #5 : 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. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн DaironАвтор темы

  • СЦБ + БИМ
  • ADN OPEN
  • Сообщений: 14
  • Карма: 0
  • WhatsApp 89215683286
Re: Attribute Definition tag в текст
« Ответ #6 : 19-03-2021, 06:58:25 »
То что надо  :). Все получилось! Благодарю!