Render.ru
Поддержать

Copy and paste coordinats

kolts

Активный участник
Рейтинг
16
Очень часто при риггинге возникает необхомость скопировать координаты одного объекта и вставить в координаты другого либо с минусом либо такие же. Написал простенький скрипт для этого. Все работает, но хотелось бы узнать как сделать чтоб в диалоговом окне обновлялись координаты объекта, сделал через таймер, обновляется но не сразу а скачками, при том что интервал у таймера минимальный
Скрипт пишу для интереса и может кому то он пригодится


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)
Проблема очень не существенная но хотелось бы узнать ка сделать правильно

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Обновление можно сделать через калбэки или повесить на внешний скрип контроллер.

kolts

Активный участник
Рейтинг
16
А можно пример как это делается? Кстати чтоб скрипт заработал надо объявить переменные, добавить строчку global x,y,z после обьявления компонентов. В принципе понимаю что переменные глобальные и можно легко получить доступ к ним в любом другом скрипте но синтаксис не знаю. И еще сделать проверку на наличие выделенного объекта но это мелочи

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
Примеры смори а в хелпе.
Все зависит от твоей фантазии.
Можно только селект отлавливать,
Можно отлавливать селект и вешать обработчик позиции,
А Можно к от рисовке вюпорта прицепиться.
Переменные объяви локально в теле роллаута.