-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathexamples.py
More file actions
68 lines (55 loc) · 2.32 KB
/
Copy pathexamples.py
File metadata and controls
68 lines (55 loc) · 2.32 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import solid as sl
from pathlib import Path
import configparser
# within project
from keebgen.switch_socket import CherryMXSocket
from keebgen.keycap import OEM
from keebgen.key_assy import SocketAlignedKey, FaceAlignedKey
from keebgen.key_column import ConcaveOrtholinearColumn
from keebgen.keyboard import DactylManuform
def main():
config = configparser.ConfigParser()
config.read('default_config.ini')
# intermediates_dir = Path(__file__).resolve().parent.parent / 'intermediates'
intermediates_dir = Path(__file__).resolve().parent / 'intermediates'
intermediates_dir.mkdir(exist_ok=True)
# key switch socket
socket = CherryMXSocket(config['socket'])
socket.to_file(intermediates_dir / 'socket.scad')
# keycap
keycaps = []
for r in range(1, 5):
keycap = OEM(r,1)
keycap.translate(0, 19*(4-r), 0)
keycaps.append(keycap)
keycapsolid = sl.part()
for key in keycaps:
keycapsolid += key.solid()
keycap_output = intermediates_dir / 'keycaps.scad'
sl.scad_render_to_file(keycapsolid, keycap_output)
# key_assy
socket_aligned_keys = []
face_aligned_keys = []
for r in range(1, 5):
socket_key = SocketAlignedKey(config['key_assy'], config['socket'],r)
socket_key.translate(0, 19*(4-r), 0)
socket_aligned_keys.append(socket_key)
face_key = FaceAlignedKey(config['key_assy'], config['socket'],r)
face_key.translate(0, 19*(4-r), 0)
face_aligned_keys.append(face_key)
key_solid = sl.part()
for key in socket_aligned_keys:
key_solid += key.solid()
socket_aligned_keys_output = intermediates_dir / 'socket_aligned_keys.scad'
sl.scad_render_to_file(key_solid, socket_aligned_keys_output)
key_solid = sl.part()
for key in face_aligned_keys:
key_solid += key.solid()
face_aligned_keys_output = intermediates_dir / 'face_aligned_keys.scad'
sl.scad_render_to_file(key_solid, face_aligned_keys_output)
curved_column = ConcaveOrtholinearColumn(config['column'], config['key_assy'], config['socket'])
curved_column.to_file(intermediates_dir / 'curved_column.scad')
keyboard = DactylManuform(config['keyboard'], config['column'], config['key_assy'], config['socket'])
keyboard.to_file(intermediates_dir / 'keyboard.scad')
if __name__ == '__main__':
main()