Redesigned screen holder for 30 degree screen

This commit is contained in:
Roberto Alsina 2023-01-27 15:32:04 -03:00
parent 37d96b0e4f
commit 1e89b41995
4 changed files with 88816 additions and 75076 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,8 @@ from modelo import (
# 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 = 80
height_bottom = 59
thickness = 62 # Will be shorter after construction thickness = 62 # Will be shorter after construction
# Visible screen size # Visible screen size
@ -26,6 +27,9 @@ scr_h = 65
scr_thickness = 5.5 scr_thickness = 5.5
screen_cutout = cq.Sketch().trapezoid(scr_w, scr_h, 90, mode="a") screen_cutout = cq.Sketch().trapezoid(scr_w, scr_h, 90, mode="a")
# Screen angle
scr_angle = 30
# Circuit board and cable hole. # Circuit board and cable hole.
# This is in the back of the screen, and is a bit shorter in height than the # This is in the back of the screen, and is a bit shorter in height than the
# screen. It's wider so it removes enough material to make the shape simpler. # screen. It's wider so it removes enough material to make the shape simpler.
@ -36,7 +40,7 @@ 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(20, 9, 90, mode="a").vertices().fillet(1)
# The last mounting pillar is handled specially # The last mounting pillar is handled specially
x, y = mounting_pillar_positions[-1] x, y = mounting_pillar_positions[-1]
@ -57,9 +61,9 @@ def model():
.workplane() .workplane()
.tag("mid_height") .tag("mid_height")
.box(width, height, thickness) .box(width, height, thickness)
# The screen goes at a 45 degree angle # The screen goes rotated
.faces(">Z") .faces(">Z")
.transformed(rotate=(45, 0, 0)) .transformed(rotate=(scr_angle, 0, 0))
# Move the screen "lower" so it doesn't interfere # Move the screen "lower" so it doesn't interfere
# so much with the back # so much with the back
.center(0, -2) .center(0, -2)
@ -84,6 +88,25 @@ def model():
.workplane(offset=21) .workplane(offset=21)
.placeSketch(cq.Sketch().trapezoid(1000, 1000, 90, mode="a")) .placeSketch(cq.Sketch().trapezoid(1000, 1000, 90, mode="a"))
.cutBlind(100) .cutBlind(100)
# Fillet top of the object
.edges(">Z and |X")
.fillet(2.5)
# Make bottom smaller to fit with base
.faces(">X")
.workplane(centerOption="CenterOfBoundBox")
.center(-height / 2, -thickness / 2)
.placeSketch(
cq.Sketch().polygon(
[
(height_bottom, 0),
(height_bottom, 20),
(height, 50),
(height, 0),
(height_bottom, 0),
]
)
)
.cutBlind(-1000)
# Make it hollow # Make it hollow
.faces("<Z") .faces("<Z")
# Can't be exactly shell_t because cq fails # Can't be exactly shell_t because cq fails
@ -93,19 +116,16 @@ def model():
.workplane(offset=-scr_thickness, centerOption="CenterOfBoundBox") .workplane(offset=-scr_thickness, centerOption="CenterOfBoundBox")
.placeSketch(board_cutout) .placeSketch(board_cutout)
.cutBlind(-6) .cutBlind(-6)
# Fillet top of the object
.edges(">Z and |X")
.fillet(5)
# 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 + 134, -44)
.placeSketch(kbd_cable_hole) .placeSketch(kbd_cable_hole)
.cutBlind(-1000) .cutBlind(-1000)
# Pillars to join with bottom half # Pillars to join with bottom half
.workplaneFromTagged("mid_height") .workplaneFromTagged("mid_height")
.workplane(offset=-thickness / 2, centerOption="CenterOfBoundBox") .workplane(offset=-thickness / 2, centerOption="CenterOfBoundBox")
.center(-width / 2, height / 2) .center(-width / 2, height_bottom - height / 2)
.placeSketch(mounting_pillars) .placeSketch(mounting_pillars)
.extrude(10) .extrude(10)
) )

File diff suppressed because it is too large Load Diff