2016-06-29 18 views
2

Ich möchte eine STL-Datei in. OBJ konvertieren, ohne Verwendung von Blender-Schnittstelle.Blender, konvertieren .stl zu .obj mit Eingabeaufforderung commande

, das zu tun, ich es in zwei Schritt zu tun:

1 STL

2 BLEND zu OBJ

Eigentlich ok mit diesem Python-Code BLEND zu OBJ Arbeit BLEND:

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

und mit diesem Ansatz:

@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 

Das funktioniert perfekt.

Das Problem ist, mit dem STL BLEND, es ist nicht mit diesem Python-Code arbeiten:

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

und die Charge zugeordnet:

@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 als Fehler bekam: Dateiformat nicht ist unterstützt in Datei C: .. \ turbine.stl Blender beenden

Ich denke, das Problem ist in meinem Python-Code, aber ich weiß nicht, was ich ändern soll.

ich Hilfe für das erste Skript finden Sie hier: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/Wavefront_OBJ

ich Ihnen für die Hilfe im Voraus danke, vielleicht gibt es eine bessere Art und Weise zu, dass. Ich möchte den Mixer nicht manuell starten müssen. Ich brauche nur eine schnelle Anweisung.

Antwort

1

Ich habe als Fehler: Dateiformat nicht in der Datei C unterstützt: .. \ turbine.stl Blender

beenden

Der Fehler Mittel erhalten, die Blender erstes Befehl Argument zu lesen versucht, als .blend-Datei. Setzen Sie einfach die Argumente Ihres Skripts nach "-" (wie es im Kommentar des Skripts steht), und es sollte funktionieren.

einige Änderungen an dem Skript gemacht STL zu importieren und eine OBJ in einem Schritt exportieren zu testen, ob es funktioniert:

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

und leitete sie wie folgt:

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

leid, das zu sagen, aber diese funktioniert nicht. Du kannst nicht zu stl zu obj gehen, ohne zu .blend zu gehen.Ich verstehe nicht, was Sie hier versuchen –

+0

, wenn ich es richtig verstanden habe, möchten Sie STL in OBJ konvertieren, was bedeutet, dass Ihr Skript (1) eine STL importieren muss, (2) ein OBJ exportieren, was ist das Skript in meiner Antwort sollte tun. –

+0

> blender% FILENAME% --background --python convert_stl_to_blend.py -% ZIEL% Das Hauptproblem ist, wie Sie das Skript starten: **% FILENAME% ** sollte nach dem "-" gehen –

0

Ich lief diese Code mit dem folgenden Eingang auf 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 

Dieser Code war sehr hilfreich, danke Jungs!

BTW, ich diesen Code benötigt, um alle Dateien in dem Verzeichnis zu tun, und sie waren Zahlen, so habe ich den folgenden Code Mixer zu haben, konvertiert alle Dateien für mich:

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 danke, vielleicht brauche ich diese! –