Add extra_length to Finger Joint Settings

to allow extending the finger joints so burn marks can be ground off.

Thanks to all who have been pushing for this feature!

Resolves: #270
This commit is contained in:
Florian Festi 2022-01-16 15:18:11 +01:00
parent c4038696f1
commit a364f603a8
2 changed files with 13 additions and 6 deletions

View File

@ -680,7 +680,7 @@ Values:
* width : 1.0 : width of finger holes (multiples of thickness) * width : 1.0 : width of finger holes (multiples of thickness)
* edge_width : 1.0 : space below holes of FingerHoleEdge (multiples of thickness) * edge_width : 1.0 : space below holes of FingerHoleEdge (multiples of thickness)
* play : 0.0 : extra space to allow finger move in and out (multiples of thickness) * play : 0.0 : extra space to allow finger move in and out (multiples of thickness)
* extra_length : 0.0 : extra material to grind away burn marks (multiples of thickness)
""" """
absolute_params = { absolute_params = {
@ -695,6 +695,7 @@ Values:
"width": 1.0, "width": 1.0,
"edge_width": 1.0, "edge_width": 1.0,
"play" : 0.0, "play" : 0.0,
"extra_length" : 0.0,
} }
def checkValues(self): def checkValues(self):
@ -727,18 +728,21 @@ class FingerJointBase:
return fingers, leftover return fingers, leftover
def fingerLength(self, angle): def fingerLength(self, angle):
if angle >=90: # sharp corners
return self.settings.thickness, 0 if angle >=90 or angle <= -90:
return self.settings.thickness + self.settings.extra_length, 0
# inner blunt corners
if angle < 0: if angle < 0:
return math.sin(math.radians(-angle)) * self.settings.thickness, 0 return (math.sin(math.radians(-angle)) * self.settings.thickness +
self.settings.extra_length), 0
# 0 to 90 # 0 to 90 (blunt corners)
a = 90 - (180-angle) / 2.0 a = 90 - (180-angle) / 2.0
fingerlength = self.settings.thickness * math.tan(math.radians(a)) fingerlength = self.settings.thickness * math.tan(math.radians(a))
b = 90-2*a b = 90-2*a
spacerecess = -math.sin(math.radians(b)) * fingerlength spacerecess = -math.sin(math.radians(b)) * fingerlength
return fingerlength, spacerecess return fingerlength + self.settings.extra_length, spacerecess
class FingerJointEdge(BaseEdge, FingerJointBase): class FingerJointEdge(BaseEdge, FingerJointBase):
"""Finger joint edge """ """Finger joint edge """

View File

@ -186,6 +186,9 @@ Finger Joint Settings
style style
how finger joints should look like. There may be more styles to choose from in the future. how finger joints should look like. There may be more styles to choose from in the future.
extra_length
Make the outset part of the finger joint longer to allow grinding off burn marks. Note that this may not be great for non 90° joints where the corner is butted against the opposing cutout.
Stackable Edge Settings Stackable Edge Settings
....................... .......................