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

ADN Club => AutoCAD .NET API => Тема начата: Александр Пекшев aka Modis от 15-04-2017, 12:16:19

Название: Добавление атрибутов в блок
Отправлено: Александр Пекшев aka Modis от 15-04-2017, 12:16:19
Всем привет. Не думал, что застряну с этим, но вот застрял  :(
Не получается добавить новые атрибуты (которых нет в блоке) во вхождение блока. Точнее - атрибуты добавляются, но не получается их заполнить.
По логике нужно сначала добавить описание атрибута в описание блока, а потом уже вхождение атриубута во вхождение блока, ну а потом установить значения.
Набросал отдельно короткий код для вопроса:
Извините, вам запрещён просмотр содержимого спойлеров.

Я пробовал различные варианты, вплоть до разнесения аж на три транзакции  :D Вот чувствую, что какую-то банальность упускаю, но никак не соображу какую
Название: Re: Добавление атрибутов в блок
Отправлено: Александр Пекшев aka Modis от 15-04-2017, 15:47:38
Полазил еще немного по форуму и наткнулся на тему (http://adn-cis.org/forum/index.php?topic=7631.0), в которой даже сам немного участвовал)
Поправил немного код и он заработал! Хотя, мне кажется, что действия остались прежними, только встали в другое место...
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Добавление атрибутов в блок
Отправлено: silda от 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 тоже не получается создать  :-\
Название: Re: Добавление атрибутов в блок
Отправлено: Александр Ривилис от 18-04-2020, 17:46:11
А что если у атрибута многострочные теги?
Многострочные теги??? Это что такое? Есть многострочный атрибут - у него текст на основе многострочного текста. и свойство AttributeDefinition.IsMTextAttributeDefinition (и соответственно AttributeReference.IsMTextAttribute) возвращает true. А вот что такое многострочные теги?
Название: Re: Добавление атрибутов в блок
Отправлено: silda от 18-04-2020, 19:09:12
Многострочные теги??? Это что такое?
Да Александр, вы правы, я не правильно объяснил. Хочу создать многострочный атрибут. Спасибо за подсказку. Результат обязательно выложу.
Название: Re: Добавление атрибутов в блок
Отправлено: Александр Ривилис от 18-04-2020, 20:07:05
Хочу создать многострочный атрибут.
https://adn-cis.org/sozdanie-bloka-s-mnogostrochnyim-opredeleniem-atributa.html
Название: Re: Добавление атрибутов в блок
Отправлено: silda от 18-04-2020, 21:48:12
Спасибо большое, хотя я в этом разделе уже был, значит не хорошо искал.
Название: Re: Добавление атрибутов в блок
Отправлено: dmitrymaslakov от 24-04-2021, 16:10:29
Автор темы создавал определение атрибута вот так: using (var acAttDef = new AttributeDefinition()). В  этой теме  (https://adn-cis.org/sozdanie-bloka-s-mnogostrochnyim-opredeleniem-atributa.html) оно создается без юзинга с добавлением в транзакцию. Код и там, и там работает. Есть ли разница каким способом лучше создавать?
Название: Re: Добавление атрибутов в блок
Отправлено: Александр Ривилис от 24-04-2021, 16:32:59
Есть ли разница каким способом лучше создавать?
using в этой ситуации совершенно лишний. Более того он может приводить к трудно отлавливаемым ошибкам.