Render.ru

Copy and paste coordinats

kolts

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


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
#2
Обновление можно сделать через калбэки или повесить на внешний скрип контроллер.
 

kolts

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

Savin Denis

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