Добавление атрибутов в блок

Автор Тема: Добавление атрибутов в блок  (Прочитано 6243 раз)

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

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет. Не думал, что застряну с этим, но вот застрял  :(
Не получается добавить новые атрибуты (которых нет в блоке) во вхождение блока. Точнее - атрибуты добавляются, но не получается их заполнить.
По логике нужно сначала добавить описание атрибута в описание блока, а потом уже вхождение атриубута во вхождение блока, ну а потом установить значения.
Набросал отдельно короткий код для вопроса:
Извините, вам запрещён просмотр содержимого спойлеров.

Я пробовал различные варианты, вплоть до разнесения аж на три транзакции  :D Вот чувствую, что какую-то банальность упускаю, но никак не соображу какую

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Добавление атрибутов в блок
« Ответ #1 : 15-04-2017, 15:47:38 »
Полазил еще немного по форуму и наткнулся на тему, в которой даже сам немного участвовал)
Поправил немного код и он заработал! Хотя, мне кажется, что действия остались прежними, только встали в другое место...
Извините, вам запрещён просмотр содержимого спойлеров.

Оффлайн silda

  • ADN OPEN
  • Сообщений: 23
  • Карма: 1
Re: Добавление атрибутов в блок
« Ответ #2 : 18-04-2020, 10:53:10 »
using (var acAttDef = new AttributeDefinition())
                {
                    acAttDef.Position = new Point3d(0, 0, 0);
                    acAttDef.Invisible = true;
                    acAttDef.Prompt = allowAttributesPrompt;
                    acAttDef.Tag = allowAttributesTags;
                    acAttDef.TextString = string.Empty;
                    acBlkTblRec.AppendEntity(acAttDef);
 
                    AttributeReference attRef = new AttributeReference();
                    attRef.SetAttributeFromBlock(acAttDef, blkRef.BlockTransform);
                    blkRef.AttributeCollection.AppendAttribute(attRef);
                    tr.AddNewlyCreatedDBObject(attRef,true);
                   
                    attrDefs.Add(acAttDef);
                }
Добрый день друзья, помогите пожалуйста новичку. А что если у атрибута многострочные теги? Пробовал добавить еще один блок-оператор using с другими данными но пока не получается, при вставке блока автокад выдает "эксепшкн"
Autodesk.AutoCAD.Runtime.Exception: eDuplicateRecordName

Внутри одно блок-оператора using тоже не получается создать  :-\

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Добавление атрибутов в блок
« Ответ #3 : 18-04-2020, 17:46:11 »
А что если у атрибута многострочные теги?
Многострочные теги??? Это что такое? Есть многострочный атрибут - у него текст на основе многострочного текста. и свойство AttributeDefinition.IsMTextAttributeDefinition (и соответственно AttributeReference.IsMTextAttribute) возвращает true. А вот что такое многострочные теги?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн silda

  • ADN OPEN
  • Сообщений: 23
  • Карма: 1
Re: Добавление атрибутов в блок
« Ответ #4 : 18-04-2020, 19:09:12 »
Многострочные теги??? Это что такое?
Да Александр, вы правы, я не правильно объяснил. Хочу создать многострочный атрибут. Спасибо за подсказку. Результат обязательно выложу.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн silda

  • ADN OPEN
  • Сообщений: 23
  • Карма: 1
Re: Добавление атрибутов в блок
« Ответ #6 : 18-04-2020, 21:48:12 »
Спасибо большое, хотя я в этом разделе уже был, значит не хорошо искал.

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Re: Добавление атрибутов в блок
« Ответ #7 : 24-04-2021, 16:10:29 »
Автор темы создавал определение атрибута вот так: using (var acAttDef = new AttributeDefinition()). В этой теме оно создается без юзинга с добавлением в транзакцию. Код и там, и там работает. Есть ли разница каким способом лучше создавать?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Добавление атрибутов в блок
« Ответ #8 : 24-04-2021, 16:32:59 »
Есть ли разница каким способом лучше создавать?
using в этой ситуации совершенно лишний. Более того он может приводить к трудно отлавливаемым ошибкам.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение