-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupper_panel.py
executable file
·45 lines (37 loc) · 1.47 KB
/
upper_panel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
import numpy as np
import solid as sp
import cad, layout, utils
def place_right_hand_side():
switch_positions = layout.generate_switch_positions() + layout.split_offset
switch_orientations = layout.generate_switch_orientations()
board_outline = layout.generate_board_outline() + layout.split_offset
mounting_holes = layout.generate_mounting_holes() + layout.split_offset
return sp.difference()(
cad.case_panel(board_outline, mounting_holes),
list(cad.switch_cutouts(switch_positions, switch_orientations)),
cad.mcu_header_cutouts(
layout.generate_mcu_position() + layout.split_offset
),
)
def place_left_hand_side():
switch_positions = utils.mirror_in_x(
layout.generate_switch_positions()
) - layout.split_offset
switch_orientations = layout.generate_switch_orientations() * -1
board_outline = utils.mirror_in_x(
layout.generate_board_outline()
) - layout.split_offset
mounting_holes = utils.mirror_in_x(
layout.generate_mounting_holes()
) - layout.split_offset
return sp.difference()(
cad.case_panel(board_outline, mounting_holes),
list(cad.switch_cutouts(switch_positions, switch_orientations)),
cad.mcu_header_cutouts(
utils.
mirror_in_x(layout.generate_mcu_position() + layout.split_offset)
),
)
u = sp.union()(place_right_hand_side(), place_left_hand_side())
print(sp.scad_render(u))