Notifications
Clear all

[Closed] Problem with getSaveFileName

I’ve written this (pretty handy) script which saves the camera parameters of an animation. When I run the script, it always fails to create a file on the first attempt, but then it works on the second (or third or fourth…) attempt.

The problem seems to be that max script tries to execute the “if output_name != undefined” before I have time to select a file name. What am I doing wrong?


output_name = getSaveFileName caption:"Animation Camera Parameters" types:"Text (*.txt)|*.txt|All Files (*.*)|*.*|"

 if output_name != undefined then 
 (
	 output_file = createfile output_name
	cam = cameras[1]

	format "frame, pix_width, pix_height, fov_w, Zn, Zf, RightX, RightY, RightZ, DownX, DownY, DownZ, ForX, ForY, ForZ, cam_x, cam_y, cam_z
" to:output_file

	 for frame=animationRange.start to animationRange.end do
	 (
		 sliderTime = frame			 
		vRight = cam.transform[1]
		vDown = -cam.transform[2]
		vForward = -cam.transform[3]
	
		format "% % % % % % % % % % % % % % % % % %
" frame renderWidth renderHeight cam.fov cam.nearclip cam.farclip vRight.x vRight.y vRight.z vDown.x vDown.y vDown.z vForward.x vForward.y vForward.z cam.pos.x cam.pos.y cam.pos.z to:output_file
	 )
	 
	close output_file
)

3 Replies

the problem might be with the createFile function. Personally i never use it, if i ever need to write to a file i use

openFile <filename> mode:"w"

which automatically creates the file if it doesnt exist and overrides if it does. note the mode:“w” which sets the read/write mode to write. i THINK that if you use the createFile function you then need to call the openFile function with mode:“w” immediatly after anyway. not tested but off the top of my head i think that’s your problem

On first look, your code looks ok (except for being run in global scope which is not a cause of problem here).
I copied your code into a fresh editor, pressed Ctrl+E and it worked the FIRST time as expected.

Of course, I would have expected such code to be inside a MacroScript body as a toolbar button. So the question is – is this the whole code and how exactly do you run it?

I’m using createfile right now and as long as you do

var = createfile pathstring

it’ll automatically open it.