Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум .:3DCenter.ru:. _ Maxscript _ Подвисание 3dsmax во время выполения скриптов

Автор: illusion21 28/12/2011, 00:36

и снова здравствуйте. Создал новую тему вместо продолжения старой чтобы потом елси что люди с аналогичными вопросами могли найти ее.

итак имеется модель, для которой я сделал экспортер в свой собственный формат.
во время обхода модели вывожу процесс в прогресс бар и вижу как после некоторого времени прогресс бар перестает обновляться и в заголовке написано что 3д макс не отвечает. При этом рассчет продолжается и по завершению все отвисает обратно и работает в порядке.

Если ли какие нибудь методы профилактики этих подвисаний?

Автор: Prayer 28/12/2011, 08:24

ну это дефолтная штука в принципе во всех виндовых программах

иногда в таких случаях можно ставить в цикл кхм.. ну в вб это был doevents который как-бы прерывал для вывода, в делфи какой то контрол специальный был для этого типа факела что-ли
в си тоже что-то должно быть, и современных версиях для .нет тоже есть такое
Но при этом прерывание для обновления прогресс бара приведет к тому что скорость вычислений снизится, ну собственно засчет прерывания на обновление прогресс бара.
Думаю это будет особенно заметно в случае если вычисляется огромный массив какой-нибудь фигни и при этом на вычисления 1 элемента затрачивается очень мало времени.
Вообщем перебор какой-нибудь фигни, тогда обновление может немного затянуть процесс. А вот если там по секунд 30 или несколько минут вычисление идет то наверное заметной разницы не будет.

вообще что-бы сама прога не славливала "не отвечает", нужно процесс вычисления запихивать в отдельный поток. А вот как с прогресс баром быть, но возможно если прогресс бар будет как-бы тоже в потоке и из него выводится на экран то может такой фигни не будет. (Это когда объявляется в потоке вроде форма выводится на экран и там прогресс бар временный, правда я не уверен возможно точно так-же к концу цикла перестанет отвечать)

А может все это и не применимо для макс скриптов)

Автор: Pancir 28/12/2011, 08:41

если про макс скрипт то

progressStart
progressUpdate
progressEnd

Скорость вычисления снижается ~30%

Автор: RGhost 28/12/2011, 09:37

Цитата(illusion21 @ 28/12/2011, 01:36) *
Если ли какие нибудь методы профилактики этих подвисаний?


решение тут : http://forums.cgsociety.org/showpost.php?p=6944009&postcount=19

Автор: illusion21 28/12/2011, 12:32

app=dotNetclass "System.Windows.Forms.Application"
app.doEvents()

помогло.. только его надо не с каждой итерацией цикла вызывать а сильно реже, тогда замедления просчета нет.
Всем спасибо smile.gif

Автор: Track 30/12/2011, 07:54

http://lonerobot.net/?p=50

Автор: illusion21 30/12/2011, 12:38

ухты как интересно smile.gif

Форум Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)