Created
February 22, 2015 11:24
-
-
Save Davids89/5b8a1484babdce3b01c9 to your computer and use it in GitHub Desktop.
Conversor .obj a .wrl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
if len(sys.argv) >= 3: | |
print "Numero de argumentos pasado correctamente" | |
print len(sys.argv) | |
else: | |
print "Falta el argumentos del fichero" | |
sys.exit(1) | |
#primero hay que abrir el fichero | |
try: | |
ficheroOBJ = open(sys.argv[1],"r") | |
except Exception: | |
print "Ha fallado al abrir el fichero OBJ" | |
sys.exit(1) | |
#vamos a escribir lo basico en el fichero wrl | |
try: | |
ficheroWRL = open(sys.argv[2],"w") | |
except Exception: | |
print "Ha fallado al abrir el fichero WRL" | |
sys.exit(1) | |
ficheroWRL.write("Shape{\n") | |
ficheroWRL.write("\tgeometry IndexedFaceSet{\n") | |
ficheroWRL.write("\t\tcoord Coordinate{\n") | |
ficheroWRL.write("\t\t\tpoint[\n") | |
#Ahora lo debemos leer linea a linea e ir sacando los argumentos que nos interesen | |
for linea in ficheroOBJ: | |
if linea[0] == "v" and linea[1] == " ": | |
separacion = linea.split(" ") | |
#ya tengo la linea separada en una tupla | |
#ahora borro el primer elemento porque me sobra (es la v) | |
del separacion[0] | |
#ahora ya tengo todo lo necesario para poder escribir el punto en el fichero WRL | |
ficheroWRL.write("\t\t\t\t") | |
separacion = [elem.strip() for elem in separacion] #con esto, lo que consigo es borrar el ultimo \n con lo que no me estorba para poner la , | |
for elemento in separacion: | |
ficheroWRL.write(elemento+" ") | |
ficheroWRL.write(",\n") | |
ficheroWRL.write("\t\t\t]\n") | |
ficheroWRL.write("\t\t}\n") | |
ficheroOBJ.close() | |
#aqui van las aristas | |
#hay que volver a abrir el OBJ | |
try: | |
ficheroOBJ = open(sys.argv[1],"r") | |
except Exception: | |
print "Ha fallado al abrir el fichero OBJ" | |
sys.exit(1) | |
ficheroWRL.write("\t\tcoordIndex [\n") | |
for linea in ficheroOBJ: | |
if linea[0] == "f" and linea[1]==" ": | |
separacion = linea.split(" ") | |
del separacion[0] | |
if len(separacion) == 3: | |
#aqui tengo ['x1/x2/x3', 'x1/x2/x3', 'x1/x2/x3'] | |
ficheroWRL.write("\t\t\t\t") | |
for elemento in separacion: | |
#cada elemento es una separacion x1/x2/x3 | |
#aqui vamos a separar los elementos de cada linea por / | |
item = elemento.split("/") | |
#ya tengo cada elemento de x | |
#[x1, x2, x3] | |
#ahora el primero lo escribo | |
ficheroWRL.write(item[0]+", ") | |
ficheroWRL.write("\n") | |
elif len(separacion) > 3: | |
#el problema con estos que tienen mas de 3 es que tienen un espacio al final | |
#lo primero es borrar el ultimo elemento que es el espacio para poder evitar que nos coloque dobles comas | |
del separacion[len(separacion)-1] | |
ficheroWRL.write("\t\t\t\t") | |
for elemento in separacion: | |
#cada elemento es una separacion x1/x2/x3 | |
#aqui vamos a separar los elementos de cada linea por / | |
item = elemento.split("/") | |
#ya tengo cada elemento de x | |
#[x1, x2, x3] | |
#ahora el primero lo escribo | |
ficheroWRL.write(item[0]+", ") | |
ficheroWRL.write("\n") | |
ficheroWRL.write("\t\t\t]\n") | |
ficheroWRL.write("\t}\n") | |
ficheroWRL.write("}\n") | |
ficheroOBJ.close() | |
ficheroWRL.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment