From e4773501532905bbcde7077edd6a046357532d1e Mon Sep 17 00:00:00 2001 From: Robert Sheldon Date: Sat, 7 Sep 2019 16:59:29 -0400 Subject: [PATCH] begin implementing choc stem --- keys.scad | 14 +++++++++++--- src/key.scad | 6 +++++- src/key_transformations.scad | 14 ++++++++++++++ src/settings.scad | 3 +++ src/stem_supports/brim.scad | 12 ++++++++++++ src/stem_supports/tines.scad | 4 ++++ src/stems.scad | 3 +++ src/stems/choc.scad | 6 ++++++ src/supports/flared.scad | 9 +++++++++ 9 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 src/stems/choc.scad diff --git a/keys.scad b/keys.scad index fe38b74..bfee55e 100644 --- a/keys.scad +++ b/keys.scad @@ -14,7 +14,15 @@ include include include -sa_row(3) u(3) stabilized() { - /* %envelope(0); */ - key(); + + +u(1) choc() { + tined_stem_support() sa_row(1){ + $stem_support_height = 2; + low_profile() { + key(); + } + } } + +/* translate_u(1,0) u(1) choc() row_profile("oem") low_profile() key(); */ diff --git a/src/key.scad b/src/key.scad index cc44886..227c7bd 100644 --- a/src/key.scad +++ b/src/key.scad @@ -291,7 +291,11 @@ module key(inset = false) { dished($keytop_thickness, $inverted_dish) { translate([0, 0, $stem_inset]) { /* if ($stabilizer_type != "disable") stems_for($stabilizers, $stabilizer_type); */ - if ($stem_type != "disable") stems_for($stem_positions, $stem_type); + if ($stem_type != "disable") { + stems_for($stabilizers, $stabilizer_type); + } + + stems_for($stem_positions, $stem_type); } } } diff --git a/src/key_transformations.scad b/src/key_transformations.scad index 15f63f7..53f387b 100644 --- a/src/key_transformations.scad +++ b/src/key_transformations.scad @@ -104,6 +104,12 @@ module box_cherry(slop) { children(); } +module choc(slop) { + $stem_slop = slop ? slop : $stem_slop; + $stem_type = "choc"; + children(); +} + module flared_support() { $support_type = "flared"; children(); @@ -130,3 +136,11 @@ module bump(depth=undef) { $key_bump_depth = depth == undef ? $key_bump_depth : depth; children(); } + +module low_profile() { + /* $total_depth = 5.35; */ + /* extra ugly hack right now to make sure we don't generate keycaps with insufficient throw */ + /* $total_depth = ($total_depth / 2) < 6 ? 6 : $total_depth / 2; */ + $stem_throw = 3; + children(); +} diff --git a/src/settings.scad b/src/settings.scad index 4a43766..3b32e67 100644 --- a/src/settings.scad +++ b/src/settings.scad @@ -125,6 +125,9 @@ $legends = []; // Dimensions of alps stem $alps_stem = [4.45, 2.25]; +// Dimensions of choc stem +$choc_stem = [1.2, 3]; + // Enable stabilizer stems, to hold onto your cherry or costar stabilizers $stabilizer_type = "costar_stabilizer"; // [costar_stabilizer, cherry_stabilizer, disable] diff --git a/src/stem_supports/brim.scad b/src/stem_supports/brim.scad index 97ae5dc..372fcf3 100644 --- a/src/stem_supports/brim.scad +++ b/src/stem_supports/brim.scad @@ -43,5 +43,17 @@ module brim_support(stem_type, stem_support_height, slop) { inside_cherry_cross(slop); } + } else if(stem_type == "choc") { + translate([-5.7/2,0,0]) linear_extrude(height=stem_support_height) { + offset(r=1){ + square($choc_stem + [3,3], center=true); + } + } + + translate([5.7/2,0,0]) linear_extrude(height=stem_support_height) { + offset(r=1){ + square($choc_stem + [3,3], center=true); + } + } } } diff --git a/src/stem_supports/tines.scad b/src/stem_supports/tines.scad index 99cb57c..aaa5ec9 100644 --- a/src/stem_supports/tines.scad +++ b/src/stem_supports/tines.scad @@ -41,5 +41,9 @@ module tines_support(stem_type, stem_support_height, slop) { } } else if (stem_type == "alps"){ centered_tines(stem_support_height); + } else if (stem_type == "choc"){ + if ($key_length < 2) translate([0,0,$stem_support_height / 2]) cube([total_key_width($wall_thickness)+$wall_thickness/4, 0.5, $stem_support_height], center = true); + /* translate([-5.7/2,0,$stem_support_height / 2]) cube([0.5, total_key_height($wall_thickness), $stem_support_height], center = true); */ + /* translate([5.7/2,0,$stem_support_height / 2]) cube([0.5, total_key_height($wall_thickness), $stem_support_height], center = true); */ } } diff --git a/src/stems.scad b/src/stems.scad index c53ab91..473c10a 100644 --- a/src/stems.scad +++ b/src/stems.scad @@ -4,6 +4,7 @@ include include include include +include //whole stem, alps or cherry, trimmed to fit @@ -20,6 +21,8 @@ module stem(stem_type, depth, slop){ filled_stem(); } else if (stem_type == "cherry_stabilizer") { cherry_stabilizer_stem(depth, slop); + } else if (stem_type == "choc") { + choc_stem(depth, slop); } else if (stem_type == "disable") { children(); } else { diff --git a/src/stems/choc.scad b/src/stems/choc.scad new file mode 100644 index 0000000..1589880 --- /dev/null +++ b/src/stems/choc.scad @@ -0,0 +1,6 @@ +module choc_stem(depth, slop){ + echo("slop"); + echo(slop); + translate([-5.7/2, 0, depth/2]) cube([1.2 - slop/2, 3 - slop/2, depth], center=true); + translate([5.7/2, 0, depth/2]) cube([1.2 - slop/2, 3 - slop/2, depth], center=true); +} diff --git a/src/supports/flared.scad b/src/supports/flared.scad index 213a701..e4eec58 100644 --- a/src/supports/flared.scad +++ b/src/supports/flared.scad @@ -32,6 +32,15 @@ module flared(stem_type, loft, height) { square(outer_cherry_stabilizer_stem($stem_slop) - [2,2], center=true); } } + } else if (stem_type == "choc") { + alps_scale = [scale_for_45(height, $choc_stem[0]), scale_for_45(height, $choc_stem[1])]; + translate([-5.7/2,0,0]) linear_extrude(height=height, scale = alps_scale){ + square($choc_stem - [$stem_slop/2, $stem_slop/2], center=true); + } + + translate([5.7/2,0,0]) linear_extrude(height=height, scale = alps_scale){ + square($choc_stem - [$stem_slop/2, $stem_slop/2], center=true); + } } else { // always render cherry if no stem type. this includes stem_type = false! // this avoids a bug where the keycap is rendered filled when not desired