Reputation: 1466
I want to convert an .stl file to .obj, without using blender interface.
To do that, i want to do it in two step :
1 STL to BLEND
2 BLEND to OBJ
Actually BLEND to OBJ work ok with this python code :
import bpy
import sys
argv = sys.argv
argv = argv[argv.index("--") + 1:] # get all args after "--"
obj_out = argv[0]
bpy.ops.export_scene.obj(filepath=obj_out, axis_forward='-Z', axis_up='Y')
and with this batch :
@echo off
rem Put the path of the blender folder
set PATH=C:\Program Files\Blender Foundation\Blender
set FILENAME=guitar.blend
set TARGET=guitar.obj
rem Launch
blender %FILENAME% --background --python convert_blend_to_obj.py -- %TARGET%
pause
This work perfectly.
The problem is with the STL to BLEND, its not working with this python code :
import bpy
import sys
argv = sys.argv
argv = argv[argv.index("--") + 1:] # get all args after "--"
blend_out = argv[0]
bpy.ops.import_mesh.stl(filepath=blend_out, axis_forward='-Z', axis_up='Y')
And the batch associated :
@echo off
rem Put the path of the blender folder
set PATH=C:\Program Files\Blender Foundation\Blender
set FILENAME=turbine.stl
set TARGET=turbine.blend
rem Launch
blender %FILENAME% --background --python convert_stl_to_blend.py -- %TARGET%
pause
i got as an error : File format is not supported in file C:..\turbine.stl Blender quit
I think the problem is in my python code, but i don't know what to change.
I found help for the first script here : https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ
I thank you in advance for the help, maybe there is a better way to that. I don't want to have to launch blender and do it manually. I only need a prompt commande.
Upvotes: 3
Views: 7270
Reputation: 826
I ran this code with the following input on OSX
/Applications/blender-2.77a-OSX_10.6-x86_64/blender.app/Contents/MacOS/blender --background --python convert_stl_to_blend.py -- fileIN.stl FileOut.obj
This code was very helpful, thanks guys!
BTW, I needed this code to do all files in the directory and they were numbers so I used the following code to have blender convert all the files for me:
import bpy
import sys
for x in range(1, 20):
stl_in = str(x) +'.stl'
obj_out = str(x) +'.obj'
bpy.ops.import_mesh.stl(filepath=stl_in, axis_forward='-Z', axis_up='Y')
bpy.ops.export_scene.obj(filepath=obj_out, axis_forward='-Z', axis_up='Y')
Upvotes: 0
Reputation: 209
i got as an error : File format is not supported in file C:..\turbine.stl Blender quit
The error you are getting means that Blender is trying to read first command argument as a .blend file. Just put your script's arguments after "--" (as it says in the script's comment), and it should work.
Made some changes to the script to import STL and export an OBJ in one step, to test if it works:
import bpy
import sys
argv = sys.argv
argv = argv[argv.index("--") + 1:] # get all args after "--"
stl_in = argv[0]
obj_out = argv[1]
bpy.ops.import_mesh.stl(filepath=stl_in, axis_forward='-Z', axis_up='Y')
bpy.ops.export_scene.obj(filepath=obj_out, axis_forward='-Z', axis_up='Y')
and launched it as follows:
blender --background --python convert_stl_to_blend.py -- test.stl test.obj
Upvotes: 3