Hi,
I try to make a little script to change randomly length of 2 vertex spline segments.
(to make sketchy effects like in capture )
It works but I want to have an undo.
So I made a button to store vertex positions when I want.
So I can tweak
If I want to restore vertex position I press "revert" button.
Boom, I can't make it working.
As always with arrays I reach very quickly my scripting limits :-)
Anybody can help ?
Thanks.
(
try destroyDialog rRANGE catch()
global rRANGE = rollout rRANGE "RANGE"
(
button KEEP "Keep" width:120 height:25
spinner spB "range " width:80 range:[-100,100,0.0] type:#float
spinner spH "range " width:80 range:[-100,100,0.0] type:#float
button GO "GO" width:120 height:25
button REVE "Revert" width:120 height:25
on Go pressed do
(
selec =$
for Aseg=1 to numsplines selec do
(
verts = numKnots selec Aseg
for i=1 to verts by 2 do
(
knt1 = getKnotPoint selec Aseg i
knt2 = getKnotPoint selec Aseg (i+1)
vec= knt2 - knt1
Nvec= normalize (vec)
setKnotPoint SELEC Aseg i ([knt1.x,knt1.y,knt1.z]- Nvec * ( random spB.value spH.value) )
setKnotPoint SELEC Aseg (i+1) ([knt2.x,knt2.y,knt2.z]+ Nvec * ( random spB.value spH.value) )
)
)
updateShape selec
)
on KEEP pressed do
(
selec =$
ZZ=0
knt = #()
for Aseg=1 to numsplines selec do
(
verts = numKnots selec Aseg
for i=1 to verts do
(
ZZ=ZZ+1
knt[ZZ] = getKnotPoint selec Aseg i
)
)
)
on REVE pressed do
(
selec =$
ZZ=0
for Aseg=1 to numsplines selec do
(
verts = numKnots selec Aseg
for i=1 to verts do
(
ZZ=ZZ+1
setKnotPoint selec Aseg i ( knt[ZZ] )
)
)
updateShape selec
)
)
createDialog rRANGE 160 250
setFocus rRANGE.spB
)
miauu · 2019-11-24