3DCenter.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> C++ RedrawViews(), Проблема
Pancir
сообщение 19/01/2013, 00:28
Сообщение #1


Избранный :)
Иконка группы

Группа: Участник
Сообщений: 5 052
Регистрация: 20/01/2004
Из: Химки м/о
Пользователь №: 4 253



Пишу процедурный объект, отрисовываю его в ViewExp, т.е он по сути не геометрия а хелпер, в зависимости от параметров введенных в ролаут, рисуется разный значок.
Важный момент то, что я не использую парам блок, все UI сделано самостоятельно...
Проблема возникает вот где: после смены какого нибудь параметра в UI мне нужно перерисовать значок во вью порте... в примерах я часто вижу использование функции RedrawViews(), но в моем случае результата я не вижу никакого... что я делаю не так? и как вообще эта функция должна работать, ибо не первый раз натыкаюсь, что результата ее действия не наблюдаю... из хелпа (This method may be called to cause the viewports to be redrawn. ), если я эту функция меняю например на ForceCompleteRedraw то результат виден... Или возможно есть, какой-то иной способ, спровоцировать перерисовку именно этого объекта, а не всех?

Сообщение отредактировал Pancir - 19/01/2013, 00:29
Go to the top of the page
 
+Quote Post
Lastjedi
сообщение 19/01/2013, 10:20
Сообщение #2


Учитель
Иконка группы

Группа: Участник
Сообщений: 322
Регистрация: 18/06/2002
Из: Москва
Пользователь №: 72



Проблема может быть связана с неправильным интервалом валидности объекта. Если макс считает, что объект валиден, то и перестраивать его нет смысла.
Go to the top of the page
 
+Quote Post
Pancir
сообщение 19/01/2013, 12:30
Сообщение #3


Избранный :)
Иконка группы

Группа: Участник
Сообщений: 5 052
Регистрация: 20/01/2004
Из: Химки м/о
Пользователь №: 4 253



Такс тогда снова вопрос возникает, порыл хелп,правда пока бегло на предмет Valid, и пока не понял как мне решить такую проблему ((( Можно попросить, подсказать путь куда рыть?
Go to the top of the page
 
+Quote Post
Lastjedi
сообщение 19/01/2013, 15:05
Сообщение #4


Учитель
Иконка группы

Группа: Участник
Сообщений: 322
Регистрация: 18/06/2002
Из: Москва
Пользователь №: 72



Процедурный объект отрисовывается во вьюпорте путем вызова функции Display. Это виртуальная функция, описанная в классе BaseObject.
В MAX SDK написано (http://docs.autodesk.com/3DSMAX/15/ENU/3ds...2301217941d26fb
Цитата
For this method to be called the object's validity interval must be invalid at the specified time t. If the interval is valid, the system may not call this method since it thinks the display is already valid.
Таким образом, после изменения объекта необходимо сбросить его интервал валидности.

В простейшем случае это делается через функцию ObjectValidity (http://docs.autodesk.com/3DSMAX/15/ENU/3ds...54d0db63324f095). Это виртуальная функция, описанная в классе Object. В собственном классе ее необходимо переопределить так, чтобы она возвращала невалидный интервал при обновлении объекта.
Go to the top of the page
 
+Quote Post
Pancir
сообщение 20/01/2013, 00:33
Сообщение #5


Избранный :)
Иконка группы

Группа: Участник
Сообщений: 5 052
Регистрация: 20/01/2004
Из: Химки м/о
Пользователь №: 4 253



QUOTE
Процедурный объект отрисовывается во вьюпорте путем вызова функции Display. Это виртуальная функция, описанная в классе BaseObject.
В MAX SDK написано (http://docs.autodesk.com/3DSMAX/15/ENU/3ds...2301217941d26fb

Да. я через нее значок рисую во вьюпорте...

Есть засада.
Функция RedrawViews() не провоцирует вызов функции ObjectValidity().
Go to the top of the page
 
+Quote Post
Lastjedi
сообщение 20/01/2013, 10:40
Сообщение #6


Учитель
Иконка группы

Группа: Участник
Сообщений: 322
Регистрация: 18/06/2002
Из: Москва
Пользователь №: 72



Возможно не хватает уведомления об изменении объекта.
Обычно непосредственно перед RedrawViews или после изменения параметров вызывают функцию NotifyDependents с сообщением REFMSG_CHANGE.
В SDK есть много примеров с использованием NotifyDependents.
Go to the top of the page
 
+Quote Post
Pancir
сообщение 20/01/2013, 22:17
Сообщение #7


Избранный :)
Иконка группы

Группа: Участник
Сообщений: 5 052
Регистрация: 20/01/2004
Из: Химки м/о
Пользователь №: 4 253



Да ее тоже пробовал....
правда вроде не перед RedrawViews
надо еще раз попробовать..
Go to the top of the page
 
+Quote Post
Bots
сообщение Системное сообщение






Fast ReplyReply to this topicStart new topic

1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 26/04/2024 - 03:24