2016-06-29 3 views
2

Je veux convertir un fichier .stl en .obj, sans utiliser d'interface blender.Blender, convertir .stl en .obj avec la commande rapide

Pour ce faire, je veux le faire en deux étapes:

1 STL à enrichir l'éventail

2 MELANGE OBJ

En fait BLEND au travail OBJ ok avec ce code python:

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') 

et avec ce lot:

@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 

Cela fonctionne parfaitement.

Le problème est avec le TSL BLEND, sa ne fonctionne pas avec ce code python:

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') 

Et le lot associé:

@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 

je suis arrivé comme une erreur: Format de fichier n'est pas supporté dans le fichier C: .. \ turbine.stl Blender quit

Je pense que le problème est dans mon code python, mais je ne sais pas quoi changer.

Je trouve l'aide pour le premier script ici: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ

Je vous remercie à l'avance de l'aide, peut-être il y a une meilleure façon de cela. Je ne veux pas avoir à lancer Blender et le faire manuellement. J'ai seulement besoin d'une commande rapide.

Répondre

1

je suis arrivé comme une erreur: Format de fichier non pris en charge dans le fichier C: .. \ turbine.stl Blender quitter

L'erreur que vous obtenez signifie que Blender essaie de lire le premier argument de commande en tant que fichier .blend. Mettez simplement les arguments de votre script après "-" (comme indiqué dans le commentaire du script), et cela devrait marcher.

a fait quelques modifications au script pour importer STL et exporter une OBJ en une seule étape, pour tester si cela fonctionne:

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') 

et lancé comme suit:

blender --background --python convert_stl_to_blend.py -- test.stl test.obj 
+0

désolé de le dire, mais ce ne fonctionne pas. Vous ne pouvez pas aller à stl to obj sans passer à .blend.Je ne comprends pas ce que vous essayez de faire ici –

+0

si je l'ai bien compris, vous voulez convertir STL en OBJ, ce qui signifie que votre script doit (1) importer une STL, (2) exporter un OBJ, qui est ce que le script dans ma réponse devrait faire. –

+0

> blender% NOM_DE_FICHIER% --background --python convert_stl_to_blend.py -% TARGET% le principal problème est de savoir comment lancer le script: **% FILENAME% ** devrait aller après le "-" –

0

j'ai couru cette code avec l'entrée suivante sur 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 

Ce code a été très utile, merci les gars!

BTW, je avais besoin de ce code pour faire tous les fichiers dans le répertoire et ils étaient chiffres donc j'utilisé le code ci-dessous pour avoir un mélangeur convertir tous les fichiers pour moi:

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') 
+0

Nice edit merci, peut-être que j'aurai besoin de celui-ci! –