move brim to stems.scad so cherry keys can cut out their cross. makes it way easier to print
This commit is contained in:
parent
397c57ca97
commit
7e9e2f0e1e
235302
alldemkeys.stl
235302
alldemkeys.stl
File diff suppressed because it is too large
Load Diff
|
@ -57,7 +57,10 @@ module spherical_dish(width, height, depth, inverted, tilt, txt=""){
|
||||||
/*}*/
|
/*}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
module oldspherical_dish(width, height, depth, inverted, tilt, txt=""){
|
//the older, 'more accurate', and MUCH slower spherical dish.
|
||||||
|
/* I guess this stuff requires some explaining:
|
||||||
|
*/
|
||||||
|
module old_spherical_dish(width, height, depth, inverted, tilt, txt=""){
|
||||||
|
|
||||||
//same thing as the cylindrical dish here, but we need the corners to just touch - so we have to find the hypotenuse of the top
|
//same thing as the cylindrical dish here, but we need the corners to just touch - so we have to find the hypotenuse of the top
|
||||||
chord = pow((pow(width,2) + pow(height, 2)),0.5); //getting diagonal of the top
|
chord = pow((pow(width,2) + pow(height, 2)),0.5); //getting diagonal of the top
|
||||||
|
|
13
key.scad
13
key.scad
|
@ -9,11 +9,6 @@ include <libraries/geodesic_sphere.scad>
|
||||||
keytop_thickness = 1;
|
keytop_thickness = 1;
|
||||||
// wall thickness, aka the thickness of the sides of the keycap. note this is the total thickness, aka 3 = 1.5mm walls
|
// wall thickness, aka the thickness of the sides of the keycap. note this is the total thickness, aka 3 = 1.5mm walls
|
||||||
wall_thickness = 3;
|
wall_thickness = 3;
|
||||||
/* [Brim] */
|
|
||||||
//brim radius. 11 ensconces normal keycap stem in normal keycap
|
|
||||||
brim_radius = 8;
|
|
||||||
//brim depth
|
|
||||||
brim_depth = .3;
|
|
||||||
//whether stabilizer connectors are enabled
|
//whether stabilizer connectors are enabled
|
||||||
stabilizers = false;
|
stabilizers = false;
|
||||||
// font used for text
|
// font used for text
|
||||||
|
@ -251,8 +246,7 @@ module connectors($stem_profile) {
|
||||||
for (connector_pos = $connectors) {
|
for (connector_pos = $connectors) {
|
||||||
translate([connector_pos[0], connector_pos[1], $stem_inset]) {
|
translate([connector_pos[0], connector_pos[1], $stem_inset]) {
|
||||||
rotate([0, 0, $stem_rotation]){
|
rotate([0, 0, $stem_rotation]){
|
||||||
connector($stem_profile);
|
connector($stem_profile, $has_brim);
|
||||||
if ($has_brim) cylinder(r=brim_radius,h=brim_depth);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -378,7 +372,7 @@ module fakeISOEnter(thickness_difference = 0){
|
||||||
];
|
];
|
||||||
|
|
||||||
offset(r=$corner_radius) {
|
offset(r=$corner_radius) {
|
||||||
polygon(points=pointArray);
|
polygon(points=pointArray, center=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,6 +388,7 @@ module ISOEnterShapeHull(thickness_difference, depth_difference, modifier){
|
||||||
linear_extrude(height = height, scale = [width_scale, height_scale]) {
|
linear_extrude(height = height, scale = [width_scale, height_scale]) {
|
||||||
|
|
||||||
// TODO completely making up these numbers here
|
// TODO completely making up these numbers here
|
||||||
translate([unit(-.5), unit(-.95)]) fakeISOEnter(thickness_difference);
|
// 0.86mm is from the unit function, 18.16 - 19.02. no idea what the 18 is, shows me for not leaving better comments
|
||||||
|
translate([unit(-.5), unit(-1) + 0.86]) fakeISOEnter(thickness_difference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
21
keys.scad
21
keys.scad
|
@ -6,12 +6,13 @@
|
||||||
// special variables, but that's a limitation of SCAD we'll have to work around
|
// special variables, but that's a limitation of SCAD we'll have to work around
|
||||||
|
|
||||||
/* TODO:
|
/* TODO:
|
||||||
* Full experimental ISO enter
|
* fix stem inset
|
||||||
* can now measure keycaps very accurately. need to redo measurements: [x] SA [ ] DCS [ ] DSA [ ] OEM?
|
* can now measure keycaps very accurately. need to redo measurements: [x] SA [ ] DCS [ ] DSA [ ] OEM?
|
||||||
* Pregenerated keysets for DCS (rounded tops too intense) [ ] 60% [ ] TKL [ ] full
|
* make OEM profile from my WASD keyset
|
||||||
|
* Pregenerated keysets for DCS (rounded tops too intense) WITH rounded spacebar [ ] 60% [ ] TKL [ ] full
|
||||||
* Add inset stem to all profiles that need it (DCS?)
|
* Add inset stem to all profiles that need it (DCS?)
|
||||||
* generate dishes via math? kind of hard
|
|
||||||
* sideways cylindrical dish needs to be used for some spacebars but not others. currently none of them use it
|
* sideways cylindrical dish needs to be used for some spacebars but not others. currently none of them use it
|
||||||
|
* generate dishes via math? kind of hard
|
||||||
* customizer version where everything is copy/pasted in
|
* customizer version where everything is copy/pasted in
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -88,7 +89,7 @@ module dsa_row(n=3) {
|
||||||
$bottom_key_height = 18.4;
|
$bottom_key_height = 18.4;
|
||||||
$width_difference = 5.7;
|
$width_difference = 5.7;
|
||||||
$height_difference = 5.7;
|
$height_difference = 5.7;
|
||||||
$total_depth = 7.4;
|
$total_depth = 8;
|
||||||
$top_tilt = (n-1) * 7 - 14;
|
$top_tilt = (n-1) * 7 - 14;
|
||||||
$top_skew = 0;
|
$top_skew = 0;
|
||||||
$dish_type = 1;
|
$dish_type = 1;
|
||||||
|
@ -366,19 +367,19 @@ module legend(text, inset=false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([0,0,0]){
|
translate([0,0,0]){
|
||||||
for (x = [1:4]){
|
for (x = [0:4]){
|
||||||
translate_u(0,(x-1)){
|
translate_u(0,(x-1)){
|
||||||
sa_row(5-x) blank() key();
|
/*sa_row(5-x) blank() key();*/
|
||||||
translate_u(1) dcs_row(5-x) blank() key();
|
translate_u(1) dcs_row(5-x) blank() key();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
translate_u(2.1) {
|
brimmed() translate_u(2.1) {
|
||||||
|
|
||||||
translate_u(0, 1.5) fake_iso_enter() blank() key();
|
translate_u(0, 1.5) fake_iso_enter() cherry() key();
|
||||||
dsa_row() blank() key();
|
dsa_row() alps() key();
|
||||||
translate_u(0, 3) g20() blank() key();
|
translate_u(0, 3) g20() rounded_cherry() key();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
sa_row(1) blank() key();*/
|
sa_row(1) blank() key();*/
|
||||||
|
|
90
stems.scad
90
stems.scad
|
@ -1,39 +1,16 @@
|
||||||
|
// TODO uh what
|
||||||
cross_height = 25;
|
cross_height = 25;
|
||||||
|
/* [Brim] */
|
||||||
|
//brim radius. 11 ensconces normal keycap stem in normal keycap
|
||||||
|
brim_radius = 6;
|
||||||
|
//brim depth
|
||||||
|
brim_depth = .3;
|
||||||
|
|
||||||
module cherry_stem() {
|
module brim(has_brim) {
|
||||||
cherry_stem_base();
|
if (has_brim) color([0,1,0]) cylinder(r=brim_radius,h=brim_depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
module cherry_stem_rounded() {
|
module cherry_stem(has_brim) {
|
||||||
// cross length
|
|
||||||
cross_length = 4.4;
|
|
||||||
//dimensions of connector
|
|
||||||
// outer cross extra length in x
|
|
||||||
extra_outer_cross_width = 2.10;
|
|
||||||
// outer cross extra length in y
|
|
||||||
extra_outer_cross_height = 1.0;
|
|
||||||
// dimensions of cross
|
|
||||||
// horizontal cross bar width
|
|
||||||
horizontal_cross_width = 1.4;
|
|
||||||
// vertical cross bar width
|
|
||||||
vertical_cross_width = 1.3;
|
|
||||||
// cross depth, stem height is 3.4mm
|
|
||||||
cross_depth = 4;
|
|
||||||
|
|
||||||
difference(){
|
|
||||||
cylinder(
|
|
||||||
d = cross_length+extra_outer_cross_height,
|
|
||||||
h = cross_height
|
|
||||||
);
|
|
||||||
//the cross part of the steam
|
|
||||||
translate([0,0,(cross_depth)/2 + stem_inset]){
|
|
||||||
cube([vertical_cross_width,cross_length,cross_depth], center=true );
|
|
||||||
cube([cross_length,horizontal_cross_width,cross_depth], center=true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module cherry_stem_base(rounded = false){
|
|
||||||
// cross length
|
// cross length
|
||||||
cross_length = 4.4;
|
cross_length = 4.4;
|
||||||
//extra vertical cross length - the extra length of the up/down bar of the cross
|
//extra vertical cross length - the extra length of the up/down bar of the cross
|
||||||
|
@ -52,11 +29,13 @@ module cherry_stem_base(rounded = false){
|
||||||
cross_depth = 4;
|
cross_depth = 4;
|
||||||
|
|
||||||
difference(){
|
difference(){
|
||||||
|
translate([0,0,stem_inset]) {
|
||||||
|
brim(has_brim);
|
||||||
translate([
|
translate([
|
||||||
-(cross_length+extra_outer_cross_width)/2,
|
-(cross_length+extra_outer_cross_width)/2,
|
||||||
-(cross_length+extra_outer_cross_height)/2,
|
-(cross_length+extra_outer_cross_height)/2,
|
||||||
stem_inset
|
0
|
||||||
]) {
|
])
|
||||||
cube([ // the base of the stem, the part the cruciform digs into
|
cube([ // the base of the stem, the part the cruciform digs into
|
||||||
cross_length+extra_outer_cross_width,
|
cross_length+extra_outer_cross_width,
|
||||||
cross_length+extra_outer_cross_height,
|
cross_length+extra_outer_cross_height,
|
||||||
|
@ -72,7 +51,39 @@ module cherry_stem_base(rounded = false){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module alps_stem(){
|
module cherry_stem_rounded(has_brim) {
|
||||||
|
// cross length
|
||||||
|
cross_length = 4.4;
|
||||||
|
//dimensions of connector
|
||||||
|
// outer cross extra length in x
|
||||||
|
extra_outer_cross_width = 2.10;
|
||||||
|
// outer cross extra length in y
|
||||||
|
extra_outer_cross_height = 1.0;
|
||||||
|
// dimensions of cross
|
||||||
|
// horizontal cross bar width
|
||||||
|
horizontal_cross_width = 1.4;
|
||||||
|
// vertical cross bar width
|
||||||
|
vertical_cross_width = 1.3;
|
||||||
|
// cross depth, stem height is 3.4mm
|
||||||
|
cross_depth = 4;
|
||||||
|
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
cylinder(
|
||||||
|
d = cross_length+extra_outer_cross_height,
|
||||||
|
h = cross_height
|
||||||
|
);
|
||||||
|
brim(has_brim);
|
||||||
|
}
|
||||||
|
//the cross part of the steam
|
||||||
|
translate([0,0,(cross_depth)/2 + stem_inset]){
|
||||||
|
cube([vertical_cross_width,cross_length,cross_depth], center=true );
|
||||||
|
cube([cross_length,horizontal_cross_width,cross_depth], center=true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module alps_stem(has_brim = false){
|
||||||
cross_depth = 40;
|
cross_depth = 40;
|
||||||
width = 4.45;
|
width = 4.45;
|
||||||
height = 2.25;
|
height = 2.25;
|
||||||
|
@ -80,6 +91,7 @@ module alps_stem(){
|
||||||
base_width = 12;
|
base_width = 12;
|
||||||
base_height = 15;
|
base_height = 15;
|
||||||
|
|
||||||
|
brim(has_brim);
|
||||||
translate([0,0,cross_depth/2 + stem_inset]){
|
translate([0,0,cross_depth/2 + stem_inset]){
|
||||||
cube([width,height,cross_depth], center = true);
|
cube([width,height,cross_depth], center = true);
|
||||||
}
|
}
|
||||||
|
@ -87,12 +99,12 @@ module alps_stem(){
|
||||||
|
|
||||||
|
|
||||||
//whole connector, alps or cherry, trimmed to fit
|
//whole connector, alps or cherry, trimmed to fit
|
||||||
module connector(stem_profile){
|
module connector(stem_profile, has_brim){
|
||||||
if (stem_profile == "alps") {
|
if (stem_profile == "alps") {
|
||||||
alps_stem();
|
alps_stem(has_brim);
|
||||||
} else if (stem_profile == "cherry_rounded") {
|
} else if (stem_profile == "cherry_rounded") {
|
||||||
cherry_stem_rounded();
|
cherry_stem_rounded(has_brim);
|
||||||
} else if (stem_profile == "cherry") {
|
} else if (stem_profile == "cherry") {
|
||||||
cherry_stem();
|
cherry_stem(has_brim);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue