fix: Adjustments for ease of assembly
This commit is contained in:
parent
de829577aa
commit
332db357ad
|
@ -273,7 +273,7 @@ class Onbashira(Model):
|
||||||
chamber_side_length: float = 400.0
|
chamber_side_length: float = 400.0
|
||||||
chamber_side_width_ex: float = 20.0
|
chamber_side_width_ex: float = 20.0
|
||||||
# Circular hole to hold a switch
|
# Circular hole to hold a switch
|
||||||
chamber_front_switch_diam: float = 20.0
|
hatch_switch_diam: float = 20.0
|
||||||
|
|
||||||
# Dimensions of gun barrels
|
# Dimensions of gun barrels
|
||||||
barrel_diam: float = 25.4 * 1.5
|
barrel_diam: float = 25.4 * 1.5
|
||||||
|
@ -347,8 +347,12 @@ class Onbashira(Model):
|
||||||
motor_coupler_conn_dx: float = 30.0
|
motor_coupler_conn_dx: float = 30.0
|
||||||
motor_coupler_wall_thickness: float = 5.0
|
motor_coupler_wall_thickness: float = 5.0
|
||||||
motor_coupler_inner_gap: float = 1.0
|
motor_coupler_inner_gap: float = 1.0
|
||||||
|
turning_bar_parent_hole_diam: float = 8.0
|
||||||
|
turning_bar_child_hole_diam: float = 4.0
|
||||||
turning_bar_width: float = 15.0
|
turning_bar_width: float = 15.0
|
||||||
electronic_mount_dx: float = 50.0
|
turning_bar_height: float = 30.0
|
||||||
|
electronics_panel_width_ratio: float = 0.7
|
||||||
|
electronics_mount_dx: float = 40.0
|
||||||
|
|
||||||
material_side: Material = Material.WOOD_BIRCH
|
material_side: Material = Material.WOOD_BIRCH
|
||||||
material_bearing: Material = Material.PLASTIC_PLA
|
material_bearing: Material = Material.PLASTIC_PLA
|
||||||
|
@ -1284,38 +1288,39 @@ class Onbashira(Model):
|
||||||
centered=(True, True, False)
|
centered=(True, True, False)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
h = self.turning_bar_height
|
||||||
flange = Cq.Solid.makeBox(
|
flange = Cq.Solid.makeBox(
|
||||||
length=w,
|
length=w,
|
||||||
width=t,
|
width=t,
|
||||||
height=w/2,
|
height=w/2 + h,
|
||||||
).moved(-w/2, -t, -w/2) + Cq.Solid.makeCylinder(
|
).moved(-w/2, -t, -w/2-h) + Cq.Solid.makeCylinder(
|
||||||
radius=w/2,
|
radius=w/2,
|
||||||
height=t,
|
height=t,
|
||||||
pnt=(0, -t, -w/2),
|
pnt=(0, -t, -w/2-h),
|
||||||
dir=(0, 1, 0),
|
dir=(0, 1, 0),
|
||||||
)
|
)
|
||||||
remover = Cq.Solid.makeCylinder(
|
holeC = Cq.Solid.makeCylinder(
|
||||||
radius=BOLT_COMMON.diam_thread/2,
|
radius=self.turning_bar_child_hole_diam/2,
|
||||||
height=w,
|
height=w,
|
||||||
)
|
)
|
||||||
removerf = Cq.Solid.makeCylinder(
|
holeP = Cq.Solid.makeCylinder(
|
||||||
radius=BOLT_COMMON.diam_thread/2,
|
radius=self.turning_bar_parent_hole_diam/2,
|
||||||
height=w*2,
|
height=w*2,
|
||||||
pnt=(0, -w, -w/2),
|
pnt=(0, -w, -w/2-h),
|
||||||
dir=(0, 1, 0),
|
dir=(0, 1, 0),
|
||||||
)
|
)
|
||||||
dxe = self.electronic_mount_dx
|
dxe = self.electronics_mount_dx
|
||||||
result = (
|
result = (
|
||||||
result
|
result
|
||||||
+ flange.moved(dx, w/2, 0)
|
+ flange.moved(dx, w/2, 0)
|
||||||
+ flange.moved(-dx, w/2, 0)
|
+ flange.moved(-dx, w/2, 0)
|
||||||
- remover.moved(dxe, 0, 0)
|
- holeC.moved(dxe, 0, 0)
|
||||||
- remover.moved(-dxe, 0, 0)
|
- holeC.moved(-dxe, 0, 0)
|
||||||
- removerf.moved(dx, 0, 0)
|
- holeP.moved(dx, 0, 0)
|
||||||
- removerf.moved(-dx, 0, 0)
|
- holeP.moved(-dx, 0, 0)
|
||||||
)
|
)
|
||||||
result.tagAbsolute("holeBO1", (dx, w/2, -w/2), direction="+Y")
|
result.tagAbsolute("holeBO1", (dx, w/2, -w/2-h), direction="+Y")
|
||||||
result.tagAbsolute("holeBO2", (-dx, w/2, -w/2), direction="+Y")
|
result.tagAbsolute("holeBO2", (-dx, w/2, -w/2-h), direction="+Y")
|
||||||
result.tagAbsolute("holeMO1", (dxe, 0, t))
|
result.tagAbsolute("holeMO1", (dxe, 0, t))
|
||||||
result.tagAbsolute("holeMO2", (-dxe, 0, t))
|
result.tagAbsolute("holeMO2", (-dxe, 0, t))
|
||||||
return result
|
return result
|
||||||
|
@ -1323,10 +1328,10 @@ class Onbashira(Model):
|
||||||
@target(name="electronics-panel1", kind=TargetKind.DXF)
|
@target(name="electronics-panel1", kind=TargetKind.DXF)
|
||||||
def profile_electronics_panel1(self) -> Cq.Sketch:
|
def profile_electronics_panel1(self) -> Cq.Sketch:
|
||||||
hole_dy = self.turning_bar_hole_dy
|
hole_dy = self.turning_bar_hole_dy
|
||||||
hole_dx = self.electronic_mount_dx
|
hole_dx = self.electronics_mount_dx
|
||||||
l = self.side_length3 - hole_dy * 2 + 12
|
l = self.side_length3 - hole_dy * 2 + 12
|
||||||
y = self.side_length3 - hole_dy * 2
|
y = self.side_length3 - hole_dy * 2
|
||||||
w = self.side_width
|
w = self.side_width * self.electronics_panel_width_ratio
|
||||||
controller_holes = [
|
controller_holes = [
|
||||||
self.controller_loc * Cq.Location.from2d(*h).flip_y()
|
self.controller_loc * Cq.Location.from2d(*h).flip_y()
|
||||||
for h in self.controller.holes
|
for h in self.controller.holes
|
||||||
|
@ -1341,7 +1346,7 @@ class Onbashira(Model):
|
||||||
.rect(l, w)
|
.rect(l, w)
|
||||||
.rect(y, hole_dx * 2, mode="c", tag="corner")
|
.rect(y, hole_dx * 2, mode="c", tag="corner")
|
||||||
.vertices(tag="corner")
|
.vertices(tag="corner")
|
||||||
.circle(BOLT_COMMON.diam_thread/2, mode="s")
|
.circle(self.turning_bar_child_hole_diam/2, mode="s")
|
||||||
.reset()
|
.reset()
|
||||||
.push([
|
.push([
|
||||||
h.to2d_pos() for h in controller_holes
|
h.to2d_pos() for h in controller_holes
|
||||||
|
@ -1354,7 +1359,7 @@ class Onbashira(Model):
|
||||||
|
|
||||||
def electronics_panel1(self) -> Cq.Workplane:
|
def electronics_panel1(self) -> Cq.Workplane:
|
||||||
hole_dy = self.turning_bar_hole_dy
|
hole_dy = self.turning_bar_hole_dy
|
||||||
hole_dx = self.electronic_mount_dx
|
hole_dx = self.electronics_mount_dx
|
||||||
l = self.side_length3
|
l = self.side_length3
|
||||||
t = self.side_thickness
|
t = self.side_thickness
|
||||||
result = (
|
result = (
|
||||||
|
@ -1475,7 +1480,7 @@ class Onbashira(Model):
|
||||||
.translate((0, 0, -self.front_bracket_depth/2))
|
.translate((0, 0, -self.front_bracket_depth/2))
|
||||||
)
|
)
|
||||||
hole_subtractor = Cq.Solid.makeCylinder(
|
hole_subtractor = Cq.Solid.makeCylinder(
|
||||||
radius=BOLT_COMMON.diam_thread/2,
|
radius=BOLT_COMMON.diam_thread/2 * 1.5,
|
||||||
height=self.bulk_radius,
|
height=self.bulk_radius,
|
||||||
dir=(1, 0, 0)
|
dir=(1, 0, 0)
|
||||||
)
|
)
|
||||||
|
@ -1789,9 +1794,10 @@ class Onbashira(Model):
|
||||||
return a
|
return a
|
||||||
|
|
||||||
@target(name="chamber-front", kind=TargetKind.DXF)
|
@target(name="chamber-front", kind=TargetKind.DXF)
|
||||||
def profile_chamber_front(self) -> Cq.Sketch:
|
def profile_hatch(self) -> Cq.Sketch:
|
||||||
"""
|
"""
|
||||||
Front chamber must allow access to the electronics section
|
Front chamber must allow access to the electronics section. This is the
|
||||||
|
wall sitting on the 3rd ring which connects to the previous section.
|
||||||
"""
|
"""
|
||||||
l = self.side_width
|
l = self.side_width
|
||||||
h = self.side_width
|
h = self.side_width
|
||||||
|
@ -1801,18 +1807,18 @@ class Onbashira(Model):
|
||||||
.reset()
|
.reset()
|
||||||
.rect(l, h, mode="s")
|
.rect(l, h, mode="s")
|
||||||
.push([
|
.push([
|
||||||
(l/2 + gap + self.chamber_front_switch_diam/2, 0)
|
(l/2 + gap + self.hatch_switch_diam/2, 0)
|
||||||
])
|
])
|
||||||
.circle(self.chamber_front_switch_diam/2, mode="s")
|
.circle(self.hatch_switch_diam/2, mode="s")
|
||||||
.reset()
|
.reset()
|
||||||
.push([
|
.push([
|
||||||
(0, h/2 + gap),
|
(gap, h/2 + gap),
|
||||||
(0, -h/2 - gap),
|
(gap, -h/2 - gap),
|
||||||
])
|
])
|
||||||
.rect(l/4, gap, mode="s")
|
.rect(l/4, gap, mode="s")
|
||||||
)
|
)
|
||||||
def chamber_front(self) -> Cq.Sketch:
|
def hatch(self) -> Cq.Sketch:
|
||||||
sketch = self.profile_chamber_front()
|
sketch = self.profile_hatch()
|
||||||
result = (
|
result = (
|
||||||
Cq.Workplane()
|
Cq.Workplane()
|
||||||
.placeSketch(sketch)
|
.placeSketch(sketch)
|
||||||
|
@ -2462,15 +2468,15 @@ class Onbashira(Model):
|
||||||
f"{name_bolt}?root",
|
f"{name_bolt}?root",
|
||||||
"Plane",
|
"Plane",
|
||||||
)
|
)
|
||||||
if has_part(parts, "chamber_front"):
|
if has_part(parts, "hatch"):
|
||||||
a = a.addS(
|
a = a.addS(
|
||||||
self.chamber_front(),
|
self.hatch(),
|
||||||
name="chamber_front",
|
name="hatch",
|
||||||
material=self.material_side,
|
material=self.material_side,
|
||||||
role=Role.STRUCTURE | Role.DECORATION,
|
role=Role.STRUCTURE | Role.DECORATION,
|
||||||
)
|
)
|
||||||
for i in range(self.n_side):
|
for i in range(self.n_side):
|
||||||
name_bolt = f"chamber_front{i}boltFPI{i}"
|
name_bolt = f"hatch{i}boltFPI{i}"
|
||||||
a = a.addS(
|
a = a.addS(
|
||||||
BOLT_COMMON.generate(),
|
BOLT_COMMON.generate(),
|
||||||
name=name_bolt,
|
name=name_bolt,
|
||||||
|
@ -2478,7 +2484,7 @@ class Onbashira(Model):
|
||||||
role=Role.CONNECTION,
|
role=Role.CONNECTION,
|
||||||
)
|
)
|
||||||
a = a.constrain(
|
a = a.constrain(
|
||||||
f"chamber_front?holeF{i}",
|
f"hatch?holeF{i}",
|
||||||
f"{name_bolt}?root",
|
f"{name_bolt}?root",
|
||||||
"Plane",
|
"Plane",
|
||||||
)
|
)
|
||||||
|
@ -2575,7 +2581,7 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
a = a.constrain(
|
a = a.constrain(
|
||||||
f"ring3/side{i}?holeStatorR",
|
f"ring3/side{i}?holeStatorR",
|
||||||
f"chamber_front?holeB{i}",
|
f"hatch?holeB{i}",
|
||||||
"Plane",
|
"Plane",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue