fix: Spool retainment issue in shoulder

This commit is contained in:
Leni Aniva 2024-07-31 12:42:55 -07:00
parent c846c04932
commit f1f10369b4
Signed by: aniva
GPG Key ID: 4D9B1C8D10EA4C50
1 changed files with 19 additions and 11 deletions

View File

@ -390,11 +390,12 @@ class ShoulderJoint(Model):
angle_neutral: float = -15.0
angle_max_deflection: float = 65.0
spool_radius: float = 14.0
spool_radius: float = 12.0
spool_groove_depth: float = 1.0
spool_base_height: float = 3.0
spool_height: float = 5.0
spool_groove_inset: float = 2.0
spool_cap_height: float = 1.0
spool_groove_inset: float = 3.0
flip: bool = False
actuator: LinearActuator = LINEAR_ACTUATOR_21
@ -554,17 +555,19 @@ class ShoulderJoint(Model):
Generates the spool piece which holds the line in tension
"""
t = self.spool_groove_depth
bulk = Cq.Solid.makeCylinder(
radius=self.spool_radius,
radius_core_inner = self.torsion_joint.radius_rider - self.child_core_thickness
spindle = Cq.Solid.makeCone(
radius1=self.spool_radius,
radius2=radius_core_inner,
height=self.spool_height,
).located(Cq.Location((0, 0, self.spool_base_height)))
base = Cq.Solid.makeCylinder(
radius=self.spool_radius - t,
height=self.spool_base_height,
)
hole_x = self.spool_radius - (t + self.spool_groove_inset)
cap = Cq.Solid.makeCylinder(
radius=radius_core_inner,
height=self.spool_cap_height
).located(Cq.Location((0,0,self.spool_height)))
hole_x = radius_core_inner - self.spool_groove_inset
slot = Cq.Solid.makeBox(
length=t + self.spool_groove_inset,
length=t,
width=t,
height=self.spool_base_height,
).located(Cq.Location((hole_x, -t/2, 0)))
@ -577,7 +580,7 @@ class ShoulderJoint(Model):
radius=self.torsion_joint.radius_axle,
height=self.spool_height + self.spool_base_height,
)
return bulk.fuse(base).cut(slot, hole, centre_hole)
return spindle.fuse(cap).cut(slot, hole, centre_hole)
@target(name="child")
def child(self) -> Cq.Assembly:
@ -618,6 +621,11 @@ class ShoulderJoint(Model):
width=self.child_lip_width - self.child_lip_thickness * 2,
height=self.child_lip_height,
).located(Cq.Location((0, self.child_lip_thickness, 0))))
.cut(Cq.Solid.makeBox(
length=self.child_lip_ext - self.child_guard_ext - self.child_lip_thickness,
width=self.child_lip_width,
height=self.child_lip_height - self.child_lip_thickness * 2,
).located(Cq.Location((0, 0, self.child_lip_thickness))))
.located(Cq.Location((
self.child_guard_ext,
-self.child_lip_width / 2,