Compare commits

1 Commits

10 changed files with 139321 additions and 143635 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,8 +8,8 @@ from cadquery2 import exporters
shell_t = 3 shell_t = 3
# Size of the kbd board # Size of the kbd board
kbd_height = 95.5 kbd_height = 98
kbd_width = 305 kbd_width = 286
kbd_angle = 5 kbd_angle = 5
# Size of the whole object # Size of the whole object
@@ -27,17 +27,17 @@ kbd_pillars = (
cq.Sketch() cq.Sketch()
.push( .push(
[ [
(18.25, -16), (19, -16.5),
(142.5, -25.5), (133, -16.5),
(kbd_width - 20, -16), (247.5, -16.5),
(23.5, -79.5), (24, -86),
(145.5, -82.5), (142.5, -91),
(kbd_width - 19, -79.5), (261.5, -86),
] ]
) )
.circle(2.2, mode="a") .circle(6, mode="a")
# Holes for self-tapping screws # Holes for M3 threaded inserts
.circle(1.1, mode="s") .circle(ti_radius, mode="s")
) )
# These are placed where convenient, and are used to join the top and bottom # These are placed where convenient, and are used to join the top and bottom
@@ -45,10 +45,10 @@ kbd_pillars = (
# Measured from top-left corner OUTSIDE # Measured from top-left corner OUTSIDE
mounting_pillar_positions = [ mounting_pillar_positions = [
(6, -6), (6, -6),
(120, -6),
(170, -6),
(width - 6, -6), (width - 6, -6),
(width - 6, -40), (width - 6, -40),
(120, -6),
(170, -6),
] ]
mounting_pillars = ( mounting_pillars = (
@@ -60,29 +60,29 @@ mounting_pillars = (
screw_holes = cq.Sketch().push(mounting_pillar_positions).circle(3, mode="a") screw_holes = cq.Sketch().push(mounting_pillar_positions).circle(3, mode="a")
# battery_holder = ( battery_holder = (
# cq.Sketch() cq.Sketch()
# .polygon( .polygon(
# [(-67, 5), (0, 5), (0, -12), (-67, -12), (-67, 5)], [(-67, 5), (0, 5), (0, -12), (-67, -12), (-67, 5)],
# mode="a", mode="a",
# ) )
# .trapezoid(83, 83, 90, mode="a") .trapezoid(83, 83, 90, mode="a")
# .trapezoid(80, 80, 90, mode="s") .trapezoid(80, 80, 90, mode="s")
# .polygon( .polygon(
# [(-67, 3), (0, 3), (0, -10), (-67, -10), (-67, 3)], [(-67, 3), (0, 3), (0, -10), (-67, -10), (-67, 3)],
# mode="s", mode="s",
# ) )
# # Cutout for the # Cutout for the
# .polygon( .polygon(
# [(-67, 30), (0, 30), (0, 12), (-67, 12), (-67, 30)], [(-67, 30), (0, 30), (0, 12), (-67, 12), (-67, 30)],
# mode="s", mode="s",
# ) )
# ) )
power_in = cq.Sketch().circle(5, mode="a") power_in = cq.Sketch().circle(5, mode="a")
usb_in = cq.Sketch().trapezoid(13, 5.5, 90, mode="a") usb_in = cq.Sketch().trapezoid(13, 5.5, 90, mode="a")
switch_in = cq.Sketch().trapezoid(13.5, 8.5, 90, mode="a") switch_in = cq.Sketch().trapezoid(13.5, 8, 90, mode="a")
# Motherboard mount # Motherboard mount
@@ -100,10 +100,10 @@ def model():
.faces(">Z") .faces(">Z")
.shell(-shell_t) .shell(-shell_t)
# Battery holder # Battery holder
# .workplaneFromTagged("mid_height") .workplaneFromTagged("mid_height")
# .center(-width / 2 + shell_t + 65, height / 2 - shell_t - 45) .center(-width / 2 + shell_t + 65, height / 2 - shell_t - 45)
# .placeSketch(battery_holder) .placeSketch(battery_holder)
# .extrude(-height / 2) .extrude(-height / 2)
# Power cable inlet # Power cable inlet
.faces("<X") .faces("<X")
.workplane(centerOption="CenterOfBoundBox") .workplane(centerOption="CenterOfBoundBox")
@@ -157,7 +157,7 @@ def model():
if __name__ == "__main__": if __name__ == "__main__":
left_cutout = cq.Sketch().polygon( left_cutout = cq.Sketch().polygon(
[(0, 0), (width / 2, 0), (width / 2, -height), (0, -height), (0, 0)], [(0, 0), (160, 0), (160, -100), (135, -100), (135, -200), (0, -200), (0, 0)],
mode="a", mode="a",
) )
@@ -175,11 +175,13 @@ if __name__ == "__main__":
right_cutout = cq.Sketch().polygon( right_cutout = cq.Sketch().polygon(
[ [
(width / 2, 0), (160, 0),
(width, 0), (width, 0),
(width, -height), (width, -height),
(width / 2, -height), (135, -height),
(width / 2, 0), (135, -100),
(160, -100),
(160, 0),
], ],
mode="a", mode="a",
) )

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -10,6 +10,8 @@ from modelo import (
ti_radius, ti_radius,
) )
ti_radius = 2.5
# Size of the whole object # Size of the whole object
width = kbd_width + 2 * shell_t width = kbd_width + 2 * shell_t
height = 59 height = 59
@@ -36,16 +38,11 @@ board_cutout = cq.Sketch().trapezoid(
mode="a", mode="a",
) )
kbd_cable_hole = cq.Sketch().trapezoid(15, 6, 90, mode="a").vertices().fillet(1) kbd_cable_hole = cq.Sketch().trapezoid(15, 5, 90, mode="a").vertices().fillet(1)
# The last mounting pillar is handled specially
x, y = mounting_pillar_positions[-1]
mounting_pillars = ( mounting_pillars = (
cq.Sketch() cq.Sketch()
.polygon([(0, 0), (width, 0), (width, -12), (0, -12), (0, 0)], mode="a") .polygon([(0, 0), (width, 0), (width, -12), (0, -12), (0, 0)], mode="a")
.polygon(
[(x - 6, y - 6), (x - 6, y + 6), (x + 6, y + 6), (x + 6, y - 6), (x - 6, y - 6)]
)
.push(mounting_pillar_positions) .push(mounting_pillar_positions)
.circle(ti_radius, mode="s") .circle(ti_radius, mode="s")
) )
@@ -99,7 +96,7 @@ def model():
# Make small hole for the keyboard cable # Make small hole for the keyboard cable
.faces(">Y") .faces(">Y")
.workplane(offset=-5, centerOption="CenterOfBoundBox") .workplane(offset=-5, centerOption="CenterOfBoundBox")
.center(-width / 2 + 134, -24) .center(-width / 2 + 128, -23)
.placeSketch(kbd_cable_hole) .placeSketch(kbd_cable_hole)
.cutBlind(-1000) .cutBlind(-1000)
# Pillars to join with bottom half # Pillars to join with bottom half
@@ -111,27 +108,26 @@ def model():
) )
if __name__ == "__main__": exporters.export(model(), "screen_mount.stl")
print("Exporting") split_offset = -133
exporters.export(model(), "screen_mount.stl")
offset_width = -133 right_side = (
model()
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=split_offset)
.center(0, height / 2)
.split(keepTop=True)
)
right_side = ( exporters.export(right_side, "right_screen_mount.stl")
model()
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=offset_width)
.split(keepTop=True)
)
exporters.export(right_side, "right_screen_mount.stl") left_side = (
model()
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=split_offset)
.center(0, height / 2)
.split(keepBottom=True)
)
left_side = ( exporters.export(left_side, "left_screen_mount.stl")
model()
.faces(">X")
.workplane(centerOption="CenterOfBoundBox", offset=offset_width)
.split(keepBottom=True)
)
exporters.export(left_side, "left_screen_mount.stl")

File diff suppressed because it is too large Load Diff