2017-08-13 16:15:42 +00:00
|
|
|
// the point of this file is to be a sort of DSL for constructing keycaps.
|
|
|
|
// when you create a method chain you are just changing the parameters
|
|
|
|
// key.scad uses, it doesn't generate anything itself until the end. This
|
2017-10-17 04:50:48 +00:00
|
|
|
// lets it remain easy to use key.scad like before (except without key profiles)
|
2017-08-13 16:15:42 +00:00
|
|
|
// without having to rely on this file. Unfortunately that means setting tons of
|
2017-09-25 04:04:34 +00:00
|
|
|
// special variables, but that's a limitation of SCAD we have to work around
|
2017-08-13 16:15:42 +00:00
|
|
|
|
2017-12-20 05:47:03 +00:00
|
|
|
use <src/key.scad>
|
2017-09-28 16:39:11 +00:00
|
|
|
|
2017-12-20 05:47:03 +00:00
|
|
|
include <src/settings.scad>
|
2018-02-04 20:43:17 +00:00
|
|
|
include <src/key_sizes.scad>
|
|
|
|
include <src/key_profiles.scad>
|
|
|
|
include <src/key_types.scad>
|
|
|
|
include <src/key_transformations.scad>
|
2017-08-12 05:10:48 +00:00
|
|
|
|
2017-08-13 07:04:53 +00:00
|
|
|
module translate_u(x=0, y=0, z=0){
|
|
|
|
translate([x * unit, y*unit, z*unit]) children();
|
|
|
|
}
|
|
|
|
|
2018-02-13 02:36:36 +00:00
|
|
|
// row 5 is commonly the top row, for whatever reason
|
|
|
|
key_profiles = ["dcs", "oem", "sa", "g20", "dsa"];
|
2018-02-04 19:33:12 +00:00
|
|
|
|
2018-02-13 02:36:36 +00:00
|
|
|
module one_single_key(profile, row, unsculpted) {
|
|
|
|
key_profile(profile, unsculpted ? 3 : row) cherry() key();
|
|
|
|
}
|
2018-02-04 19:33:12 +00:00
|
|
|
|
2018-02-13 02:36:36 +00:00
|
|
|
module one_row_profile(profile, unsculpted = false) {
|
|
|
|
rows = [5, 1, 2, 3, 4];
|
|
|
|
for(row = [0:len(rows)-1]) {
|
|
|
|
translate_u(0, -row) one_single_key(profile, rows[row], unsculpted);
|
|
|
|
}
|
2018-01-30 17:01:38 +00:00
|
|
|
}
|
2018-02-04 20:43:17 +00:00
|
|
|
|
2018-02-13 02:36:36 +00:00
|
|
|
for (p = [0:len(key_profiles)-1]) {
|
|
|
|
translate_u(p){
|
|
|
|
/* one_row_profile(key_profiles[p]); */
|
|
|
|
}
|
|
|
|
}
|
2018-02-04 20:43:17 +00:00
|
|
|
|
2018-02-13 02:36:36 +00:00
|
|
|
/* translate_u(0, 0) one_row_profile("oem"); */
|
2018-06-24 21:13:51 +00:00
|
|
|
/* dsa_row(3) u(1) uh(1) cherry() key(); */
|
|
|
|
|
|
|
|
translate_u(0) sa_row(3) cherry() {
|
|
|
|
key();
|
|
|
|
}
|
|
|
|
|
|
|
|
translate_u(1) sa_row(2) cherry() {
|
|
|
|
key();
|
|
|
|
}
|
|
|
|
|
|
|
|
translate_u(2) sa_row(1) cherry() {
|
|
|
|
key();
|
|
|
|
}
|
|
|
|
|
|
|
|
/* sculpted_square_shape([19,19], [0,0], 0.3);
|
|
|
|
translate([26,0,0]) rounded_square_shape([19,19], [0,0], 0.3); */
|