Front chamber separator
This commit is contained in:
parent
e4cfc71f1a
commit
a0100f8fb7
|
@ -144,6 +144,7 @@ class BatteryBox18650(Item):
|
||||||
centered=(True, True, False),
|
centered=(True, True, False),
|
||||||
combine=True,
|
combine=True,
|
||||||
)
|
)
|
||||||
|
.copyWorkplane(Cq.Workplane('XY'))
|
||||||
)
|
)
|
||||||
hole = Cq.Solid.makeCylinder(
|
hole = Cq.Solid.makeCylinder(
|
||||||
radius=self.diam_thread/2,
|
radius=self.diam_thread/2,
|
||||||
|
|
|
@ -318,10 +318,10 @@ class Onbashira(Model):
|
||||||
controller: ArduinoUnoR3 = ArduinoUnoR3()
|
controller: ArduinoUnoR3 = ArduinoUnoR3()
|
||||||
controller_loc: Cq.Location = Cq.Location.from2d(-30, -35, 90)
|
controller_loc: Cq.Location = Cq.Location.from2d(-30, -35, 90)
|
||||||
battery_box_locs: list[Cq.Location] = field(default_factory=lambda: [
|
battery_box_locs: list[Cq.Location] = field(default_factory=lambda: [
|
||||||
Cq.Location.from2d(70, -35, 90),
|
Cq.Location.from2d(70, 0, 90),
|
||||||
Cq.Location.from2d(140, -35, 90),
|
Cq.Location.from2d(140, 0, 90),
|
||||||
Cq.Location.from2d(-70, -35, 90),
|
Cq.Location.from2d(-70, 0, 90),
|
||||||
Cq.Location.from2d(-140, -35, 90),
|
Cq.Location.from2d(-140, 0, 90),
|
||||||
])
|
])
|
||||||
|
|
||||||
# Distance between bind point and motor's mount points
|
# Distance between bind point and motor's mount points
|
||||||
|
@ -1612,12 +1612,17 @@ class Onbashira(Model):
|
||||||
|
|
||||||
@target(name="chamber-back", kind=TargetKind.DXF)
|
@target(name="chamber-back", kind=TargetKind.DXF)
|
||||||
def profile_chamber_back(self) -> Cq.Sketch:
|
def profile_chamber_back(self) -> Cq.Sketch:
|
||||||
|
shift = 180 / self.n_side
|
||||||
return (
|
return (
|
||||||
Cq.Sketch()
|
Cq.Sketch()
|
||||||
.regularPolygon(self.side_width - self.side_thickness, self.n_side)
|
.regularPolygon(
|
||||||
|
self.side_width - self.side_thickness,
|
||||||
|
self.n_side,
|
||||||
|
angle=shift)
|
||||||
.reset()
|
.reset()
|
||||||
.regularPolygon(
|
.regularPolygon(
|
||||||
self.angle_joint_bind_radius, self.n_side,
|
self.angle_joint_bind_radius, self.n_side,
|
||||||
|
angle=shift,
|
||||||
mode="c", tag="bolt")
|
mode="c", tag="bolt")
|
||||||
.vertices(tag="bolt")
|
.vertices(tag="bolt")
|
||||||
.circle(self.rotor_bind_bolt_diam/2, mode="s")
|
.circle(self.rotor_bind_bolt_diam/2, mode="s")
|
||||||
|
@ -1631,7 +1636,7 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
# Mark all attachment points
|
# Mark all attachment points
|
||||||
for i in range(self.n_side):
|
for i in range(self.n_side):
|
||||||
angle = (i+0.5) * math.radians(360 / self.n_side)
|
angle = i * math.radians(360 / self.n_side)
|
||||||
x = self.angle_joint_bind_radius * math.cos(angle)
|
x = self.angle_joint_bind_radius * math.cos(angle)
|
||||||
y = self.angle_joint_bind_radius * math.sin(angle)
|
y = self.angle_joint_bind_radius * math.sin(angle)
|
||||||
result.tagAbsolute(f"holeF{i}", (x, y, self.side_thickness), direction="+Z")
|
result.tagAbsolute(f"holeF{i}", (x, y, self.side_thickness), direction="+Z")
|
||||||
|
@ -1652,6 +1657,38 @@ class Onbashira(Model):
|
||||||
)
|
)
|
||||||
return a
|
return a
|
||||||
|
|
||||||
|
@target(name="chamber-front", kind=TargetKind.DXF)
|
||||||
|
def profile_chamber_front(self) -> Cq.Sketch:
|
||||||
|
"""
|
||||||
|
Front chamber must allow access to the electronics section
|
||||||
|
"""
|
||||||
|
l = self.side_width
|
||||||
|
h = self.side_width
|
||||||
|
h2 = 15
|
||||||
|
return (
|
||||||
|
self.profile_chamber_back()
|
||||||
|
.reset()
|
||||||
|
.rect(l, h, mode="s")
|
||||||
|
.reset()
|
||||||
|
.push([(0, h/2 + h2)])
|
||||||
|
.rect(l/2, h2, mode="s")
|
||||||
|
)
|
||||||
|
def chamber_front(self) -> Cq.Sketch:
|
||||||
|
sketch = self.profile_chamber_front()
|
||||||
|
result = (
|
||||||
|
Cq.Workplane()
|
||||||
|
.placeSketch(sketch)
|
||||||
|
.extrude(self.side_thickness)
|
||||||
|
)
|
||||||
|
# Mark all attachment points
|
||||||
|
for i in range(self.n_side):
|
||||||
|
angle = i * math.radians(360 / self.n_side)
|
||||||
|
x = self.angle_joint_bind_radius * math.cos(angle)
|
||||||
|
y = self.angle_joint_bind_radius * math.sin(angle)
|
||||||
|
result.tagAbsolute(f"holeF{i}", (x, y, self.side_thickness), direction="+Z")
|
||||||
|
result.tagAbsolute(f"holeB{i}", (x, -y, 0), direction="-Z")
|
||||||
|
return result
|
||||||
|
|
||||||
def angle_joint_flange(self) -> Cq.Workplane:
|
def angle_joint_flange(self) -> Cq.Workplane:
|
||||||
th = math.pi / self.n_side
|
th = math.pi / self.n_side
|
||||||
r = self.bulk_radius
|
r = self.bulk_radius
|
||||||
|
@ -2230,6 +2267,13 @@ class Onbashira(Model):
|
||||||
material=self.material_side,
|
material=self.material_side,
|
||||||
role=Role.STRUCTURE | Role.DECORATION,
|
role=Role.STRUCTURE | Role.DECORATION,
|
||||||
)
|
)
|
||||||
|
if has_part(parts, "chamber_front"):
|
||||||
|
a = a.addS(
|
||||||
|
self.chamber_front(),
|
||||||
|
name="chamber_front",
|
||||||
|
material=self.material_side,
|
||||||
|
role=Role.STRUCTURE | Role.DECORATION,
|
||||||
|
)
|
||||||
if has_part(parts, "motor"):
|
if has_part(parts, "motor"):
|
||||||
a = a.add(self.assembly_motor(), name="motor")
|
a = a.add(self.assembly_motor(), name="motor")
|
||||||
if has_part(parts, "machine"):
|
if has_part(parts, "machine"):
|
||||||
|
@ -2309,6 +2353,19 @@ class Onbashira(Model):
|
||||||
f"{name_bolt}?root",
|
f"{name_bolt}?root",
|
||||||
"Plane",
|
"Plane",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
name_bolt =f"chamber_front{i}boltFPI{i}"
|
||||||
|
a = a.addS(
|
||||||
|
BOLT_COMMON.generate(),
|
||||||
|
name=name_bolt,
|
||||||
|
material=self.material_fastener,
|
||||||
|
role=Role.CONNECTION,
|
||||||
|
)
|
||||||
|
a = a.constrain(
|
||||||
|
f"chamber_front?holeF{i}",
|
||||||
|
f"{name_bolt}?root",
|
||||||
|
"Plane",
|
||||||
|
)
|
||||||
for ih in range(len(self.angle_joint_bolt_position)):
|
for ih in range(len(self.angle_joint_bolt_position)):
|
||||||
a = a.constrain(
|
a = a.constrain(
|
||||||
f"chamber/side{i}?holeFPI{ih}",
|
f"chamber/side{i}?holeFPI{ih}",
|
||||||
|
@ -2325,6 +2382,11 @@ class Onbashira(Model):
|
||||||
f"chamber_back?holeB{i}",
|
f"chamber_back?holeB{i}",
|
||||||
"Plane",
|
"Plane",
|
||||||
)
|
)
|
||||||
|
a = a.constrain(
|
||||||
|
f"ring3/side{i}?holeStatorR",
|
||||||
|
f"chamber_front?holeB{i}",
|
||||||
|
"Plane",
|
||||||
|
)
|
||||||
|
|
||||||
#a = a.constrain(
|
#a = a.constrain(
|
||||||
# f"barrel/stator2?holeB{i}",
|
# f"barrel/stator2?holeB{i}",
|
||||||
|
|
Loading…
Reference in New Issue