Render.ru

синтаксис MAXScript в макс2012

maiden666

Мастер
Рейтинг
112
#1
простой скрипт, который меняет отображения слоя (обьекта), с Wireframe на Shaded и обратно.

objs_display_n=0;
for o in selection do (ol=o.INodeLayerProperties.layer;
if(ol.display==#Wireframe)then objs_display_n=objs_display_n+1;)
for o in selection do (ol=o.INodeLayerProperties.layer;
if(selection.count==objs_display_n)then (ol.display=#viewport;)
else (ol.display=#Wireframe;))
completeRedraw();

во всех версиях до 2011 работает, в 2012 - нет. Неужели синтаксис поменяли, или дело в чём-то другом, я-то в этом ни бум-бум, а скрипт нужен
 
Рейтинг
31
#2
Достаточно странный скриптик... впрочем работает. И под 3ds Max Design 2012 тоже. Думаю, что будет работать и в не-Design версии.

Проверь:
  • Customize / Preferences / Genegal / Layer Defaults / Default to By Layer for New Nodes - должно быть включено
  • Выделить все объекты сцены, из меню по правой кнопке мыши Object Properties, вкладка General, группа Display Properties. Кнопка By Object/By Layer должна быть в состоянии By Layer.
 

maiden666

Мастер
Рейтинг
112
#3
проверил - ни фига не работает. ( про кнопку By Layer я знал, Default to By Layer for New Nodes был выключен), скрипт использую так: New Script-> paste, затем копирую текст скрипта на новую кнопку, как делал и в других версиях,и всё без толку, у меня как раз Дизайн, к слову, в чём дело - понять не могу, и похоже это не мой локальный глюк, просил ребят из группы вконтакте проверить - та же история
Да, забыл ещё сказать - если в Layer Properties-> Display поставить Wireframe (а вьюпорт включен Shaded,) то ничего вообще не меняется, то есть так и остаётся шейдед, не реагируя на свойства слоя
 
Рейтинг
31
#4
Проверил, перед тем как отвечать. РАБОТАЕТ.
Попробуй сделать:
Выделить все объекты сцены, из меню по правой кнопке мыши Object Properties, вкладка General, группа Display Properties. Кнопка By Object/By Layer должна быть в состоянии By Layer.
Переведи кнопку в состояние By Layer и нажми Ok.
После чего ещё раз попробуй запустить скрипт.

Я запускал скрипт "в лоб": через клипборд перекинул текст в MaxScript Editor и запускал по Ctrl-E.

Да, забыл ещё сказать - если в Layer Properties-> Display поставить Wireframe (а вьюпорт включен Shaded,) то ничего вообще не меняется, то есть так и остаётся шейдед, не реагируя на свойства слоя
Судя по этому, у тебя Display Properties существуют индивидуально для каждого объекта (т.е. кнопка в положении By object). Поэтому перенастройка свойств слоя не даёт эффекта.
 

maiden666

Мастер
Рейтинг
112
#5
неа, стоит By layer, причём для всех вновь созданных обьектов (по умолчанию все создаются в одном слое). Попробую запустить скрипт твоим способом, но завтра, сейчас некогда эксперементировать, но начинаю склоняться к тому, что дело в глюке,( или в какой-то настройке, о которой я не знаю), цвет обьектов, к примеру, меняется, если в свойствах слоя его поменять, прочие параметры - нет, сейчас вот у меня запущен 2011, там с этим всё нормально, значит 2012 косячит
 
Сверху