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