rudimentary Alps compatibility
This commit is contained in:
parent
d88c1c3a82
commit
7dc6020a5c
136
key.scad
136
key.scad
|
@ -9,34 +9,16 @@ key_wall_thickness_depth = .8;
|
||||||
//length in units of key
|
//length in units of key
|
||||||
key_length = 1;
|
key_length = 1;
|
||||||
|
|
||||||
// dimensions of cross
|
|
||||||
// horizontal cross bar width
|
|
||||||
horizontal_cross_width = 1.4;
|
|
||||||
// vertical cross bar width
|
|
||||||
vertical_cross_width = 1.3;
|
|
||||||
// cross length
|
|
||||||
cross_length = 4.4;
|
|
||||||
//extra vertical cross length - change if you dont want the cruciform to be in 2 parts
|
|
||||||
extra_vertical_cross_length = 1.1;
|
|
||||||
|
|
||||||
//dimensions of connector
|
|
||||||
// outer cross extra length in x
|
|
||||||
extra_outer_cross_width = 2.11;
|
|
||||||
// outer cross extra length in y
|
|
||||||
extra_outer_cross_height = 1.1;
|
|
||||||
// cross depth, stem height is 3.4mm
|
|
||||||
cross_depth = 4;
|
|
||||||
|
|
||||||
//connector brim
|
//connector brim
|
||||||
//enable brim for connector
|
//enable brim for connector
|
||||||
has_brim = 1;
|
has_brim = 0;
|
||||||
//brim radius. 11 ensconces normal keycap stem in normal keycap
|
//brim radius. 11 ensconces normal keycap stem in normal keycap
|
||||||
brim_radius = 11;
|
brim_radius = 11;
|
||||||
//brim depth
|
//brim depth
|
||||||
brim_depth = .3;
|
brim_depth = .3;
|
||||||
|
|
||||||
//keycap type, [0..11]
|
|
||||||
key_type = 0;
|
|
||||||
|
|
||||||
//whether stabilizer connectors are enabled
|
//whether stabilizer connectors are enabled
|
||||||
stabilizers = 0;
|
stabilizers = 0;
|
||||||
|
@ -46,6 +28,8 @@ stabilizer_distance = 50;
|
||||||
|
|
||||||
inverted_dish = 0;
|
inverted_dish = 0;
|
||||||
|
|
||||||
|
//keycap type, [0..11]
|
||||||
|
key_profile = 1;
|
||||||
|
|
||||||
//profile specific stuff
|
//profile specific stuff
|
||||||
|
|
||||||
|
@ -269,6 +253,8 @@ key_profiles = [
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
stem_profile=1;
|
||||||
|
|
||||||
//libraries. they generate geometry
|
//libraries. they generate geometry
|
||||||
//that is used by other things to generate features
|
//that is used by other things to generate features
|
||||||
|
|
||||||
|
@ -308,13 +294,80 @@ module inside(key_profile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// inside of connector
|
module cherry_stem(){
|
||||||
module cross(){
|
// cross length
|
||||||
translate([0,0,(cross_depth)/2])
|
cross_length = 4.4;
|
||||||
union(){
|
//dimensions of connector
|
||||||
cube([vertical_cross_width,cross_length+extra_vertical_cross_length,cross_depth], center=true );//remove +2 to print with cross
|
// outer cross extra length in x
|
||||||
cube([cross_length,horizontal_cross_width,cross_depth], center=true );
|
extra_outer_cross_width = 2.11;
|
||||||
}
|
// outer cross extra length in y
|
||||||
|
extra_outer_cross_height = 1.1;
|
||||||
|
// dimensions of cross
|
||||||
|
// horizontal cross bar width
|
||||||
|
horizontal_cross_width = 1.4;
|
||||||
|
// vertical cross bar width
|
||||||
|
vertical_cross_width = 1.3;
|
||||||
|
//extra vertical cross length - the extra length of the up/down bar of the cross
|
||||||
|
extra_vertical_cross_length = 1.1;
|
||||||
|
// cross depth, stem height is 3.4mm
|
||||||
|
cross_depth = 4;
|
||||||
|
|
||||||
|
difference(){
|
||||||
|
union(){
|
||||||
|
translate(
|
||||||
|
[
|
||||||
|
-(cross_length+extra_outer_cross_width)/2,
|
||||||
|
-(cross_length+extra_outer_cross_height)/2,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
)
|
||||||
|
cube( // the base of the stem, the part the cruciform digs into
|
||||||
|
[
|
||||||
|
cross_length+extra_outer_cross_width,
|
||||||
|
cross_length+extra_outer_cross_height,
|
||||||
|
50
|
||||||
|
]
|
||||||
|
);
|
||||||
|
if (has_brim == 1){ cylinder(r=brim_radius,h=brim_depth); }
|
||||||
|
}
|
||||||
|
//the cross part of the steam
|
||||||
|
translate([0,0,(cross_depth)/2]){
|
||||||
|
cube([vertical_cross_width,cross_length+extra_vertical_cross_length,cross_depth], center=true );//remove +2 to print with cross
|
||||||
|
cube([cross_length,horizontal_cross_width,cross_depth], center=true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module alps_stem(){
|
||||||
|
cross_depth = 40;
|
||||||
|
width = 4.45;
|
||||||
|
height = 2.25;
|
||||||
|
|
||||||
|
base_width = 12;
|
||||||
|
base_height = 15;
|
||||||
|
|
||||||
|
//translate([0,0,cross_depth + 50/2]) cube([base_width, base_height, 50], center=true);
|
||||||
|
translate([0,0,(cross_depth/2)]){
|
||||||
|
cube([width,height,cross_depth], center = true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//whole connector
|
||||||
|
module connector(key_profile,has_brim){
|
||||||
|
difference(){
|
||||||
|
//TODO can I really not do an array index here?
|
||||||
|
if(stem_profile==0) cherry_stem();
|
||||||
|
if(stem_profile==1) alps_stem();
|
||||||
|
inside(key_profile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//stabilizer connectors
|
||||||
|
module stabilizer_connectors(key_profile,has_brim){
|
||||||
|
translate([stabilizer_distance,0,0]) connector(key_profile, has_brim);
|
||||||
|
translate([-stabilizer_distance,0,0]) connector(key_profile, has_brim);
|
||||||
}
|
}
|
||||||
|
|
||||||
//i h8 u scad
|
//i h8 u scad
|
||||||
|
@ -457,33 +510,6 @@ module dish(key_profile){ //this thing is a monster
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//whole connector
|
|
||||||
module connector(key_profile,has_brim){
|
|
||||||
difference(){
|
|
||||||
difference(){
|
|
||||||
union(){
|
|
||||||
translate(
|
|
||||||
[
|
|
||||||
-(cross_length+extra_outer_cross_width)/2,
|
|
||||||
-(cross_length+extra_outer_cross_height)/2,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
)
|
|
||||||
cube([cross_length+extra_outer_cross_width,cross_length+extra_outer_cross_height,50]);
|
|
||||||
if (has_brim == 1){ cylinder(r=brim_radius,h=brim_depth); }
|
|
||||||
}
|
|
||||||
cross();
|
|
||||||
}
|
|
||||||
inside(key_profile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//stabilizer connectors
|
|
||||||
module stabilizer_connectors(key_profile,has_brim){
|
|
||||||
translate([stabilizer_distance,0,0]) connector(key_profile, has_brim);
|
|
||||||
translate([-stabilizer_distance,0,0]) connector(key_profile, has_brim);
|
|
||||||
}
|
|
||||||
|
|
||||||
//actual full key with space carved out and keystem/stabilizer connectors
|
//actual full key with space carved out and keystem/stabilizer connectors
|
||||||
module key(key_profile){
|
module key(key_profile){
|
||||||
union(){
|
union(){
|
||||||
|
@ -501,4 +527,4 @@ module key(key_profile){
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
key(key_profiles[key_type]);
|
key(key_profiles[key_profile]);
|
||||||
|
|
Loading…
Reference in New Issue