From b07983582e4685cc20c34e495d31bf7173dd0973 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Sun, 30 Sep 2018 15:31:16 +0200 Subject: [PATCH] HingeBox: Add support for split lids --- boxes/generators/hingebox.py | 45 ++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/boxes/generators/hingebox.py b/boxes/generators/hingebox.py index 5264924..9904f9e 100644 --- a/boxes/generators/hingebox.py +++ b/boxes/generators/hingebox.py @@ -29,34 +29,59 @@ class HingeBox(Boxes): self.argparser.add_argument( "--lidheight", action="store", type=float, default=20.0, help="height of lid in mm") + self.argparser.add_argument( + "--splitlid", action="store", type=float, default=0.0, + help="split the lid in y direction (mm)") def render(self): self.open() x, y, h, hl = self.x, self.y, self.h, self.lidheight - + s = self.splitlid if self.outside: x = self.adjustSize(x) y = self.adjustSize(y) h = self.adjustSize(h) + s = self.adjustSize(s, None) # reduce by half of the walls + if s > x or s < 0.0: s = 0.0 t = self.thickness - self.rectangularWall(x, h, "FFeF", move="right") + # bottom walls + if s: + self.rectangularWall(x, h, "FFuF", move="right") + else: + self.rectangularWall(x, h, "FFeF", move="right") self.rectangularWall(y, h, "Ffef", move="up") self.rectangularWall(y, h, "Ffef") self.rectangularWall(x, h, "FFuF", move="left up") - - self.rectangularWall(x, hl, "UFFF", move="right") - self.rectangularWall(y, hl, "efFf", move="up") - self.rectangularWall(y, hl, "efFf") - self.rectangularWall(x, hl, "eFFF", move="left up") - self.rectangularWall(x, y, "ffff", move="right") + print(s, bool(s)) + + # lid + self.rectangularWall(x, hl, "UFFF", move="right") + if s: + self.rectangularWall(s, hl, "eeFf", move="right") + self.rectangularWall(y-s, hl, "efFe", move="up") + self.rectangularWall(y-s, hl, "eeFf") + self.rectangularWall(s, hl, "efFe", move="left") + self.rectangularWall(x, hl, "UFFF", move="left up") + else: + self.rectangularWall(y, hl, "efFf", move="up") + self.rectangularWall(y, hl, "efFf") + self.rectangularWall(x, hl, "eFFF", move="left up") + + self.rectangularWall(x, y, "ffff", move="right only") self.rectangularWall(x, y, "ffff") - self.rectangularWall(x, y, "ffff", move="left up only") - self.edges['u'].parts() + if s: + self.rectangularWall(x, s, "ffef", move="left up") + self.rectangularWall(x, y-s, "efff", move="up") + else: + self.rectangularWall(x, y, "ffff", move="left up") + self.edges['u'].parts(move="up") + if s: + self.edges['u'].parts(move="up") self.close()