Как программно узнать о перемещении объектов группой

Автор Тема: Как программно узнать о перемещении объектов группой  (Прочитано 3010 раз)

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

Оффлайн RomanАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Добрый всем день! Пытаюсь определить, что объекты были перемещены группой. Когда я использую команду  "Move", я могу понять по GetSystemVariables("CMDNAMES") - какая команда была вызвана в событии Document.ImpliedSelectionChanged, поскольку при выполнении команды происходит снятие выделения.
Однако, если выбрать группу и просто удерживая левую клавишу мыши (схватив за любой выделенный объект) тянуть группу, то на этом событии GetSystemVariables("CMDNAMES") возвращает пустую строку. Как-то я могу достоверно узнать, что перемещаются объекты в группе (и получить список этих объектов в группе?)

Оффлайн alz

  • ADN OPEN
  • ***
  • Сообщений: 113
  • Карма: 15
Ну, список выделенных можно просто проверить через Editor.SelectImplied, при перетаскивании меняется какая-то системная переменная, судя по командной строке када, определить и после ее изменения проверять.

Оффлайн RomanАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Ну, список выделенных можно просто проверить через Editor.SelectImplied, при перетаскивании меняется какая-то системная переменная, судя по командной строке када, определить и после ее изменения проверять.
Да, через SelectImplied и определяю. Но, к сожалению, какая именно переменная меняется при обычном драге, я так и не вижу. Командная строка выплёвывает перенос строки и всё)

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

  • Administrator
  • *****
  • Сообщений: 13919
  • Карма: 1793
  • Рыцарь ObjectARX
  • Skype: rivilis
Тут не системная переменная, а реактор (событие). Воспользуйся MGDDBG или ARXDBG для отслеживания.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн RomanАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Тут не системная переменная, а реактор (событие). Воспользуйся MGDDBG или ARXDBG для отслеживания.
Здравствуйте! Добрался я до MGDDBG. И действительно, определил, что перетаскивание работает с рейзом событий документа doc.CommandWillStart и doc.CommandEnded с именем команды "DROPGEOM". Однако, не словить момента, когда я начал перемещать объекты. Словно не хватает такого же события на начале операции перемещения (Drag). Оба события с "DROPGEOM" рейзятся только когда отпускаю уже мышь.

В итоге, исходную задачу: определить какие именно объекты были перемещены драгом, я не смогу через это событие.
К моменту, когда оно отработает, у меня уже успеет отработать событие Document.ImpliedSelectionChanged и снимется выделение со всех ранее выделенных объектов. Потому что выделение снимается в момент старта самого перемещения.


Оффлайн Привалов Дмитрий

  • ADN Club
  • *****
  • Сообщений: 560
  • Карма: 121
Словно не хватает такого же события на начале операции перемещения (Drag)
Посмотри события у DocumentCollection

using Cad = Autodesk.AutoCAD.ApplicationServices.Core.Application;
DocumentCollection docMen = Cad.DocumentManager

DocumentLockModeWillChange, после него наступает событие.
DocumentLockModeChanged

DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg Write, Write => NotLocked GlobalCommandName:GETCLIPDATA
DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg NotLocked, NotLocked => Write GlobalCommandName:#GETCLIPDATA
DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg Write, Write => NotLocked GlobalCommandName:DRAGENTER
DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg NotLocked, NotLocked => Write GlobalCommandName:#DRAGENTER
DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg Write, Write => NotLocked GlobalCommandName:DROPGEOM
DocMen_DocumentLockModeChanged (DocumentCollection, DocumentLockModeChangedEventArgs)  Чертеж1.dwg NotLocked, NotLocked => Write GlobalCommandName:#DROPGEOM