Событие при вставке объекта

Автор Тема: Событие при вставке объекта  (Прочитано 3971 раз)

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

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
У моих объектов есть выноска с абсолютными координатами и она не зависит от положения самого объекта. При создании копии этого объекта, координата выноски остается на месте выноски исходного объекта. Чтобы это исправить я добавил в объект два свойства - "Дельта X" и "Дельта Y", которые пересчитываются при перестроении объекта. Таким образом у меня есть всегда актуальные значения смещения метки относительно самого объекта. Далее в событии Document.Database.ObjectAppended я сохраняю id всех объектов, которые были добавлены с помощью команды PASTE и в событии Document.Editor.EnteringQuiescentState по этим id я обновляю координаты выноски с учетом смещения. В результате, при копировании объекта, выноска строится с таким же смещением, как и в исходном объекте, что мне и нужно было.
Но вот после команды PASTE, когда объект еще под курсором и не добавлен в чертеж, выноска улетает куда-то в сторону, а после вставки в чертеж она занимает правильное положение. Как мне отловить этот момент, чтобы и во временной графике перестроить выноску?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Событие при вставке объекта
« Ответ #1 : 02-05-2019, 22:10:35 »
Но вот после команды PASTE, когда объект еще под курсором и не добавлен в чертеж, выноска улетает куда-то в сторону, а после вставки в чертеж она занимает правильное положение. Как мне отловить этот момент, чтобы и во временной графике перестроить выноску?
При выполнении команды PASTE создаётся блок с именем A$XXXXXXXX, он вставляется и висит на курсоре. Вот его и нужно отслеживать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Событие при вставке объекта
« Ответ #2 : 03-05-2019, 13:51:29 »
При выполнении команды PASTE создаётся блок с именем A$XXXXXXXX, он вставляется и висит на курсоре
При обработке события Document.CommandWillStart нет блока с таким именем. Наверное, он создается позже? Он же в БД создается?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Событие при вставке объекта
« Ответ #3 : 03-05-2019, 15:01:59 »
При обработке события Document.CommandWillStart нет блока с таким именем. Наверное, он создается позже? Он же в БД создается?
Конечно он создаётся позже. После того, как команда запущена, но перед тем, как на курсоре висит вставка. Создаётся в текущей базе. Запусти в MGDDBG отслеживание событий и сам всё увидишь.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Событие при вставке объекта
« Ответ #4 : 06-05-2019, 14:27:27 »
Я выбрал наиболее простой для себя вариант - я пересчитываю значения смещения метки каждый раз при перемещении самого объекта или метки. Этот вопрос решен.

По теме:
Я вроде бы нашел подходящее событие - Document.Database.BeginDeepClone, но пока не было возможности полноценно проверить.