openscad: output as multiple polyhedrons

This commit is contained in:
Laura Klünder 2017-11-14 13:46:48 +01:00
parent ae8de940b8
commit 1c91c9a6db

View file

@ -10,16 +10,19 @@ class OpenSCADEngine(Base3DEngine):
def render(self) -> bytes:
facets = np.vstack(self.vertices)
vertices = tuple(set(tuple(vertex) for vertex in facets.reshape((-1, 3))))
lookup = {vertex: i for i, vertex in enumerate(vertices)}
result = b''
for facets in self.vertices:
vertices = tuple(set(tuple(vertex) for vertex in facets.reshape((-1, 3))))
lookup = {vertex: i for i, vertex in enumerate(vertices)}
return (b'polyhedron(\n' +
b' points = [\n' +
b'\n'.join((b' [%.3f, %.3f, %.3f],' % tuple(vertex)) for vertex in vertices) + b'\n' +
b' ],\n' +
b' faces = [\n' +
b'\n'.join((b' [%d, %d, %d],' % (lookup[tuple(a)], lookup[tuple(b)], lookup[tuple(c)]))
for a, b, c in facets) +
b' ],\n' +
b' convexity = 10\n' +
b');\n')
result += (b'polyhedron(\n' +
b' points = [\n' +
b'\n'.join((b' [%.3f, %.3f, %.3f],' % tuple(vertex)) for vertex in vertices) + b'\n' +
b' ],\n' +
b' faces = [\n' +
b'\n'.join((b' [%d, %d, %d],' % (lookup[tuple(a)], lookup[tuple(b)], lookup[tuple(c)]))
for a, b, c in facets) + b'\n' +
b' ],\n' +
b' convexity = 10\n' +
b');\n')
return result