Skip to content

Instantly share code, notes, and snippets.

@Davids89
Created February 22, 2015 11:24
Show Gist options
  • Save Davids89/5b8a1484babdce3b01c9 to your computer and use it in GitHub Desktop.
Save Davids89/5b8a1484babdce3b01c9 to your computer and use it in GitHub Desktop.
Conversor .obj a .wrl
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