cosplay: Touhou/Houjuu Nue #4
|
@ -261,7 +261,7 @@ class Flexor:
|
||||||
"""
|
"""
|
||||||
motion_span: float
|
motion_span: float
|
||||||
|
|
||||||
actuator: LinearActuator = LINEAR_ACTUATOR_30
|
actuator: LinearActuator = LINEAR_ACTUATOR_50
|
||||||
nut: HexNut = LINEAR_ACTUATOR_HEX_NUT
|
nut: HexNut = LINEAR_ACTUATOR_HEX_NUT
|
||||||
bolt: FlatHeadBolt = LINEAR_ACTUATOR_BOLT
|
bolt: FlatHeadBolt = LINEAR_ACTUATOR_BOLT
|
||||||
bracket: MountingBracket = LINEAR_ACTUATOR_BRACKET
|
bracket: MountingBracket = LINEAR_ACTUATOR_BRACKET
|
||||||
|
|
|
@ -8,7 +8,7 @@ from nhf.parts.springs import TorsionSpring
|
||||||
from nhf.parts.fasteners import FlatHeadBolt, HexNut, ThreaddedKnob
|
from nhf.parts.fasteners import FlatHeadBolt, HexNut, ThreaddedKnob
|
||||||
from nhf.parts.joints import TorsionJoint, HirthJoint
|
from nhf.parts.joints import TorsionJoint, HirthJoint
|
||||||
from nhf.parts.box import Hole, MountingBox, box_with_centre_holes
|
from nhf.parts.box import Hole, MountingBox, box_with_centre_holes
|
||||||
from nhf.touhou.houjuu_nue.electronics import Flexor
|
from nhf.touhou.houjuu_nue.electronics import Flexor, LinearActuator
|
||||||
import nhf.utils
|
import nhf.utils
|
||||||
|
|
||||||
TOL = 1e-6
|
TOL = 1e-6
|
||||||
|
@ -879,15 +879,21 @@ class ElbowJoint(Model):
|
||||||
|
|
||||||
angle_neutral: float = 30.0
|
angle_neutral: float = 30.0
|
||||||
|
|
||||||
|
actuator: LinearActuator
|
||||||
flexor: Flexor = None
|
flexor: Flexor = None
|
||||||
flexor_offset_angle: float = 30.0
|
# Rotates the entire flexor
|
||||||
flexor_mount_rot: float = 95.0
|
flexor_offset_angle: float = 0
|
||||||
|
# Rotates the surface of the mount
|
||||||
|
flexor_mount_rot: float = 90.0
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self):
|
||||||
assert self.child_arm_radius > self.disk_joint.radius_housing
|
assert self.child_arm_radius > self.disk_joint.radius_housing
|
||||||
assert self.parent_arm_radius > self.disk_joint.radius_housing
|
assert self.parent_arm_radius > self.disk_joint.radius_housing
|
||||||
self.disk_joint.tongue_length = self.child_arm_radius - self.disk_joint.radius_disk - self.lip_thickness / 2
|
self.disk_joint.tongue_length = self.child_arm_radius - self.disk_joint.radius_disk - self.lip_thickness / 2
|
||||||
self.flexor = Flexor(motion_span=self.motion_span)
|
self.flexor = Flexor(
|
||||||
|
actuator=self.actuator,
|
||||||
|
motion_span=self.motion_span
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def total_thickness(self):
|
def total_thickness(self):
|
||||||
|
@ -934,7 +940,7 @@ class ElbowJoint(Model):
|
||||||
loc_mount_orient = Cq.Location.rot2d(self.flexor_mount_rot * (-1 if child else 1))
|
loc_mount_orient = Cq.Location.rot2d(self.flexor_mount_rot * (-1 if child else 1))
|
||||||
# Moves the hole to be some distance apart from 0
|
# Moves the hole to be some distance apart from 0
|
||||||
loc_span = Cq.Location.from2d(self.flexor.mount_loc_r, 0)
|
loc_span = Cq.Location.from2d(self.flexor.mount_loc_r, 0)
|
||||||
r = 0 if child else self.flexor.mount_loc_angle
|
r = (-self.flexor.mount_loc_angle if child else 0) + 180
|
||||||
loc_rot = Cq.Location.rot2d(r + self.flexor_offset_angle)
|
loc_rot = Cq.Location.rot2d(r + self.flexor_offset_angle)
|
||||||
return loc_rot * loc_span * loc_mount_orient * loc_mount * loc_thickness
|
return loc_rot * loc_span * loc_mount_orient * loc_mount * loc_thickness
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,9 @@ from nhf import Material, Role
|
||||||
from nhf.build import Model, TargetKind, target, assembly, submodel
|
from nhf.build import Model, TargetKind, target, assembly, submodel
|
||||||
from nhf.parts.box import box_with_centre_holes, MountingBox, Hole
|
from nhf.parts.box import box_with_centre_holes, MountingBox, Hole
|
||||||
from nhf.parts.joints import HirthJoint
|
from nhf.parts.joints import HirthJoint
|
||||||
from nhf.touhou.houjuu_nue.joints import RootJoint, ShoulderJoint, ElbowJoint, DiskJoint
|
|
||||||
from nhf.parts.planar import extrude_with_markers
|
from nhf.parts.planar import extrude_with_markers
|
||||||
|
from nhf.touhou.houjuu_nue.joints import RootJoint, ShoulderJoint, ElbowJoint, DiskJoint
|
||||||
|
from nhf.touhou.houjuu_nue.electronics import LINEAR_ACTUATOR_10, LINEAR_ACTUATOR_50
|
||||||
import nhf.utils
|
import nhf.utils
|
||||||
|
|
||||||
@dataclass(kw_only=True)
|
@dataclass(kw_only=True)
|
||||||
|
@ -45,6 +46,8 @@ class WingProfile(Model):
|
||||||
),
|
),
|
||||||
hole_diam=6.0,
|
hole_diam=6.0,
|
||||||
angle_neutral=15.0,
|
angle_neutral=15.0,
|
||||||
|
actuator=LINEAR_ACTUATOR_50,
|
||||||
|
flexor_offset_angle=-15,
|
||||||
))
|
))
|
||||||
# Distance between the two spacers on the elbow, halved
|
# Distance between the two spacers on the elbow, halved
|
||||||
elbow_h2: float = 5.0
|
elbow_h2: float = 5.0
|
||||||
|
@ -63,6 +66,7 @@ class WingProfile(Model):
|
||||||
parent_arm_radius=30.0,
|
parent_arm_radius=30.0,
|
||||||
hole_diam=4.0,
|
hole_diam=4.0,
|
||||||
angle_neutral=-30.0,
|
angle_neutral=-30.0,
|
||||||
|
actuator=LINEAR_ACTUATOR_10,
|
||||||
))
|
))
|
||||||
# Distance between the two spacers on the elbow, halved
|
# Distance between the two spacers on the elbow, halved
|
||||||
wrist_h2: float = 5.0
|
wrist_h2: float = 5.0
|
||||||
|
|
Loading…
Reference in New Issue