cosplay: Touhou/Houjuu Nue #4

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

View File

@ -5,7 +5,7 @@ from dataclasses import dataclass
import cadquery as Cq import cadquery as Cq
import nhf.metric_threads as NMt import nhf.metric_threads as NMt
@dataclass(frozen=True) @dataclass
class Handle: class Handle:
""" """
Characteristic of a tool handle Characteristic of a tool handle

View File

@ -4,7 +4,7 @@ import cadquery as Cq
import nhf.springs as NS import nhf.springs as NS
from nhf import Role from nhf import Role
@dataclass(frozen=True) @dataclass
class HirthJoint: class HirthJoint:
""" """
A Hirth joint attached to a cylindrical base A Hirth joint attached to a cylindrical base
@ -231,26 +231,26 @@ class TorsionJoint:
""" """
# Radius limit for rotating components # Radius limit for rotating components
radius = 40 radius: float = 40
disk_height = 10 disk_height: float = 10
radius_spring = 15 radius_spring: float = 15
radius_axle = 6 radius_axle: float = 6
# Offset of the spring hole w.r.t. surface # Offset of the spring hole w.r.t. surface
spring_hole_depth = 4 spring_hole_depth: float = 4
# Also used for the height of the hole for the spring # Also used for the height of the hole for the spring
spring_thickness = 2 spring_thickness: float = 2
spring_height = 15 spring_height: float = 15
spring_tail_length = 40 spring_tail_length: float = 40
groove_radius_outer = 35 groove_radius_outer: float = 35
groove_radius_inner = 20 groove_radius_inner: float = 20
groove_depth = 5 groove_depth: float = 5
rider_gap = 2 rider_gap: float = 2
n_slots = 8 n_slots: float = 8
right_handed: bool = False right_handed: bool = False

View File

@ -24,7 +24,7 @@ from root to tip s0 (root),
s1, s2, s3. The joints are named (from root to tip) s1, s2, s3. The joints are named (from root to tip)
shoulder, elbow, wrist in analogy with human anatomy. shoulder, elbow, wrist in analogy with human anatomy.
""" """
from dataclasses import dataclass from dataclasses import dataclass, field
import unittest import unittest
import cadquery as Cq import cadquery as Cq
import nhf.joints import nhf.joints
@ -50,24 +50,24 @@ class Parameters:
harness_height: float = 400 harness_height: float = 400
harness_fillet: float = 10 harness_fillet: float = 10
harness_wing_base_pos = [ harness_wing_base_pos: list[tuple[str, float, float]] = field(default_factory=lambda: [
("r1", 70, 150), ("r1", 70, 150),
("l1", -70, 150), ("l1", -70, 150),
("r2", 100, 0), ("r2", 100, 0),
("l2", -100, 0), ("l2", -100, 0),
("r3", 70, -150), ("r3", 70, -150),
("l3", -70, -150), ("l3", -70, -150),
] ])
# Holes drilled onto harness for attachment with HS joint # Holes drilled onto harness for attachment with HS joint
harness_to_root_conn_diam = 6 harness_to_root_conn_diam: float = 6
hs_hirth_joint: HirthJoint = HirthJoint( hs_hirth_joint: HirthJoint = field(default_factory=lambda: HirthJoint(
radius=30, radius=30,
radius_inner=20, radius_inner=20,
tooth_height=10, tooth_height=10,
base_height=5 base_height=5
) ))
# Wing root properties # Wing root properties
# #
@ -94,7 +94,7 @@ class Parameters:
wing_r2_height: float = 100 wing_r2_height: float = 100
wing_r3_height: float = 100 wing_r3_height: float = 100
trident_handle: Handle = Handle( trident_handle: Handle = field(default_factory=lambda: Handle(
diam=38, diam=38,
diam_inner=38-2 * 25.4/8, diam_inner=38-2 * 25.4/8,
# M27-3 # M27-3
@ -102,7 +102,7 @@ class Parameters:
thread_pitch=3, thread_pitch=3,
diam_connector_internal=18, diam_connector_internal=18,
simplify_geometry=False, simplify_geometry=False,
) ))
def __post_init__(self): def __post_init__(self):
assert self.wing_root_radius > self.hs_hirth_joint.radius,\ assert self.wing_root_radius > self.hs_hirth_joint.radius,\

View File

@ -12,7 +12,7 @@ class Test(unittest.TestCase):
p = M.Parameters() p = M.Parameters()
obj = p.wing_root() obj = p.wing_root()
#self.assertIsInstance(obj.solids(), Cq.Solid, msg="Wing root must be in one piece") #self.assertIsInstance(obj.solids(), Cq.Solid, msg="Wing root must be in one piece")
bbox = obj.BoundingBox() bbox = obj.val().BoundingBox()
msg = "Must fix 256^3 bbox" msg = "Must fix 256^3 bbox"
self.assertLess(bbox.xlen, 255, msg=msg) self.assertLess(bbox.xlen, 255, msg=msg)