From a7d0dda9f811844fd7fca373ecb7ac5c73202346 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Fri, 10 Feb 2017 18:53:14 +0100 Subject: [PATCH] New generator: Box5 box with lid attached with cabinet hinges --- boxes/generators/box5.py | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 boxes/generators/box5.py diff --git a/boxes/generators/box5.py b/boxes/generators/box5.py new file mode 100644 index 0000000..3976fde --- /dev/null +++ b/boxes/generators/box5.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# Copyright (C) 2013-2014 Florian Festi +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from boxes import * + +class Box5(Boxes): + """Box with lid attached by cabinet hinges""" + + def __init__(self): + Boxes.__init__(self) + self.addSettingsArgs(edges.FingerJointSettings) + self.addSettingsArgs(edges.CabinetHingeSettings) + self.buildArgParser("x", "y", "h", "outside") + self.argparser.add_argument( + "--lidheight", action="store", type=float, default=20.0, + help="height of lid in mm") + + def render(self): + self.open() + + x, y, h, hl = self.x, self.y, self.h, self.lidheight + + + if self.outside: + x = self.adjustSize(x) + y = self.adjustSize(y) + h = self.adjustSize(h) + + t = self.thickness + + 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") + self.rectangularWall(x, y, "ffff") + self.rectangularWall(x, y, "ffff", move="left up only") + self.edges['u'].parts() + + self.close() + + +def main(): + b = Box5() + b.parseArgs() + b.render() + + +if __name__ == '__main__': + main()