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

Переход из Перспективы во все Ортографические виды (с помощь одной кнопки)

Тема в разделе "MAXScript", создана пользователем Александр Чернега, 27 окт 2010.

Модераторы: Savin Denis
  1. Александр Чернега

    Александр Чернега Знаток

    С нами с:
    24.12.2009
    Сообщения:
    1.058
    Симпатии:
    56
    Баллы:
    53
    Товарищи, добрый вечер. Помогите пожалуйста расшифровать (вторую) строчку из хелпа

    ViewCubeOps.DragSnapping : bool : Read|Write -- Работающая функция
    Get/set the state of the "Snap To Closest View" option. -- Приписка к ней


    Для чего это надо:

    Создал скрикпт, который переводит вид вьюпорта из Перспективы в любой Изометрический и назад (с помощью одной кнопки)
    Для того что бы прейти в Ортографический (Топ, Фронт, Лефт) перед запуском скрипта приходится клацать по одной из сторон Виев куба.

    Первая строчка - ViewCubeOps.DragSnapping : bool : Read|Write - включает функцию – выравнивать вид по ближайшей стороне куба (во время вращения куба). Предполагаю, что есть функция которая автоматически определяет какой вид ближе, и по нему выравнивает (К примеру: если вид почти Лефт – делает его Лефт и т.д.) (Рис. 1)


    Идея Скрипта:

    1) Щелкаю по имени нужного вида на Виев кубе ( Нужно чтоб определялось автоматически)
    2) Запуск скрипта, входит в ортографический вид.
    3) Повторных запуск скрипта, выходит в перспективу
    (Для сохранения опорной точки вращения после перехода из оргто в перспективу, перед входом в орто совершается SetCurrentViewAsHome, а при выходе GoHome())
    (Работает в режиме вращения Орбит, не обриб сай обджект)


    Код:
    (
    CurentViewType = viewport.getType ()
    
    if
    (CurentViewType == #view_persp_user)
    
    Then
    -- Вот тут бы не помешало автоматическое определение ближайшего вида.
    (ViewCubeOps.SetCurrentViewAsHome()
    viewport.setType #view_iso_user)
    
    else 
    (ViewCubeOps.GoHome())
    )
    
     

    Вложения:

    • 1994422.jpg
      1994422.jpg
      Размер файла:
      163,6 КБ
      Просмотров:
      73
  2. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Это параметр позволяет получить / установить свойство "Snap To Closest View"
    если установить его то при вращении куба будет пытаться прилипать к ближайшей позиции.

    функцию определение ближайшего вида нужно писать.

    PS
    Если не ошибаюсь где-то был скрипт доворота объекта, тебе же вроде и писал.
     
  3. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Попробуй так:
    Код:
    vTM = Inverse(getViewTM()); viewDir = -vTM.row3; 
    CurentViewType =viewport.getType() 
    if(CurentViewType==#view_persp_user)then
    (
    proj1=dot viewDir [1,0,0]; proj2=dot viewDir [0,1,0]; proj3=dot viewDir [0,0,1];
    proj_array=#(proj1,proj2,proj3); proj_array_abs=#(abs proj1,abs proj2, abs proj3)
    proj_index=finditem proj_array_abs (amax proj_array_abs)
    proj=proj_array[proj_index]; view_type=#view_persp_user
    if(proj_index==1)then if(proj>0)then view_type=#view_left else view_type=#view_right
    if(proj_index==2)then if(proj>0)then view_type=#view_front else view_type=#view_back 
    if(proj_index==3)then if(proj>0)then view_type=#view_bottom else view_type=#view_top
    
    actionMan.executeAction 0 "40227"  -- Views: Save Active View
    viewport.setType view_type
    )
    else (viewport.setType #view_persp_user; actionMan.executeAction 0 "40228")  -- Views: Restore Active View
    
     
  4. Александр Чернега

    Александр Чернега Знаток

    С нами с:
    24.12.2009
    Сообщения:
    1.058
    Симпатии:
    56
    Баллы:
    53
    Igorznag большое спасибо за код. Он хороший, но делает не совсем то, что я имел в виду когда задавал это вопрос. Сейчас скрипт определяет какой вид ближе и переходит в его орто проекцию. Я хотел, что б он определял ближайший вид и доворачивал до него в окне перскективы (ни куда не переключаясь.).

    Текстово объяснить более подробно сложно, так что видео.


    Видео со звуком.
    Звук с помехами. Заикание :)


     
Модераторы: Savin Denis

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