Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Roman от 31-03-2025, 14:29:31
-
Добрый всем день! Пытаюсь определить, что объекты были перемещены группой. Когда я использую команду "Move", я могу понять по GetSystemVariables("CMDNAMES") - какая команда была вызвана в событии Document.ImpliedSelectionChanged, поскольку при выполнении команды происходит снятие выделения.
Однако, если выбрать группу и просто удерживая левую клавишу мыши (схватив за любой выделенный объект) тянуть группу, то на этом событии GetSystemVariables("CMDNAMES") возвращает пустую строку. Как-то я могу достоверно узнать, что перемещаются объекты в группе (и получить список этих объектов в группе?)
-
Ну, список выделенных можно просто проверить через Editor.SelectImplied, при перетаскивании меняется какая-то системная переменная, судя по командной строке када, определить и после ее изменения проверять.
-
Ну, список выделенных можно просто проверить через Editor.SelectImplied, при перетаскивании меняется какая-то системная переменная, судя по командной строке када, определить и после ее изменения проверять.
Да, через SelectImplied и определяю. Но, к сожалению, какая именно переменная меняется при обычном драге, я так и не вижу. Командная строка выплёвывает перенос строки и всё)
-
Тут не системная переменная, а реактор (событие). Воспользуйся MGDDBG или ARXDBG для отслеживания.
-
Тут не системная переменная, а реактор (событие). Воспользуйся MGDDBG или ARXDBG для отслеживания.
Здравствуйте! Добрался я до MGDDBG. И действительно, определил, что перетаскивание работает с рейзом событий документа doc.CommandWillStart и doc.CommandEnded с именем команды "DROPGEOM". Однако, не словить момента, когда я начал перемещать объекты. Словно не хватает такого же события на начале операции перемещения (Drag). Оба события с "DROPGEOM" рейзятся только когда отпускаю уже мышь.
В итоге, исходную задачу: определить какие именно объекты были перемещены драгом, я не смогу через это событие.
К моменту, когда оно отработает, у меня уже успеет отработать событие Document.ImpliedSelectionChanged и снимется выделение со всех ранее выделенных объектов. Потому что выделение снимается в момент старта самого перемещения.
(https://i.ibb.co/Zp404YH2/Screenshot-36.png) (https://imgbb.com/)
-
Словно не хватает такого же события на начале операции перемещения (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