Доброго времени суток.
+ AutoCAD 2009 SP3 x64 Enu
+ .NET Framework 3.5 SP1
Исходные данные:1. Имеется определение динамического, аннотативного блока отметки, в составе которого определён атрибут, отображающий нужное числовое значение (вычисленное посредством формулы и полей). Атрибуту назначено значение по умолчанию в виде текста "
Якорь не указан".
2. Имеется определение не динамического, аннотативного блока якоря.
В атрибутах вхождений блока отметки прописывается формула, в которой из координаты Y точки вставки отметки вычитается координата Y точки вставки нужного якоря и результат делится на 1000.
В контекстное меню отметок добавлены два пункта:
- Назначить якорь
- Показать якорь
В контекстное меню якоря добавлен пункт:
- Показать зависимые отметки
Значение формулы, присваиваемой атрибуту вхождения отметки назначается программно.
Описание проблемы:Небольшой "затык" возник при нахождении всех отметок, связанных с указанным якорем...
В коде я извлекаю из атрибута исходный текст (не путать с отображаемым значением) так:
// Получаем исходный текст, назначенный атрибуту
// (может содержать поля и формулы)
String attValue = attRef.getTextWithFieldCodes();
Полученное значение анализируется при помощи регулярного выражения и возвращает (посредством именованного сохранения) идентификатор блока отметки (если он присутствует).
Новый текст атрибуту (может содержать формулы и поля) назначаю так (когда присваиваю отметке нужный якорь):
// Назначаем нужную формулу, вычисляющую значение отметки
// (формула указана в конфигурационном файле)
attRef.TextString = attNewValue;
В результате отметкам успешно назначаются формулы и числовые значения корректно отображаются.
Теперь, если
не закрывая документ, повторно выполнить
getTextWithFieldCodes для атрибутов тех же самых вхождений блока отметки, то получаю не новую, назначенную мною формулу, но старое текстовое значение: "
Якорь не указан".
Если же документ закрыть и снова открыть, то в этом случае
getTextWithFieldCodes вернёт обновлённую строку, назначенную атрибуту.
Может я не оттуда, откуда надо считываю строку, присваиваемую атрибуту вхождения? Либо назначаю не туда, куда следовало бы?
Спасибо.