Moved specific keyboard sizes and positions to dimensions.py

This commit is contained in:
Roberto Alsina 2023-04-15 19:21:03 -03:00
parent 158d7bfd87
commit 7217c7bc3b
7 changed files with 73 additions and 58 deletions

View File

@ -1,11 +1,13 @@
STL_FILES = base.stl hinged_lid.stl simple_lid.stl tandy_lid.stl STL_FILES = base.stl hinged_lid.stl simple_lid.stl tandy_lid.stl
all: $(STL_FILES) .lint all: $(STL_FILES) lint
%.stl: %.py dimensions.py utils.py %.stl: %.py dimensions.py utils.py components/*py
python $< python $<
.lint: *.py lint: .lint
.lint: **.py
flake8 flake8
touch .lint touch .lint

View File

@ -118,7 +118,7 @@ def model():
bottom_face="<Z", bottom_face="<Z",
back_face=None, back_face=None,
offset_x=dim.shell_t, offset_x=dim.shell_t,
offset_y=dim.kbd_height + dim.shell_t, offset_y=keyboard.kbd_height + dim.shell_t,
shell_t=dim.shell_t, shell_t=dim.shell_t,
) )

View File

@ -1,47 +1,40 @@
import cadquery as cq import cadquery as cq
import math
# TODO: move dimensions to dimensions.py # These should be set from dimensions.py
# Size of the kbd board elements = None
kbd_height = 95.5 kbd_pillar_positions = []
kbd_width = 305 kbd_height = 0
back_thickness = 19 kbd_width = 0
front_thickness = 12 kbd_back_thickness = 0
kbd_front_thickness = 0
kbd_actual_height = 0
kbd_angle = 0
# Pythagoras
actual_height = (kbd_height**2 - (back_thickness - front_thickness) ** 2) ** 0.5
kbd_angle = math.acos(actual_height / kbd_height) * 180 / math.pi
kbd_pillar_positions = [ def init():
(19, 16), global elements
(142.5, 25.5),
(kbd_width - 20, 16),
(23.5, 79.5),
(145.5, 82.5),
(kbd_width - 19, 79.5),
]
elements = [ elements = [
# Shorter pillars # Shorter pillars
{ {
"x": 0, "x": 0,
"y": 0, "y": 0,
"z": 5.5, "z": 5.5,
"shape": cq.Sketch().push(kbd_pillar_positions).circle(5, mode="a"), "shape": cq.Sketch().push(kbd_pillar_positions).circle(5, mode="a"),
}, },
# Taller pillars with holes for self-tapping screws # Taller pillars with holes for self-tapping screws
{ {
"x": 0, "x": 0,
"y": 0, "y": 0,
"z": 2.5, "z": 2.5,
"shape": ( "shape": (
cq.Sketch() cq.Sketch()
.push(kbd_pillar_positions) .push(kbd_pillar_positions)
.circle(2.4, mode="a") .circle(2.4, mode="a")
.circle(1.1, mode="s") .circle(1.1, mode="s")
), ),
}, },
] ]
def add( def add(
@ -62,7 +55,7 @@ def add(
if bottom_face: if bottom_face:
model = ( model = (
model.faces(bottom_face) model.faces(bottom_face)
.workplane(centerOption="CenterOfBoundBox", offset=-front_thickness) .workplane(centerOption="CenterOfBoundBox", offset=-kbd_front_thickness)
.center( .center(
-width / 2, -width / 2,
height / 2, height / 2,
@ -89,16 +82,15 @@ def add(
.placeSketch( .placeSketch(
cq.Sketch().polygon( cq.Sketch().polygon(
[ [
[0, front_thickness], [0, kbd_front_thickness],
[shell_t, front_thickness], [shell_t, kbd_front_thickness],
[actual_height + shell_t, back_thickness], [kbd_actual_height + shell_t, kbd_back_thickness],
[actual_height + shell_t, 1000], [kbd_actual_height + shell_t, 1000],
[0, 1000], [0, 1000],
[0, front_thickness], [0, kbd_front_thickness],
] ]
) )
) )
.cutBlind(-1000) .cutBlind(-1000)
) )
return model return model

View File

@ -1,5 +1,8 @@
import math
import components.audio_plug as audio_plug import components.audio_plug as audio_plug
import components.usb_hub as usb_hub import components.usb_hub as usb_hub
import components.keyboard as keyboard
## Standard things (TODO move to separate file) ## Standard things (TODO move to separate file)
@ -18,9 +21,27 @@ m4_bottom = 4
## Keyboard dimensions ## Keyboard dimensions
kbd_height = 95.5 keyboard.kbd_height = 95.5
kbd_width = 305 keyboard.kbd_width = 305
keyboard.kbd_back_thickness = 19
keyboard.kbd_front_thickness = 12
# Pythagoras
keyboard.kbd_actual_height = (
keyboard.kbd_height**2
- (keyboard.kbd_back_thickness - keyboard.kbd_front_thickness) ** 2
) ** 0.5
keyboard.kbd_angle = (
math.acos(keyboard.kbd_actual_height / keyboard.kbd_height) * 180 / math.pi
)
keyboard.kbd_pillar_positions = [
(19, 16),
(142.5, 25.5),
(keyboard.kbd_width - 20, 16),
(23.5, 79.5),
(145.5, 82.5),
(keyboard.kbd_width - 19, 79.5),
]
keyboard.init()
## Screen dimensions ## Screen dimensions
# Whole screen size # Whole screen size
@ -38,7 +59,7 @@ vis_h = 55
shell_t = 3 shell_t = 3
# Size of the base # Size of the base
width = kbd_width + 2 * shell_t width = keyboard.kbd_width + 2 * shell_t
height = 159 height = 159
base_thickness = 30 + shell_t # 30 inside base_thickness = 30 + shell_t # 30 inside

View File

@ -294,10 +294,10 @@ def model():
cq.Sketch().polygon( cq.Sketch().polygon(
[ [
(0, 0), (0, 0),
(0, keyboard.front_thickness), (0, keyboard.kbd_front_thickness),
(dim.shell_t, keyboard.front_thickness), (dim.shell_t, keyboard.kbd_front_thickness),
(keyboard.actual_height + dim.shell_t, keyboard.back_thickness), (keyboard.kbd_actual_height + dim.shell_t, keyboard.kbd_back_thickness),
(keyboard.actual_height + dim.shell_t, dim.base_thickness), (keyboard.kbd_actual_height + dim.shell_t, dim.base_thickness),
(dim.height, dim.base_thickness), (dim.height, dim.base_thickness),
(dim.height, 0), (dim.height, 0),
(0, 0), (0, 0),

Binary file not shown.

Binary file not shown.