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

ADN Club => ObjectARX => Тема начата: VetalBY от 29-01-2018, 16:29:05

Название: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: VetalBY от 29-01-2018, 16:29:05
На днях прислали баг: обнаружилось ,что имеются проблемы с работой команды "Быстрый выбор". Выяснилось, что проблемы возникают при добавлении кастомных свойств в окно свойcтв AutoCAD. Проблема точно проявляется, если в файле есть размеры. Суть в том, что выбираются либо просто все объекты в чертеже, либо вообще ничего, не смотря на то, что задан правильный фильтр.
Посмотрел другие разработки, например GeomProps Александра Ривилиса (там также используется окно свойств акада) - проблема также есть.
Может кто-то сталкивался с подобной проблемой и знает, как её решить или обойти?
(https://s18.postimg.org/4snydwarp/props.jpg) (https://postimg.org/image/4snydwarp/)
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 16:31:44
Посмотрел другие разработки, например GeomProps Александра Ривилиса (там также используется окно свойств акада) - проблема также есть.
А если перед запуском QSELECT выполнить GeomPropsStop? У меня в этом случае окно QSELECT становится обычным (нормальным). Если это сработает, то дальше разовью идею.
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 16:50:00
Вот так это выглядит:

Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: VetalBY от 29-01-2018, 17:06:29
А если перед запуском QSELECT выполнить GeomPropsStop? У меня в этом случае окно QSELECT становится обычным (нормальным). Если это сработает, то дальше разовью идею.
Это (даже не знал, что есть такая команда) работает! А что Вы делаете на stop? Я так понимаю на commandWillStart можно сделать stop, а на commandEnded и commandCancelled сделать start?
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 17:11:02
Я так понимаю на commandWillStart можно сделать stop, а на commandEnded и commandCancelled сделать start?
Именно так.
А что Вы делаете на stop?
Я делаю элементарную вещь - взвожу глобальный флажок, который проверяется в различных методах. Но подозреваю, что достаточно проверять только в методе ::Connect как-то так:
Код - C++ [Выбрать]
  1. STDMETHODIMP CCAreaProps::Connect (IDynamicPropertyNotify2 *pSink) {
  2.         if ( pSink == NULL   || !GeomPropsWorking) // GeomPropsWorking - это как раз наш глобальный флажок
  3.                 return (E_POINTER) ;
  4.         m_pNotify =pSink ;
  5.         m_pNotify->AddRef () ;
  6.         _variant_t l_sel;  
  7.         if (SUCCEEDED(m_pNotify->GetCurrentSelectionSet(&l_sel))) {
  8.                 UpdateInfo(&l_sel); // Обновляем данные
  9.                 DocVars.docData().GetGeomProperties();
  10.         }
  11.         return (S_OK) ;
  12. }
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 17:14:10
Я так понимаю на commandWillStart можно сделать stop, а на commandEnded и commandCancelled сделать start?
Еще немножко подумал, и решил, что можно обойтись и без реакторов. Достаточно проверить текущее имя команды (если оно есть) при помощи
функции acedGetCommandForDocument.
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: VetalBY от 29-01-2018, 18:02:59
Еще немножко подумал, и решил, что можно обойтись и без реакторов. Достаточно проверить текущее имя команды (если оно есть) при помощи функции acedGetCommandForDocument.
Да, этого достаточно.
Конкретно для этой проблемы минимально достаточно провериться в GetCurrentValueType (именно он вызывается первым).
Но я думаю, возможно перестрахуюсь и проверю в IsPropertyEnabled и возможно Connect.
Спасибо за помощь :)
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: VetalBY от 29-01-2018, 18:19:22
Рано радовался, не всё так гладко, попозже отпишусь...
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 18:28:14
Рано радовался, не всё так гладко, попозже отпишусь...
Интересно что не так?
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: VetalBY от 29-01-2018, 18:57:43
Интересно что не так?
Плохо проверил, не во всех случаях срабатывает. Правильнее провериться в GetCategoryName и этого достаточно. Если в процессе тестов что-то вылезет, напишу. А в целом мысль правильная. Интересно, это баг или так задумано AutoDesk'ом?
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 29-01-2018, 19:07:37
Правильнее провериться в GetCategoryName и этого достаточно.
У меня там тоже проверяется. Т.е. внутри класса проверки только в методах Connect и GetCategoryName.
Интересно, это баг или так задумано AutoDesk'ом?
Баг. Но похоже очень древний и вероятность его исправления невелика. Тем более, что его можно "обойти" не слишком сложным образом.
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Anatoly от 02-09-2020, 12:37:31
А если перед запуском QSELECT выполнить GeomPropsStop? У меня в этом случае окно QSELECT становится обычным (нормальным)
А если потом выполнить GeomPropsStart, то GeomProps восстановятся в палитре свойств?
Название: Re: Проблемы с "быстрым выбором" при добавлении свойств в окно свойств AutoCAD
Отправлено: Александр Ривилис от 02-09-2020, 12:40:39
А если перед запуском QSELECT выполнить GeomPropsStop? У меня в этом случае окно QSELECT становится обычным (нормальным)
А если потом выполнить GeomPropsStart, то GeomProps восстановятся в палитре свойств?
Да, конечно.