diff --git a/nhf/touhou/yasaka_kanako/onbashira.py b/nhf/touhou/yasaka_kanako/onbashira.py index 7525663..f279562 100644 --- a/nhf/touhou/yasaka_kanako/onbashira.py +++ b/nhf/touhou/yasaka_kanako/onbashira.py @@ -2102,7 +2102,7 @@ class Onbashira(Model): - hole_negative.moved(p1r) \ - hole_negative.moved(p2r) # Mark the absolute locations of the mount points - dr = self.bulk_radius + self.angle_joint_thickness + dr = self.chamber_bulk_radius dr0 = self.bulk_radius for i, (x, y) in enumerate(self.angle_joint_bolt_position): py = dy + y @@ -2338,6 +2338,42 @@ class Onbashira(Model): self.assembly_ring(self.angle_joint()), name="ring1", ) + name_handle1 = "handle1_1" + a = a.addS( + self.handle(), + name=name_handle1, + material=self.material_brace, + role=Role.HANDLE, + ) + name_handle2 = "handle1_2" + a = a.addS( + self.handle(), + name=name_handle2, + material=self.material_brace, + role=Role.HANDLE, + ) + # Handle constrain + for ih, (_x, _y) in enumerate(self.angle_joint_bolt_position): + a = a.constrain( + f"{name_handle1}?holeLPI{ih}", + f"ring1/side3?holeLPO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle1}?holeRPI{ih}", + f"ring1/side3?holeRPO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle2}?holeLPI{ih}", + f"ring1/side5?holeLPO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle2}?holeRPI{ih}", + f"ring1/side5?holeRPO{ih}", + "Plane", + ) if has_part(parts, "section2"): a = a.add( self.assembly_section(length=self.side_length2, hasFrontHole=True, hasBackHole=True), @@ -2349,42 +2385,6 @@ class Onbashira(Model): name="ring2", ) - name_handle1 = "handle2_1" - a = a.addS( - self.handle(), - name=name_handle1, - material=self.material_brace, - role=Role.HANDLE, - ) - name_handle2 = "handle2_2" - a = a.addS( - self.handle(), - name=name_handle2, - material=self.material_brace, - role=Role.HANDLE, - ) - # Handle constrain - for ih, (x, y) in enumerate(self.angle_joint_bolt_position): - a = a.constrain( - f"{name_handle1}?holeLPI{ih}", - f"ring2/side2?holeLPO{ih}", - "Plane", - ) - a = a.constrain( - f"{name_handle1}?holeRPI{ih}", - f"ring2/side2?holeRPO{ih}", - "Plane", - ) - a = a.constrain( - f"{name_handle2}?holeLPI{ih}", - f"ring2/side4?holeLPO{ih}", - "Plane", - ) - a = a.constrain( - f"{name_handle2}?holeRPI{ih}", - f"ring2/side4?holeRPO{ih}", - "Plane", - ) if has_part(parts, "section3"): a = a.add( self.assembly_section(length=self.side_length3, hasFrontHole=True, hasBackHole=True), @@ -2395,6 +2395,42 @@ class Onbashira(Model): self.assembly_ring(self.angle_joint_chamber_front()), name="ring3", ) + name_handle1 = "handle3_1" + a = a.addS( + self.handle(), + name=name_handle1, + material=self.material_brace, + role=Role.HANDLE, + ) + name_handle2 = "handle3_2" + a = a.addS( + self.handle(), + name=name_handle2, + material=self.material_brace, + role=Role.HANDLE, + ) + # Handle constrain + for ih, (x, y) in enumerate(self.angle_joint_bolt_position): + a = a.constrain( + f"{name_handle1}?holeLPI{ih}", + f"ring3/side1?holeLPO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle1}?holeLSI{ih}", + f"ring3/side0?holeLSO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle2}?holeLPI{ih}", + f"ring3/side3?holeLPO{ih}", + "Plane", + ) + a = a.constrain( + f"{name_handle2}?holeLSI{ih}", + f"ring3/side2?holeLSO{ih}", + "Plane", + ) if has_part(parts, "chamber"): a = a.add( self.assembly_chamber(), @@ -2452,6 +2488,8 @@ class Onbashira(Model): # f"ring2/side{i*2+1}?holeStatorL", # "Plane", #) + if parts: + return a.solve() for i in range(self.n_side): j = (i + 1) % self.n_side ir = (self.n_side - i) % self.n_side