cosplay: Touhou/Houjuu Nue #4

Open
aniva wants to merge 189 commits from touhou/houjuu-nue into main
3 changed files with 27 additions and 16 deletions
Showing only changes of commit f33224c216 - Show all commits

View File

@ -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,

View File

@ -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(

View File

@ -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
)) ))