How to output a dynamic variable?
This is a mechanical system i simulated on 3ds max. I had made a maxscript to output the angle of rotation of the cylinder shown in picture to external files. But the problem is that i need to output the angle of rotation in real time, meaning that when i rotate the cylinder, the outputted data updated the data in real time, just like what happen at the status bar(the coordinate input section which is marked red in the picture). Can anyone tell me how to output a dynamic variable (in this case is angle of rotation)? Or read the dynamic variable at the coordinate input section?
Attachment | Size |
---|---|
angle.png | 73.38 KB |
Comments
Thx for everyone's help! Now
Thx for everyone's help!
Now i can output the variable either when transform or animate!
the maxscript code i use as followed:
a=$cylinder01
b=$cylinder02
c=$cylinder03
d=$cylinder04
fs= createfile "C:\\Users\\User\\Desktop\\rotation angles1.txt"
when transform a changes handleAt:#redrawViews do (in coordsys parent format "rotation-y cylinder 01 = %\n" a.rotation.y_rotation to: fs )
fn time_cb = in coordsys parent format "rotation-y cylinder 01 = %\n" a.rotation.y_rotation to: fs
fn tcb = time_cb()
registerTimeCallback tcb
fs1= createfile "C:\\Users\\User\\Desktop\\rotation angles2.txt"
when transform b changes handleAt:#redrawViews do (in coordsys parent format "rotation-z cylinder 02 = %\n" b.rotation.z_rotation to: fs1 )
fn time_cb = in coordsys parent format "rotation-z cylinder 02 = %\n" b.rotation.z_rotation to: fs1
fn tcb = time_cb()
registerTimeCallback tcb
fs2= createfile "C:\\Users\\User\\Desktop\\rotation angles3.txt"
when transform c changes handleAt:#redrawViews do (in coordsys parent format "rotation-z cylinder 03 = %\n" c.rotation.z_rotation to: fs2 )
fn time_cb = in coordsys parent format "rotation-z cylinder 03 = %\n" c.rotation.z_rotation to: fs2
fn tcb = time_cb()
registerTimeCallback tcb
fs3= createfile "C:\\Users\\User\\Desktop\\rotation angles4.txt"
when transform d changes handleAt:#redrawViews do (in coordsys world format "rotation-z cylinder 04 = %\n" d.rotation.z_rotation to: fs3 )
fn time_cb = in coordsys parent format "rotation-z cylinder 04 = %\n" d.rotation.z_rotation to: fs3
fn tcb = time_cb()
registerTimeCallback tcb
But now the problem is that when i use the script above, i can only get the last files outputed, the other 3 earlier's text files is blank!
What should i do? is it i should make a loop or something else?
Can someone give example on how to fix this?
You overwrite the same named
You overwrite the same named function 4 times, their is why works only the last one.
my recent MAXScripts RSS (archive here)
It worked! Thank! You are my
It worked!
Thank! You are my Messiah!
if we knew what ur trying to
if we knew what ur trying to do we might be more helpfull :P
Raphael Steves
may be wiring params (w/o
may be wiring params (w/o output data to file) ?
[edit] Hi Wing, I was receive a mail from you (it was in spam) :) n/m I mean menu Animation / Wire Parameters, but of course I can only guess about the final goal of your script.
Cheers,
Anubis
my recent MAXScripts RSS (archive here)
have a look in the max help
have a look in the max help for "Change Handlers and When Constructs":
a little example:
I tried ur suggestion and it
I tried ur suggestion and it works!!
this is the code i used at this moment:
a=$cylinder01
fs= createfile "C:\\Users\\User\\Desktop\\source code5.txt"
when transform a changes do
(
in coordsys parent format "rotation-y cylinder 01 = %\n" a.rotation.y_rotation to: fs
)
and the result is as followed when i rotate the object:
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = 26.6364
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -4.65485
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -14.9164
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -15.7972
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -16.678
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -17.5588
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -19.3535
rotation-y cylinder 01 = 27.9907
rotation-y cylinder 01 = -20.6747
rotation-y cylinder 01 = 27.9907
The code worked but it repeated the first angle it recorded as well, any idea on how to solve this bug?
i troubleshooting for few days already and i still dont know why the bug still there.
Hi, I wonder how your script
Hi, I wonder how your script work w/o openFile() function.
For more infos see the openFile() function into the help.
my recent MAXScripts RSS (archive here)
$.rotation ? quatToEuler
$.rotation ?
quatToEuler $.rotation ?
print $.rotation ?
registerRedrawViewsCallback theFN ?
Raphael Steves
toolmode.coordsys
toolmode.coordsys #parent
a=$cylinder01
b=$cylinder02
fs= createfile "C:\\source code5.txt"
fs1= createfile "C:\\source code6.txt"
in coordsys parent format "rotation-y cylinder 01 = %" a.rotation.y_rotation to: fs
in coordsys parent format "rotation-z cylinder 02 = %" b.rotation.z_rotation to: fs1
x= in coordsys parent a.rotation.y_rotation
y= in coordsys parent b.rotation.z_rotation
I want to output my x and y in dynamic value, in which the variable(rotation angle) change in real time when i simulate the system in 3ds max(the rotation angle outputted dynamically when the animation run). How?