From a8c80a307f36a4b828e5ee3a54f96eacb40efd18 Mon Sep 17 00:00:00 2001 From: Leni Aniva Date: Wed, 21 May 2025 20:25:22 -0700 Subject: [PATCH] Handle stub --- nhf/touhou/yasaka_kanako/onbashira.py | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/nhf/touhou/yasaka_kanako/onbashira.py b/nhf/touhou/yasaka_kanako/onbashira.py index bea144b..6df2c2b 100644 --- a/nhf/touhou/yasaka_kanako/onbashira.py +++ b/nhf/touhou/yasaka_kanako/onbashira.py @@ -68,6 +68,11 @@ class Onbashira(Model): rotor_spacer_outer_diam: float = 15.0 stator_bind_radius: float = 135.0 + handle_base_height: float = 10.0 + handle_thickness: float = 12.0 + handle_length: float = 80.0 + handle_height: float = 40.0 + material_side: Material = Material.WOOD_BIRCH material_bearing: Material = Material.PLASTIC_PLA material_spacer: Material = Material.PLASTIC_PLA @@ -1017,6 +1022,42 @@ class Onbashira(Model): ) return a + @target(name="handle") + def handle(self) -> Cq.Workplane: + w = self.side_width + self.angle_joint_extra_width + base = ( + Cq.Workplane() + .box( + length=w, + width=self.angle_joint_depth, + height=self.handle_base_height, + centered=(True, True, False) + ) + .faces(">Z") + .workplane() + .pushPoints([ + (x * sx, y * sy) + for (x, y) in self.angle_joint_bolt_position + for sx in (-1, 1) + for sy in (-1, 1) + ]) + .cboreHole( + self.angle_joint_bolt_diam, + self.angle_joint_bolt_head_diam, + self.angle_joint_bolt_head_depth, + depth=None, + ) + ) + handle = ( + Cq.Workplane(origin=(0, 0, self.handle_height)) + .box( + length=self.handle_length, + width=self.handle_thickness, + height=self.handle_thickness, + ) + ) + return base + handle + @assembly() def assembly(self) -> Cq.Assembly: a = Cq.Assembly()