Make A style hinges parametrical
This commit is contained in:
parent
401ef597d8
commit
fcda87d48a
|
@ -652,7 +652,7 @@ Values:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
absolute_params = {
|
absolute_params = {
|
||||||
"style" : "B",
|
"style" : "A",
|
||||||
"outset" : False,
|
"outset" : False,
|
||||||
"pinwidth" : 0.5,
|
"pinwidth" : 0.5,
|
||||||
"grip_percentage" : 0,
|
"grip_percentage" : 0,
|
||||||
|
@ -682,24 +682,36 @@ class Hinge(BaseEdge):
|
||||||
|
|
||||||
def A(self, _reversed=False):
|
def A(self, _reversed=False):
|
||||||
t = self.thickness
|
t = self.thickness
|
||||||
r = t*0.5*2**0.5
|
r = 0.5 * self.settings.axle
|
||||||
|
alpha = math.degrees(math.asin(0.5*t/r))
|
||||||
|
print(alpha)
|
||||||
|
pinl = (self.settings.axle**2-self.thickness**2)**0.5 * self.settings.pinwidth
|
||||||
|
pos = math.cos(math.radians(alpha)) * r
|
||||||
hinge = (
|
hinge = (
|
||||||
0,
|
0,
|
||||||
45, 0,
|
90-alpha, 0,
|
||||||
(-360, r), 0,
|
(-360, r), 0,
|
||||||
135,
|
90+alpha,
|
||||||
t,
|
t,
|
||||||
90,
|
90,
|
||||||
0.5*t,
|
0.5*t,
|
||||||
(180, 1.5*t), 0,
|
(180, t+ pos), 0,
|
||||||
(-90, 0.5*t), 0
|
(-90, 0.5*t), 0
|
||||||
)
|
)
|
||||||
if _reversed:
|
if _reversed:
|
||||||
hinge = reversed(hinge)
|
hinge = reversed(hinge)
|
||||||
self.polyline(*hinge)
|
self.polyline(*hinge)
|
||||||
|
self.boxes.rectangularHole(-pos, -0.5*t, pinl, self.thickness)
|
||||||
|
else:
|
||||||
|
self.boxes.rectangularHole(pos, -0.5*t, pinl, self.thickness)
|
||||||
|
self.polyline(*hinge)
|
||||||
|
|
||||||
def Alen(self):
|
def Alen(self):
|
||||||
return 2.5 * self.thickness
|
t = self.thickness
|
||||||
|
r = 0.5 * self.settings.axle
|
||||||
|
alpha = math.degrees(math.asin(0.5*t/r))
|
||||||
|
pos = math.cos(math.radians(alpha)) * r
|
||||||
|
return 2 * pos + 1.5 * t
|
||||||
|
|
||||||
def B(self, _reversed=False):
|
def B(self, _reversed=False):
|
||||||
t = self.thickness
|
t = self.thickness
|
||||||
|
@ -762,32 +774,41 @@ class HingePin(BaseEdge):
|
||||||
|
|
||||||
def A(self, _reversed=False):
|
def A(self, _reversed=False):
|
||||||
t = self.thickness
|
t = self.thickness
|
||||||
pin = (0, -90,
|
r = 0.5 * self.settings.axle
|
||||||
|
alpha = math.degrees(math.asin(0.5*t/r))
|
||||||
|
pos = math.cos(math.radians(alpha)) * r
|
||||||
|
pinl = (self.settings.axle**2-self.thickness**2)**0.5 * self.settings.pinwidth
|
||||||
|
pin = (pos-0.5*pinl, -90,
|
||||||
t, 90,
|
t, 90,
|
||||||
t,
|
pinl,
|
||||||
90,
|
90,
|
||||||
t,
|
t,
|
||||||
-90)
|
-90)
|
||||||
|
|
||||||
if self.settings.outset:
|
if self.settings.outset:
|
||||||
pin += (
|
pin += (
|
||||||
1.5*t,
|
pos-0.5*pinl+1.5*t,
|
||||||
-90,
|
-90,
|
||||||
t,
|
t,
|
||||||
90,
|
90,
|
||||||
0,
|
0,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
pin += (0.0,)
|
pin += (pos-0.5*pinl,)
|
||||||
if _reversed:
|
if _reversed:
|
||||||
pin = reversed(pin)
|
pin = reversed(pin)
|
||||||
self.polyline(*pin)
|
self.polyline(*pin)
|
||||||
|
|
||||||
def Alen(self):
|
def Alen(self):
|
||||||
|
t = self.thickness
|
||||||
|
r = 0.5 * self.settings.axle
|
||||||
|
alpha = math.degrees(math.asin(0.5*t/r))
|
||||||
|
pos = math.cos(math.radians(alpha)) * r
|
||||||
|
|
||||||
if self.settings.outset:
|
if self.settings.outset:
|
||||||
return 2.5* self.thickness
|
return 2 * pos + 1.5* self.thickness
|
||||||
else:
|
else:
|
||||||
return self.thickness
|
return 2 * pos
|
||||||
|
|
||||||
def B(self, _reversed=False):
|
def B(self, _reversed=False):
|
||||||
t = self.thickness
|
t = self.thickness
|
||||||
|
|
Loading…
Reference in New Issue