Панель свойств захлопывает список слоев при открытии транзакции

Автор Тема: Панель свойств захлопывает список слоев при открытии транзакции  (Прочитано 15470 раз)

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

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

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
Попробовал с командой. Веселуха! Теперь список слоев не схлопывается. Зато все весело моргает. При каждом перемещении мыши по слоям/цветам происходит присвоение объекту слоя/цвета, отображение его на экране, вызов события модификации, вызов doc.SendStringToExecute и (ОПА!) присвоение старого слоя, отображение старого цвета на экране, затем вызов моей команды, перерисовка моей палитры (как ни старался, но она при этом моргает). И так далее пока пользователь не кликнет слой.
То есть не надо никаких транзакций. В ObjectModified только вызов SendStringToExecute и больше ничего. И этого достаточно для эффекта елочной гирлянды :) Ну хотя бы слой пользователь теперь может выбрать. Оставлю так  :-\

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
С правильными - это с какими? эхо отключить? true, true, false - годится?
Я что-то вчера пробовал - никак не получилось. Если есть модификация объекта - то такое поведение в списке слоёв никак не фиксится. SendStringToExecute точно так же работает, как и прямой вызов метода из события. Видимо, они с методом Editor.WriteMessage сильно по-разному работают.
Более-менее адекватно получилось, если использовать событие Editor.EnteringQuiscentState для модификации объекта. Но оно вызывается сильно позже изменения свойств в палитре. Когда уже в чертеже начинаешь выполнять какие-то действия.
Думаю, надо копать в сторону определения редактирования с помощью палитры свойств и ждать когда это редактирование закончится. Но как это сделать - не представляю.
Ну и самое простое решение - в требованиях к приложению указывать, что надо отключать предпросмотр изменений свойств  8) И я на самом деле считаю, что это приемлемо. Т.к. то, как Autodesk реализовал эту штуку - это тихий ужас просто :-X

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Ну хотя бы слой пользователь теперь может выбрать.
А у меня с SendStringToExecute не выбирался. Видимо, как-то влияет то, что у меня не голый Автокад, а Сивил.

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

  • ADN Club
  • *****
  • Сообщений: 822
  • Карма: 166
    • Мои плагины к Автокаду
А у меня с SendStringToExecute не выбирался. Видимо, как-то влияет то, что у меня не голый Автокад, а Сивил.
Еще интересней. Цвет линий поменять могу - просто мельтешит, как выше писал. А вот цвет граней солида - не могу, захлопывается список цветов и применяется тот цвет, который успел попасть под мышь. или старый. В общем только отключать PROPERTYPREVIEW

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Думаю, надо копать в сторону определения редактирования с помощью палитры свойств и ждать когда это редактирование закончится. Но как это сделать - не представляю.
Наверное так: https://adn-cis.org/forum/index.php?topic=10109.msg46193#msg46193
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение