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

ADN Club => AutoCAD .NET API => Тема начата: Владимир Шу от 10-01-2017, 17:23:14

Название: Проблема с атрибутами дин.блока при модификации с помощью EntityJig
Отправлено: Владимир Шу от 10-01-2017, 17:23:14
Продолжаю свои мытарства по красивостям в автокаде и попробовал, по совету форумчан, использовать не DrawJig, а EntityJig для вставки и модификации дин.блоков.

И вот вылезла проблема с атрибутами динамического блока при модификации блока с помощью EntityJig.

В конструкторе класса BlockJigModify : Ed.EntityJig, координаты атрибутов правильные, но при изменение блока в методе Update атрибуты смещаются и трансформируются относительно начала координат, хотя я координаты атрибутам и не присваиваю...

Проект во вложении, dwg файл с блоком в папке Debug.
Явно какая то простая неточность, но глаз замылился, не вижу и прошу помощи.

Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Проблема с атрибутами дин.блока при модификации с помощью EntityJig
Отправлено: Александр Ривилис от 10-01-2017, 17:34:00
В конструкторе класса BlockJigModify : Ed.EntityJig, координаты атрибутов правильные, но при изменение блока в методе Update атрибуты смещаются и трансформируются относительно начала координат, хотя я координаты атрибутам и не присваиваю...
А это что:
Код - C# [Выбрать]
  1. ar.Position = _attPos[ar.Tag].TransformBy(br.BlockTransform);
???
Кстати, это самый неправильный способ присвоения координат, так как работает только с выравненными по-умолчанию атрибутами. остальным нужно задавать еще и AlignmentPoint. А если аттрибут еще не в базе, то и AdjustAlignment.
Название: Re: Проблема с атрибутами дин.блока при модификации с помощью EntityJig
Отправлено: Владимир Шу от 11-01-2017, 06:38:22
А это что:
Код - C# [Выбрать]

    ar.Position = _attPos[ar.Tag].TransformBy(br.BlockTransform);

???
а эта строка в классе BlockJigInsert : Ed.EntityJig (строка 244 и 298 в простыне кода) и у меня к нему претензий нет. Этот класс работает нормально и координаты считает правильно.

Кстати, это самый неправильный способ присвоения координат, так как работает только с выравненными по-умолчанию атрибутами. остальным нужно задавать еще и AlignmentPoint. А если аттрибут еще не в базе, то и AdjustAlignment.

Спасибо.