cosplay: Touhou/Houjuu Nue #4
|
@ -302,19 +302,20 @@ LINEAR_ACTUATOR_21 = LinearActuator(
|
||||||
stroke_length=21,
|
stroke_length=21,
|
||||||
front_hole_ext=4,
|
front_hole_ext=4,
|
||||||
back_hole_ext=4,
|
back_hole_ext=4,
|
||||||
segment1_length=75/2,
|
segment1_length=34,
|
||||||
segment2_length=75/2,
|
segment2_length=34,
|
||||||
)
|
)
|
||||||
LINEAR_ACTUATOR_10 = LinearActuator(
|
LINEAR_ACTUATOR_10 = LinearActuator(
|
||||||
# FIXME: Measure
|
mass=41.3,
|
||||||
mass=0.0,
|
|
||||||
stroke_length=10,
|
stroke_length=10,
|
||||||
front_hole_ext=4.5/2,
|
front_hole_ext=4.02,
|
||||||
back_hole_ext=4.5/2,
|
back_hole_ext=4.67,
|
||||||
segment1_length=30.0,
|
segment1_length=13.29,
|
||||||
segment2_length=30.0,
|
segment1_width=15.88,
|
||||||
segment1_width=15.0,
|
segment1_height=12.07,
|
||||||
segment2_width=21.0,
|
segment2_length=42.52,
|
||||||
|
segment2_width=20.98,
|
||||||
|
segment2_height=14.84,
|
||||||
)
|
)
|
||||||
LINEAR_ACTUATOR_HEX_NUT = HexNut(
|
LINEAR_ACTUATOR_HEX_NUT = HexNut(
|
||||||
mass=0.8,
|
mass=0.8,
|
||||||
|
|
|
@ -14,6 +14,12 @@ class TestElectronics(unittest.TestCase):
|
||||||
self.assertAlmostEqual(
|
self.assertAlmostEqual(
|
||||||
ME.LINEAR_ACTUATOR_30.conn_length, 83.9
|
ME.LINEAR_ACTUATOR_30.conn_length, 83.9
|
||||||
)
|
)
|
||||||
|
self.assertAlmostEqual(
|
||||||
|
ME.LINEAR_ACTUATOR_10.conn_length, 64.5
|
||||||
|
)
|
||||||
|
self.assertAlmostEqual(
|
||||||
|
ME.LINEAR_ACTUATOR_21.conn_length, 76.0
|
||||||
|
)
|
||||||
|
|
||||||
def test_flexor(self):
|
def test_flexor(self):
|
||||||
flexor = ME.Flexor(
|
flexor = ME.Flexor(
|
||||||
|
|
|
@ -44,6 +44,8 @@ class WingProfile(Model):
|
||||||
root_joint: RootJoint = field(default_factory=lambda: RootJoint())
|
root_joint: RootJoint = field(default_factory=lambda: RootJoint())
|
||||||
|
|
||||||
panel_thickness: float = 25.4 / 16
|
panel_thickness: float = 25.4 / 16
|
||||||
|
# s0 is armoured
|
||||||
|
panel_thickness_s0: float = 25.4 / 8
|
||||||
# 1/4" acrylic for the spacer. Anything thinner would threathen structural
|
# 1/4" acrylic for the spacer. Anything thinner would threathen structural
|
||||||
# strength
|
# strength
|
||||||
spacer_thickness: float = 25.4 / 4
|
spacer_thickness: float = 25.4 / 4
|
||||||
|
@ -242,7 +244,7 @@ class WingProfile(Model):
|
||||||
return sketch
|
return sketch
|
||||||
|
|
||||||
def outer_shell_s0(self) -> Cq.Workplane:
|
def outer_shell_s0(self) -> Cq.Workplane:
|
||||||
t = self.panel_thickness
|
t = self.panel_thickness_s0
|
||||||
profile = Cq.Wire.assembleEdges(self.outer_profile_s0().edges().vals())
|
profile = Cq.Wire.assembleEdges(self.outer_profile_s0().edges().vals())
|
||||||
result = (
|
result = (
|
||||||
Cq.Workplane('XZ')
|
Cq.Workplane('XZ')
|
||||||
|
@ -254,7 +256,7 @@ class WingProfile(Model):
|
||||||
plane.moveTo(0, self.root_height + t*2).tagPlane("top")
|
plane.moveTo(0, self.root_height + t*2).tagPlane("top")
|
||||||
return result
|
return result
|
||||||
def inner_shell_s0(self) -> Cq.Workplane:
|
def inner_shell_s0(self) -> Cq.Workplane:
|
||||||
t = self.panel_thickness
|
t = self.panel_thickness_s0
|
||||||
#profile = Cq.Wire.assembleEdges(self.inner_profile_s0())
|
#profile = Cq.Wire.assembleEdges(self.inner_profile_s0())
|
||||||
result = (
|
result = (
|
||||||
Cq.Workplane('XZ')
|
Cq.Workplane('XZ')
|
||||||
|
@ -364,7 +366,7 @@ class WingProfile(Model):
|
||||||
]
|
]
|
||||||
result = extrude_with_markers(
|
result = extrude_with_markers(
|
||||||
self.profile_s0(top=top),
|
self.profile_s0(top=top),
|
||||||
self.panel_thickness,
|
self.panel_thickness_s0,
|
||||||
tags,
|
tags,
|
||||||
reverse=not top,
|
reverse=not top,
|
||||||
)
|
)
|
||||||
|
@ -1139,13 +1141,15 @@ class WingR(WingProfile):
|
||||||
angle_neutral=-20.0,
|
angle_neutral=-20.0,
|
||||||
child_arm_radius=23.0,
|
child_arm_radius=23.0,
|
||||||
parent_arm_radius=30.0,
|
parent_arm_radius=30.0,
|
||||||
flexor_offset_angle=30.0,
|
flexor_line_length=50.0,
|
||||||
flexor_child_arm_radius=50.0,
|
flexor_line_slack=3.0,
|
||||||
|
flexor_offset_angle=45.0,
|
||||||
|
flexor_child_arm_radius=None,
|
||||||
flexor_mount_angle_parent=20,
|
flexor_mount_angle_parent=20,
|
||||||
flexor_mount_angle_child=-40,
|
flexor_mount_angle_child=-40,
|
||||||
hole_pos=[10, 20],
|
hole_pos=[10, 20],
|
||||||
lip_length=50,
|
lip_length=50,
|
||||||
actuator=LINEAR_ACTUATOR_21,
|
actuator=LINEAR_ACTUATOR_10,
|
||||||
#flexor_pos_smaller=False,
|
#flexor_pos_smaller=False,
|
||||||
**WRIST_PARAMS
|
**WRIST_PARAMS
|
||||||
))
|
))
|
||||||
|
|
Loading…
Reference in New Issue