|
1 | 1 | from boxes import * |
2 | 2 | from boxes.edges import FingerJointEdge |
| 3 | +import copy |
3 | 4 |
|
4 | 5 | # Dependent generators for drawers |
5 | 6 | from boxes.generators.abox import ABox |
6 | 7 | from boxes.generators.dividertray import DividerTray |
7 | 8 |
|
8 | | -class AlternatingFingerJointEdgeEven(FingerJointEdge): |
9 | | - """Alternating finger joint edge """ |
10 | | - char = 'a' |
11 | | - description = "Alternating Finger Joint" |
12 | | - positive = True |
13 | | - |
14 | | - # Pasted from FingerJointEdge but with added alternate args and rendering |
15 | | - def __call__(self, length, bedBolts=None, bedBoltSettings=None, alternate=True, altMod=0, **kw): |
16 | | - positive = self.positive |
17 | | - t = self.settings.thickness |
18 | | - |
19 | | - s, f = self.settings.space, self.settings.finger |
20 | | - thickness = self.settings.thickness |
21 | | - style = self.settings.style |
22 | | - play = self.settings.play |
23 | | - |
24 | | - fingers, leftover = self.calcFingers(length, bedBolts) |
25 | | - |
26 | | - if (fingers == 0 and f and |
27 | | - leftover > 0.75 * thickness and leftover > 4 * play): |
28 | | - fingers = 1 |
29 | | - f = leftover = leftover / 2.0 |
30 | | - bedBolts = None |
31 | | - style = "rectangular" |
32 | | - |
33 | | - if not positive: |
34 | | - f += play |
35 | | - s -= play |
36 | | - leftover -= play |
37 | | - |
38 | | - self.edge(leftover / 2.0, tabs=1) |
39 | | - |
40 | | - l1, l2 = self.fingerLength(self.settings.angle) |
41 | | - h = l1 - l2 |
42 | | - |
43 | | - d = (bedBoltSettings or self.bedBoltSettings)[0] |
44 | | - |
45 | | - for i in range(fingers): |
46 | | - if i != 0: |
47 | | - if not positive and bedBolts and bedBolts.drawBolt(i): |
48 | | - self.hole(0.5 * s, |
49 | | - 0.5 * self.settings.thickness, 0.5 * d) |
50 | | - |
51 | | - if positive and bedBolts and bedBolts.drawBolt(i): |
52 | | - self.bedBoltHole(s, bedBoltSettings) |
53 | | - else: |
54 | | - self.edge(s) |
55 | | - |
56 | | - # Skip finger if alternating |
57 | | - if alternate and i % 2 == altMod: |
58 | | - self.edge(f) |
59 | | - else: |
60 | | - self.draw_finger(f, h, style, |
61 | | - positive, i < fingers // 2) |
62 | | - |
63 | | - self.edge(leftover / 2.0, tabs=1) |
64 | | - |
65 | | -class AlternatingFingerJointEdgeOdd(AlternatingFingerJointEdgeEven): |
66 | | - """Alternating finger joint edge """ |
67 | | - char = 'b' |
68 | | - description = "Alternating Finger Joint" |
69 | | - positive = True |
70 | | - |
71 | | - def __call__(self, length, bedBolts=None, bedBoltSettings=None, alternate=True, altMod=1, **kw): |
72 | | - fingers, leftover = self.calcFingers(length, bedBolts) |
73 | | - # Handles odd number of fingers |
74 | | - if fingers % 2 == 0: |
75 | | - altMod = 0 |
76 | | - |
77 | | - super().__call__(length, bedBolts, bedBoltSettings, alternate=alternate, altMod=altMod, **kw) |
78 | | - |
79 | 9 | class DrawerSettings(edges.Settings): |
80 | 10 | """Settings for the Drawers |
81 | 11 | Values: |
@@ -156,10 +86,16 @@ def render(self): |
156 | 86 | drawer_settings = self.edgesettings['Drawer'] |
157 | 87 | drawer_style = drawer_settings['style'] |
158 | 88 |
|
159 | | - # Add alternating finger joint edges |
160 | | - altEven = AlternatingFingerJointEdgeEven(self, self.edges["f"].settings) |
| 89 | + altFingerSettings = copy.copy(self.edges["f"].settings) |
| 90 | + # Even joint edge |
| 91 | + altEven = FingerJointEdge(self, altFingerSettings) |
| 92 | + altEven.settings.alternating = "even" |
| 93 | + altEven.char = "a" |
161 | 94 | self.addPart(altEven) |
162 | | - altOdd = AlternatingFingerJointEdgeOdd(self, self.edges["f"].settings) |
| 95 | + # Odd joint edge |
| 96 | + altOdd = FingerJointEdge(self, altFingerSettings) |
| 97 | + altOdd.settings.alternating = "odd" |
| 98 | + altOdd.char = "b" |
163 | 99 | self.addPart(altOdd) |
164 | 100 |
|
165 | 101 | # Back panel |
|
0 commit comments