1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Active Grid Object

Тема в разделе "MAXScript", создана пользователем Feodor, 12 фев 2012.

Модераторы: Savin Denis
  1. Feodor

    Feodor Мастер

    С нами с:
    14.11.2002
    Сообщения:
    1.485
    Симпатии:
    62
    Баллы:
    367
    Можете помочь немного с написанием скрипта?
    У меня есть очень небольшой и простой самодельный скриптик, вот он

    macroScript ViewGrid
    category:"Plugins"
    internalcategory:"Plugins"
    ButtonText:"ViewGrid"
    tooltip:"ViewGrid"
    (
    actionMan.executeAction 0 "40135"
    actionMan.executeAction 0 "40084"
    )

    Его действия: он облегчает выбор в сцене Grid объекта. Создал на поверхности такой Helper как Grid, жму кнопку "G" кстати эта кнопка в Максе никогда не задействована ничем (сам доктор прописал как говорится) И вид становится по Grid объекту. Не нужно лезть во View, или как сейчас стало в Tools, искать там в длинной строчке Grid and Shapes затем Active Grid Object, потом щёлкать на параметр Viewport`а точнее правой мышкой на Perspective, ищем мышкой Extented Viewport - Grid - Display Plane. Мягко говоря неудобно, вот все эти действия я и повесил на этот скриптик.
    У меня вопрос: можно ли организовать, что бы при повторном нажатии на "G" включался Active Home Grid? И если возможно, возвратить тот вид который был до этого?
    Заранее спасибо за помощь.
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    В сцене могут быть несколько объектов Grid или только один объект?
    Если в сцене есть несколько объектов Grid, тогда:
    1. Если активирован Home Grid, тогда нужно активировать выделенный объект Grid?
    2. Если активирован объект Grid01 и выделяем объект Grid02 тогда нужно активировать объект Grid02 или Home Grid?

    1. В новой сцене создаем 2 объекта Grid: Grid01 и Grid02.
    2. Выделяем объект Grid01. Нажимаем кнопку "G". Нажимаем кнопку "G".
    3. Выделяем объект Grid01. Нажимаем кнопку "G". Выделяем объект Grid02. Нажимаем кнопку "G". Нажимаем кнопку "G".
    Код:
    macroScript ViewGrid category:"Plugins"
    ( 
    if(activeGrid==undefined)then (if(classof $==grid)then activeGrid=$)
    else 
    (
    t=undefined; if(classof $==grid)then if(activeGrid!=$)then t=$
    activeGrid=t
    ) 
    )
    Из каких видов вы переходите на вид Grid-Display Plane? Где вы хотите хранить информацию про предыдущие виды?
    Допустим запоминаем вид только когда переходим из вида User, Perspective, Top, Left, Front, Bottom, Right, Back.
    1. В новой сцене создаем 2 объекта Grid: Grid01 и Grid02. Устанавливаем вид Perspective.
    2. Выделяем объект Grid01. Нажимаем кнопку "G". Нажимаем кнопку "G".
    3. Выделяем объект Grid01. Нажимаем кнопку "G". Выделяем объект Grid02. Нажимаем кнопку "G". Нажимаем кнопку "G".
    Код:
    macroScript ViewGrid category:"Plugins"
    (
    global viewgrid_view_type_temp
    type_view_array=#(#view_top,#view_bottom,#view_right,#view_left,#view_front,#view_back,#view_persp_user,#view_iso_user)
    
    if(activeGrid==undefined)then --1
    (
    if(classof $==grid)then --1.1
    (
    activeGrid=$; temp=viewport.getType();
    if(findItem type_view_array temp !=0)then --1.1.1
    (
    viewgrid_view_type_temp=temp; actionMan.executeAction 0 "40227" -- save view
    viewport.setType #view_grid;
    )--if(findItem type_view_array t !=0)then 1.1.1
    )--if(classof $==grid)then 1.1
    )--if(activeGrid==undefined)then 1
    else --1
    (
    t=undefined; if(classof $==grid)then if(activeGrid!=$)then t=$
    activeGrid=t
    if(activeGrid!=undefined)then --1.1
    (
    temp=viewport.getType();
    if(findItem type_view_array temp !=0)then  --1.1.1
    (
    viewgrid_view_type_temp=temp; actionMan.executeAction 0 "40227" -- save view
    viewport.setType #view_grid;
    )--if(findItem type_view_array t !=0)then --1.1.1
    )--if(activeGrid!=undefined)then --1.1
    else--1.1
    (
    if(viewgrid_view_type_temp==undefined)then viewgrid_view_type_temp=#view_persp_user;
    viewport.setType viewgrid_view_type_temp;
    actionMan.executeAction 0 "40228" -- restore view
    )--else( 1.1
    )--if(activeGrid==undefined)then  else --1
    )
     
  3. Feodor

    Feodor Мастер

    С нами с:
    14.11.2002
    Сообщения:
    1.485
    Симпатии:
    62
    Баллы:
    367
    igorznag ух, как Вы намесили мне....
    Всё банально просто, всё почти как с камерой, выделяешь нужный Grid, жмёшь кнопку, во вьюпорте активируется выделенный. Повторное нажатие отключается.

    Пойду проверять,, очень благодарен за труд!
     
  4. Feodor

    Feodor Мастер

    С нами с:
    14.11.2002
    Сообщения:
    1.485
    Симпатии:
    62
    Баллы:
    367
    igorznag Последний вариант то что надо!!! Спасибо огромное!
     
Модераторы: Savin Denis

Поделиться этой страницей