2
$\begingroup$

I need to open an STL file with Blender, run a script that finds it's dimensions and send them to a php page. All of this should essentially be done through command line or a python script.

So far I've been using cmd with this command:

blender -b C:\blenderTesting\test.blend -o C:\blenderTesting\ -P C:\blenderTesting\test.py

blender -b C:\blenderTesting\test.blend opens the file in blender

-o C:\blenderTesting\ sets the folder for the file to be saved to when finished

-P C:\blenderTesting\test.py runs the python script that finds the dimensions of the object

When I use the above command cmd returns, Error executing Python script from command-line: C:\blenderTesting\test.py (at line 231).

This is the end of the python script

def write(filename):
    outputFile = open(filename, "w")
    outputFile.write(String);
    outputFile.close()

This is line 231 of test.py

Blender.Window.FileSelector(write, "Export")

I'm assuming the problem is that since I'm running this script via Blender background mode it can't open the export window in Blender. I don't want to do this anyway, since I want the script to automatically save the data in a php file. So is there a way to change the ending (line 231) of the python script to automatically save the data without using the export window?

If not, could I accomplish this another way?

Thanks for the help!

$\endgroup$
11
  • $\begingroup$ Uhm, could be I don´t get your problem, but calling write directly in your script doesn´t work for you? $\endgroup$
    – user2859
    Apr 2, 2014 at 9:38
  • $\begingroup$ if I open blender with the GUI and manually run the script that finds the data, and manually save it then it works fine. $\endgroup$ Apr 2, 2014 at 9:41
  • $\begingroup$ Calling your write(filename) should also work in background mode. What errors do you get when trying this? $\endgroup$
    – user2859
    Apr 2, 2014 at 9:44
  • $\begingroup$ This is nice but I need to make it automatic, so I run it through the command-line. The problem is with the "Blender.Window.FileSelector(write, "Export")" line. I think this is because blender can't open the Blender.Window.FileSelector since it's being run in the command-line. $\endgroup$ Apr 2, 2014 at 9:45
  • $\begingroup$ I know you want to do this automatically. Instead of calling Blender.Window.FileSelector.. just call write. $\endgroup$
    – user2859
    Apr 2, 2014 at 9:46

1 Answer 1

2
$\begingroup$

You could run Blender through PHP, pass arguments (see here) and let Blender print JSON-encoded data wrapped by some text markers. Extract and parse the JSON-data with PHP and use it.

Example implementation:

https://github.com/CoDEmanX/blend_stats

Note that Blender.Window.FileSelector(...) is only valid in Blender 2.4x, API is completely different in 2.5x / 2.6x.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .