cosplay: Touhou/Houjuu Nue #4
|
@ -390,11 +390,12 @@ class ShoulderJoint(Model):
|
||||||
angle_neutral: float = -15.0
|
angle_neutral: float = -15.0
|
||||||
angle_max_deflection: float = 65.0
|
angle_max_deflection: float = 65.0
|
||||||
|
|
||||||
spool_radius: float = 14.0
|
spool_radius: float = 12.0
|
||||||
spool_groove_depth: float = 1.0
|
spool_groove_depth: float = 1.0
|
||||||
spool_base_height: float = 3.0
|
spool_base_height: float = 3.0
|
||||||
spool_height: float = 5.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
|
flip: bool = False
|
||||||
actuator: LinearActuator = LINEAR_ACTUATOR_21
|
actuator: LinearActuator = LINEAR_ACTUATOR_21
|
||||||
|
@ -554,17 +555,19 @@ class ShoulderJoint(Model):
|
||||||
Generates the spool piece which holds the line in tension
|
Generates the spool piece which holds the line in tension
|
||||||
"""
|
"""
|
||||||
t = self.spool_groove_depth
|
t = self.spool_groove_depth
|
||||||
bulk = Cq.Solid.makeCylinder(
|
radius_core_inner = self.torsion_joint.radius_rider - self.child_core_thickness
|
||||||
radius=self.spool_radius,
|
spindle = Cq.Solid.makeCone(
|
||||||
|
radius1=self.spool_radius,
|
||||||
|
radius2=radius_core_inner,
|
||||||
height=self.spool_height,
|
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(
|
slot = Cq.Solid.makeBox(
|
||||||
length=t + self.spool_groove_inset,
|
length=t,
|
||||||
width=t,
|
width=t,
|
||||||
height=self.spool_base_height,
|
height=self.spool_base_height,
|
||||||
).located(Cq.Location((hole_x, -t/2, 0)))
|
).located(Cq.Location((hole_x, -t/2, 0)))
|
||||||
|
@ -577,7 +580,7 @@ class ShoulderJoint(Model):
|
||||||
radius=self.torsion_joint.radius_axle,
|
radius=self.torsion_joint.radius_axle,
|
||||||
height=self.spool_height + self.spool_base_height,
|
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")
|
@target(name="child")
|
||||||
def child(self) -> Cq.Assembly:
|
def child(self) -> Cq.Assembly:
|
||||||
|
@ -618,6 +621,11 @@ class ShoulderJoint(Model):
|
||||||
width=self.child_lip_width - self.child_lip_thickness * 2,
|
width=self.child_lip_width - self.child_lip_thickness * 2,
|
||||||
height=self.child_lip_height,
|
height=self.child_lip_height,
|
||||||
).located(Cq.Location((0, self.child_lip_thickness, 0))))
|
).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((
|
.located(Cq.Location((
|
||||||
self.child_guard_ext,
|
self.child_guard_ext,
|
||||||
-self.child_lip_width / 2,
|
-self.child_lip_width / 2,
|
||||||
|
|
Loading…
Reference in New Issue