From 3f97d7ad77a75e0a0de1c262a587259675977b1b Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Sat, 9 Jul 2016 22:52:48 +0200 Subject: [PATCH] Add outside parameter to some generators --- boxes/generators/box.py | 13 ++++++++++--- boxes/generators/box3.py | 7 ++++++- boxes/generators/flexbox.py | 8 +++++++- boxes/generators/flexbox2.py | 7 ++++++- boxes/generators/flexbox3.py | 7 ++++++- boxes/generators/flexbox4.py | 7 ++++++- boxes/generators/magazinefile.py | 7 ++++++- boxes/generators/trayinsert.py | 6 +++++- boxes/generators/traylayout.py | 8 +++++++- boxes/generators/typetray.py | 9 ++++++++- 10 files changed, 67 insertions(+), 12 deletions(-) diff --git a/boxes/generators/box.py b/boxes/generators/box.py index 208f093..2196fc4 100755 --- a/boxes/generators/box.py +++ b/boxes/generators/box.py @@ -20,17 +20,24 @@ class Box(Boxes): """Fully closed box""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y", "h") + self.buildArgParser("x", "y", "h", "outside") self.argparser.set_defaults( fingerjointfinger=3.0, fingerjointspace=3.0 ) def render(self): - x, y, h = self.x, self.y, self.h - t = self.thickness self.open() + x, y, h = self.x, self.y, self.h + + if self.outside: + x = self.adjustSize(x) + y = self.adjustSize(y) + h = self.adjustSize(h) + + t = self.thickness + d2 = [edges.Bolts(2)] d3 = [edges.Bolts(3)] diff --git a/boxes/generators/box3.py b/boxes/generators/box3.py index 6e3e577..56b4170 100755 --- a/boxes/generators/box3.py +++ b/boxes/generators/box3.py @@ -20,7 +20,7 @@ class Box(Boxes): """Box with just 3 walls""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y", "h") + self.buildArgParser("x", "y", "h", "outside") self.argparser.set_defaults( fingerjointfinger=3.0, fingerjointspace=3.0 @@ -30,6 +30,11 @@ class Box(Boxes): x, y, h = self.x, self.y, self.h t = self.thickness + if self.outside: + x = self.adjustSize(x) + y = self.adjustSize(y, False) + h = self.adjustSize(h, False) + self.open() d2 = [edges.Bolts(2)] diff --git a/boxes/generators/flexbox.py b/boxes/generators/flexbox.py index 31310e9..ad440ed 100755 --- a/boxes/generators/flexbox.py +++ b/boxes/generators/flexbox.py @@ -21,7 +21,7 @@ class FlexBox(boxes.Boxes): """Box with living hinge and round corners""" def __init__(self): boxes.Boxes.__init__(self) - self.buildArgParser("x", "y", "h") + self.buildArgParser("x", "y", "h", "outside") self.argparser.add_argument( "--radius", action="store", type=float, default=15, help="Radius of the latch in mm") @@ -77,6 +77,12 @@ class FlexBox(boxes.Boxes): self.corner(90) def render(self): + + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.h = self.adjustSize(self.h) + x, y, h = self.x, self.y, self.h self.latchsize = 8 * self.thickness r = self.radius or min(x, y-self.latchsize)/2.0 diff --git a/boxes/generators/flexbox2.py b/boxes/generators/flexbox2.py index ed3be3f..af147a7 100755 --- a/boxes/generators/flexbox2.py +++ b/boxes/generators/flexbox2.py @@ -21,7 +21,7 @@ class FlexBox(Boxes): """Box with living hinge and top corners rounded""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y", "h") + self.buildArgParser("x", "y", "h", "outside") self.argparser.add_argument( "--radius", action="store", type=float, default=15, help="Radius of the corners in mm") @@ -67,6 +67,11 @@ class FlexBox(Boxes): self.corner(90) def render(self): + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.h = self.adjustSize(self.h) + self.latchsize = 8*self.thickness self.radius = self.radius or min(self.x/2.0, self.y-self.latchsize) self.radius = min(self.radius, self.x/2.0) diff --git a/boxes/generators/flexbox3.py b/boxes/generators/flexbox3.py index 6b2d47d..d8eea52 100755 --- a/boxes/generators/flexbox3.py +++ b/boxes/generators/flexbox3.py @@ -21,7 +21,7 @@ class FlexBox(Boxes): """Box with living hinge""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y") + self.buildArgParser("x", "y", "outside") self.argparser.add_argument( "--z", action="store", type=float, default=100.0, help="height of the box") @@ -99,6 +99,11 @@ class FlexBox(Boxes): self.edge(x+2*t) def render(self): + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.z = self.adjustSize(self.z) + x, y, z, d, h = self.x, self.y, self.z, self.d, self.h r = self.radius = self.radius or min(x, y)/2.0 thickness = self.thickness diff --git a/boxes/generators/flexbox4.py b/boxes/generators/flexbox4.py index d946014..a2cb239 100644 --- a/boxes/generators/flexbox4.py +++ b/boxes/generators/flexbox4.py @@ -21,7 +21,7 @@ class FlexBox(Boxes): """Box with living hinge and left corners rounded""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y", "h") + self.buildArgParser("x", "y", "h", "outside") self.argparser.add_argument( "--radius", action="store", type=float, default=15, help="Radius of the corners in mm") @@ -69,6 +69,11 @@ class FlexBox(Boxes): self.corner(90) def render(self): + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.h = self.adjustSize(self.h) + self.c4 = c4 = math.pi * self.radius * 0.5 self.latchsize = 8*self.thickness self.radius = self.radius or min(self.x/2.0, self.y-self.latchsize) diff --git a/boxes/generators/magazinefile.py b/boxes/generators/magazinefile.py index 86c2bf6..4d509c5 100755 --- a/boxes/generators/magazinefile.py +++ b/boxes/generators/magazinefile.py @@ -20,7 +20,7 @@ class Box(Boxes): """Open magazine file""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("x", "y", "h", "hi") + self.buildArgParser("x", "y", "h", "hi", "outside") self.argparser.set_defaults( fingerjointfinger=2.0, fingerjointspace=2.0 @@ -60,6 +60,11 @@ class Box(Boxes): def render(self): + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.h = self.adjustSize(self.h, e2=False) + x, y, h, = self.x, self.y, self.h self.hi = hi = self.hi or (h / 2.0) t = self.thickness diff --git a/boxes/generators/trayinsert.py b/boxes/generators/trayinsert.py index 5350c78..594c3b6 100755 --- a/boxes/generators/trayinsert.py +++ b/boxes/generators/trayinsert.py @@ -20,9 +20,13 @@ class TrayInsert(Boxes): """Tray insert without floor and outer walls - allows only continuous walls""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("sx", "sy", "h") + self.buildArgParser("sx", "sy", "h", "outside") def render(self): + if self.outside: + self.sx = self.adjustSize(self.sx, False, False) + self.sy = self.adjustSize(self.sy, False, False) + x = sum(self.sx) + self.thickness * (len(self.sx)-1) y = sum(self.sy) + self.thickness * (len(self.sy)-1) h = self.h diff --git a/boxes/generators/traylayout.py b/boxes/generators/traylayout.py index 5cb578a..add9236 100755 --- a/boxes/generators/traylayout.py +++ b/boxes/generators/traylayout.py @@ -22,7 +22,7 @@ class Layout(Boxes): """Generate a typetray from a layout file""" def __init__(self, input=None, webargs=False): Boxes.__init__(self) - self.buildArgParser("h", "hi") + self.buildArgParser("h", "hi", "outside") if not webargs: self.argparser.add_argument( "--input", action="store", type=argparse.FileType('r'), @@ -91,6 +91,12 @@ class Layout(Boxes): edge(length) def render(self): + if self.outside: + self.x = self.adjustSize(self.x) + self.y = self.adjustSize(self.y) + self.h = self.adjustSize(self.h, e2=False) + if self.hi: + self.hi = self.adjustSize(self.hi, e2=False) self.hi = hi = self.hi or self.h diff --git a/boxes/generators/typetray.py b/boxes/generators/typetray.py index af22f67..bb57b98 100755 --- a/boxes/generators/typetray.py +++ b/boxes/generators/typetray.py @@ -20,7 +20,7 @@ class TypeTray(Boxes): """Type tray - allows only continuous walls""" def __init__(self): Boxes.__init__(self) - self.buildArgParser("sx", "sy", "h", "hi") + self.buildArgParser("sx", "sy", "h", "hi", "outside") self.argparser.add_argument( "--gripheight", action="store", type=float, default=30, dest="gh", help="height of the grip hole in mm") @@ -72,6 +72,13 @@ class TypeTray(Boxes): self.rectangularHole(x/2.0, self.gh*1.5, self.gw, self.gh, r) def render(self): + if self.outside: + self.sx = self.adjustSize(self.sx) + self.sy = self.adjustSize(self.sy) + self.h = self.adjustSize(self.h, e2=False) + if self.hi: + self.hi = self.adjustSize(self.hi, e2=False) + x = sum(self.sx) + self.thickness * (len(self.sx)-1) y = sum(self.sy) + self.thickness * (len(self.sy)-1) h = self.h