cosplay: Touhou/Houjuu Nue #1

Closed
aniva wants to merge 37 commits from touhou/houjuu-nue into main
3 changed files with 37 additions and 11 deletions
Showing only changes of commit 4dd43f7151 - Show all commits

View File

@ -174,16 +174,20 @@ class Parameters:
(-dx, dx),
]
def hs_joint_component(self):
hirth = nhf.joints.hirth_joint(
radius=self.hs_joint_radius,
radius_inner=self.hs_joint_radius_inner,
tooth_height=self.hs_joint_tooth_height,
base_height=self.hs_joint_ring_thickness)
return hirth
def hs_joint_parent(self):
"""
Parent part of the Houjuu-Scarlett joint, which is composed of a Hirth
coupling, a cylindrical base, and a mounting base.
"""
hirth = nhf.joints.hirth_joint(
radius=self.hs_joint_radius,
radius_inner=self.hs_joint_radius_inner,
tooth_height=self.hs_joint_tooth_height,
base_height=self.hs_joint_ring_thickness).val()
hirth = self.hs_joint_component().val()
#hirth = (
# hirth
# .faces("<Z")
@ -289,7 +293,7 @@ class Parameters:
Generate the wing root which contains a Hirth joint at its base and a
rectangular opening on its side, with the necessary interfaces.
"""
return MW.wing_base().val()#self.wing_root_radius)
return MW.wing_root()
######################
# Assemblies #

View File

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

View File

@ -117,7 +117,7 @@ def wing_root_profiles(
.wires().val()
)
return base, middle, tip
def wing_base():
def wing_root():
root_profile, middle_profile, tip_profile = wing_root_profiles()
rotate_centre = Cq.Vector(-200, 0, -25)
@ -130,12 +130,17 @@ def wing_base():
middle_profile = middle_profile.rotate(
startVector=rotate_centre,
endVector=rotate_centre + rotate_axis,
angleDegrees = 35,
angleDegrees = 30,
)
antetip_profile = tip_profile.rotate(
startVector=rotate_centre,
endVector=rotate_centre + rotate_axis,
angleDegrees = 60,
)
tip_profile = tip_profile.rotate(
startVector=rotate_centre,
endVector=rotate_centre + rotate_axis,
angleDegrees = 70,
angleDegrees = 90,
)
seg1 = (
Cq.Workplane('XY')
@ -154,9 +159,20 @@ def wing_base():
.add(middle_profile)
.toPending()
.workplane()
.add(antetip_profile)
.toPending()
.loft()
)
seg3 = (
Cq.Workplane('XY')
.add(antetip_profile)
.toPending()
.workplane()
.add(tip_profile)
.toPending()
.loft()
)
seg1 = seg1.union(seg2)
return seg1
result = seg1.union(seg2).union(seg3)
result.faces("<Z").tag("base")
result.faces(">X").tag("conn")
return result