Compare commits

...

3 Commits

Author SHA1 Message Date
Robert Sheldon 34ce2c2d21 more tweaks but this is looking less likely 2019-09-10 02:32:18 -04:00
Robert Sheldon c23784ec08 tweak 2019-09-07 17:10:30 -04:00
Robert Sheldon e477350153 begin implementing choc stem 2019-09-07 16:59:29 -04:00
9 changed files with 85 additions and 4 deletions

View File

@ -14,7 +14,15 @@ include <src/key_types.scad>
include <src/key_transformations.scad>
include <src/key_helpers.scad>
sa_row(3) u(3) stabilized() {
/* %envelope(0); */
key();
u(1) choc() {
flared_support() 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(); */

View File

@ -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);
}
}
}

View File

@ -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();
}

View File

@ -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]

View File

@ -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);
}
}
}
}

View File

@ -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.42, $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); */
}
}

View File

@ -4,6 +4,7 @@ include <stems/box_cherry.scad>
include <stems/alps.scad>
include <stems/filled.scad>
include <stems/cherry_stabilizer.scad>
include <stems/choc.scad>
//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 {

5
src/stems/choc.scad Normal file
View File

@ -0,0 +1,5 @@
module choc_stem(depth, slop){
translate([-5.7/2, 0, depth/2]) cube([1.2 - slop, 3 - slop / 2, depth], center=true);
translate([5.7/2, 0, depth/2]) cube([1.2 - slop, 3 - slop / 2, depth], center=true);
}

View File

@ -32,6 +32,34 @@ module flared(stem_type, loft, height) {
square(outer_cherry_stabilizer_stem($stem_slop) - [2,2], center=true);
}
}
} else if (stem_type == "choc") {
choc_scale = [scale_for_45(height, $choc_stem[0]), scale_for_45(height, $choc_stem[1])];
// double support
/*
translate([-5.7/2,0,0]) linear_extrude(height=height, scale = choc_scale){
// TODO make a choc_stem() function so it can build in the slop
square($choc_stem - [$stem_slop, $stem_slop], center=true);
}
translate([5.7/2,0,0]) linear_extrude(height=height, scale = choc_scale){
square($choc_stem - [$stem_slop, $stem_slop], center=true);
} */
// single support, full width
/* translate([0,0,0]) linear_extrude(height=height, scale = choc_scale){
// TODO make a choc_stem() function so it can build in the slop
square([total_key_width($wall_thickness), $choc_stem[1] - $stem_slop], center=true);
} */
// single support, just the stem
new_choc_scale = [scale_for_45(height, $choc_stem[0] + 5.7 - $stem_slop), scale_for_45(height, $choc_stem[1])];
translate([0,0,0]) linear_extrude(height=height, scale = new_choc_scale){
// TODO make a choc_stem() function so it can build in the slop
square([$choc_stem[0] + 5.7 - $stem_slop, $choc_stem[1] - $stem_slop], 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