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

Copy and paste coordinats

Тема в разделе "MAXScript", создана пользователем kolts, 14 июл 2010.

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

    kolts Активный участник

    С нами с:
    05.02.2008
    Сообщения:
    448
    Симпатии:
    0
    Баллы:
    17
    Очень часто при риггинге возникает необхомость скопировать координаты одного объекта и вставить в координаты другого либо с минусом либо такие же. Написал простенький скрипт для этого. Все работает, но хотелось бы узнать как сделать чтоб в диалоговом окне обновлялись координаты объекта, сделал через таймер, обновляется но не сразу а скачками, при том что интервал у таймера минимальный
    Скрипт пишу для интереса и может кому то он пригодится


    rollout CopyandPaste "Copy and paste" width:288 height:280
    (
    button btn1 "x" pos:[24,24] width:24 height:26
    button btn2 "y" pos:[24,64] width:24 height:26
    button btn3 "z" pos:[24,104] width:24 height:26
    GroupBox grp1 "Copy" pos:[8,8] width:135 height:176
    button btn4 "all" pos:[24,144] width:24 height:26
    button btn5 "x" pos:[175,24] width:24 height:26
    button btn6 "y" pos:[175,64] width:24 height:26
    button btn7 "z" pos:[175,104] width:24 height:26
    GroupBox grp2 "Paste" pos:[160,8] width:56 height:176
    button btn8 "all" pos:[175,144] width:24 height:26
    button btn9 "-x" pos:[239,24] width:24 height:26
    button btn10 "-y" pos:[239,64] width:24 height:26
    button btn11 "-z" pos:[239,104] width:24 height:26
    GroupBox grp3 "- Paste" pos:[223,8] width:56 height:176
    button btn12 "-all" pos:[239,144] width:24 height:26
    spinner spn1 "" pos:[56,32] width:80 height:16 range:[-20000,20000,0] type:#worldunits
    spinner spn2 "" pos:[56,72] width:80 height:16 range:[-20000,20000,0] type:#worldunits
    spinner spn3 "" pos:[56,112] width:80 height:16 range:[-20000,20000,0] type:#worldunits
    Timer tmr1 "Timer" pos:[143,234] width:24 height:24 interval:1

    on CopyandPaste open do
    (

    x = spn1.value = $.pos.x
    y = spn2.value = $.pos.y
    z = spn3.value = $.pos.z
    )

    on btn1 pressed do
    x = $.pos.x

    on btn2 pressed do
    y = $.pos.y

    on btn3 pressed do
    z = $.pos.z

    on btn4 pressed do
    (
    x = $.pos.x
    y = $.pos.y
    z = $.pos.z
    )
    on btn5 pressed do
    $.pos.x = x
    on btn6 pressed do

    $.pos.y = y

    on btn7 pressed do
    $.pos.z = z

    on btn8 pressed do
    (
    $.pos.x = x
    $.pos.y = y
    $.pos.z = z
    )

    on btn9 pressed do
    $.pos.x = -x

    on btn10 pressed do
    $.pos.y = -y

    on btn11 pressed do
    $.pos.y = -z

    on btn12 pressed do
    (
    $.pos.x = -x
    $.pos.y = -y
    $.pos.z = -z
    )

    on spn1 changed val do
    $.pos.x = spn1.value

    on spn2 changed val do
    $.pos.y = spn2.value

    on spn3 changed val do
    $.pos.z = spn3.value

    //Проверка на изменение координат
    on tmr1 tick do
    (
    if $.pos.x != x do
    (
    x = $.pos.x
    spn1.value = $.pos.x
    )
    if $.pos.y != y do
    (
    y = $.pos.y
    spn2.value = $.pos.y
    )
    if $.pos.x != z do
    (
    z = $.pos.z
    spn3.value = $.pos.z
    )
    )
    )
    CreateDialog CopyandPaste style: #(#style_titlebar, #style_border, #style_sysmenu, #style_minimizebox)
    Проблема очень не существенная но хотелось бы узнать ка сделать правильно
     
  2. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Обновление можно сделать через калбэки или повесить на внешний скрип контроллер.
     
  3. kolts

    kolts Активный участник

    С нами с:
    05.02.2008
    Сообщения:
    448
    Симпатии:
    0
    Баллы:
    17
    А можно пример как это делается? Кстати чтоб скрипт заработал надо объявить переменные, добавить строчку global x,y,z после обьявления компонентов. В принципе понимаю что переменные глобальные и можно легко получить доступ к ним в любом другом скрипте но синтаксис не знаю. И еще сделать проверку на наличие выделенного объекта но это мелочи
     
  4. Savin Denis vip

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

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Примеры смори а в хелпе.
    Все зависит от твоей фантазии.
    Можно только селект отлавливать,
    Можно отлавливать селект и вешать обработчик позиции,
    А Можно к от рисовке вюпорта прицепиться.
    Переменные объяви локально в теле роллаута.
     
Модераторы: Savin Denis

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