#!/bin/python import sys import re def offToJs(offFile): wsre = re.compile("[ \r\n\t]+") off = open(offFile, "r") count = 0 nVerts = 0 nFaces = 0 nEdges = 0 closedverts = False maxcoord = [0, 0, 0] mincoord = [0, 0, 0] for line in off: line = line.strip() if count == 0: if line != "OFF": print "Only OFF format files are supported (not nOFF, 4OFF, etc.)" return elif count == 1: sys.stdout.write("gGeometry = {\n") sys.stdout.write(" vertices: [") d = wsre.split(line) nVerts = int(d[0]) nFaces = int(d[1]) nEdges = int(d[2]) elif count < nVerts + 2: d = wsre.split(line) x = float(d[0]) y = float(d[0]) z = float(d[1]) sys.stdout.write("[%s, %s, %s]," % (d[0], d[1], d[2])) else: if not closedverts: sys.stdout.write("],\n") sys.stdout.write(" faces: [") closedverts = True d = wsre.split(line) n = int(d[0]) sys.stdout.write("[") for k in range(n): sys.stdout.write("%s," % d[k+1]) sys.stdout.write("],") count += 1 sys.stdout.write("],\n") sys.stdout.write("};\n") off.close() def usage(): print "Usage: off-to-js.py file.off" def main(args): if len(args) != 2: usage() return offToJs(args[1]); main(sys.argv)