diff --git a/partsgen.py b/partsgen.py index 017c266..6ca72af 100755 --- a/partsgen.py +++ b/partsgen.py @@ -194,6 +194,26 @@ def drawstud(): lines.append(((p1[0], 0, p1[1]), (p2[0], 0, p2[1]))) return lines, triangles, quads +def drawbox(): + lines = list() + triangles = list() + quads = list() + outertopcoords = [(0,0,0),(1,0,0),(1,0,1),(0,0,1)] + outerbottomcoords = [(x, 1, z) for x,_,z in outertopcoords] + # write outer top plate and lines + quads.append(outertopcoords) + for p1, p2 in wrap(outertopcoords): + lines.append((p1, p2)) + # outer sides and lines + for (p1, p2), (p3, p4) in zip(wrap(outertopcoords), wrap(outerbottomcoords)): + quads.append((p1,p2,p4,p3)) + lines.append((p1,p3)) + # write outer bottom plate and lines + quads.append(outerbottomcoords) + for p1, p2 in wrap(outerbottomcoords): + lines.append((p1, p2)) + return lines, triangles, quads + def render_part(part): partid, parttext = part[:2] ################################################### @@ -252,22 +272,7 @@ def render_part(part): for z in range(studsz): for x in range(studsx): files.append(((studsx/2.0 - x)*20 - 10, 0, (studsz/2.0 - z)*20 - 10,1,0,0,0,1,0,0,0,1,"stud.dat")) - coords = [(1,1),(1,-1),(-1,-1),(-1,1)] - outertopcoords = [(studsx*10*x, 0, studsz*10*z) for x,z in coords] - # baseplates are 4 LDU high - outerbottomcoords = [(x, 4, z) for x,y,z in outertopcoords] - # write outer top plate and lines - quads.append(outertopcoords) - for p1, p2 in wrap(outertopcoords): - lines.append((p1, p2)) - # outer sides and lines - for (p1, p2), (p3, p4) in zip(wrap(outertopcoords), wrap(outerbottomcoords)): - quads.append((p1,p2,p4,p3)) - lines.append((p1,p3)) - # write outer bottom plate and lines - quads.append(outerbottomcoords) - for p1, p2 in wrap(outerbottomcoords): - lines.append((p1, p2)) + files.append((-studsx*10,0,-studsz*10,studsx*20,0,0,0,4,0,0,0,studsz*20,"box.dat")) elif m.group('type') in ['Brick', 'Plate', 'Slope Brick 31', 'Tile']: # draw studs if m.group('centerstud'): @@ -652,5 +657,7 @@ def render_part(part): if __name__ == "__main__": lines, triangles, quads = drawstud() write_file("parts/stud.dat", [], [], lines, triangles, quads) + lines, triangles, quads = drawbox() + write_file("parts/box.dat", [], [], lines, triangles, quads) for part in parts: render_part(part)