mirror of
https://github.com/rsheldiii/KeyV2.git
synced 2024-12-02 01:15:09 +00:00
got SA sculpting into variable, futzing with keysets sort of
This commit is contained in:
parent
5edb404697
commit
b879c854ed
34
key.scad
34
key.scad
@ -16,14 +16,12 @@ brim_radius = 8;
|
|||||||
brim_depth = .3;
|
brim_depth = .3;
|
||||||
//whether stabilizer connectors are enabled
|
//whether stabilizer connectors are enabled
|
||||||
stabilizers = false;
|
stabilizers = false;
|
||||||
// stem offset in units NOT MM. for stepped caps lock basically
|
|
||||||
stem_offset = 0;
|
|
||||||
// font used for text
|
// font used for text
|
||||||
font="Arial";
|
font="Arial";
|
||||||
// font size used for text
|
// font size used for text
|
||||||
font_size = 8;
|
font_size = 8;
|
||||||
// whether or not to render fake keyswitches to check clearances
|
// whether or not to render fake keyswitches to check clearances
|
||||||
clearance_check = true;
|
clearance_check = false;
|
||||||
|
|
||||||
/* [Key profile] */
|
/* [Key profile] */
|
||||||
|
|
||||||
@ -78,9 +76,18 @@ text = "";
|
|||||||
inset_text = false;
|
inset_text = false;
|
||||||
// radius of corners of keycap
|
// radius of corners of keycap
|
||||||
corner_radius = 1;
|
corner_radius = 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* [Fancy Bowed Sides] */
|
||||||
|
|
||||||
|
|
||||||
// if you're doing fancy bowed keycap sides, this controls how many slices you take
|
// if you're doing fancy bowed keycap sides, this controls how many slices you take
|
||||||
// default of 1 for no sampling, just top/bottom
|
// default of 1 for no sampling, just top/bottom
|
||||||
height_slices = 1;
|
height_slices = 1;
|
||||||
|
enable_side_sculpting = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* [Hidden] */
|
/* [Hidden] */
|
||||||
@ -170,16 +177,19 @@ module shape_hull(thickness_difference, depth_difference, modifier){
|
|||||||
|
|
||||||
module shape_slice(index, total, thickness_difference, depth_difference, modifier) {
|
module shape_slice(index, total, thickness_difference, depth_difference, modifier) {
|
||||||
progress = index / (total);
|
progress = index / (total);
|
||||||
|
extra_side_size = $enable_side_sculpting ? abs(index - total)/4 : 0;
|
||||||
|
extra_corner_size = $enable_side_sculpting ? pow(progress, 2) : 0;
|
||||||
|
|
||||||
translate([
|
translate([
|
||||||
0,
|
0,
|
||||||
$top_skew * progress,
|
$top_skew * progress,
|
||||||
($total_depth * modifier - depth_difference) * progress
|
($total_depth * modifier - depth_difference) * progress
|
||||||
]) rotate([-$top_tilt / $key_height * progress,0,0]){
|
]) rotate([-$top_tilt / $key_height * progress,0,0]){
|
||||||
roundedRect([
|
roundedRect([
|
||||||
total_key_width() - thickness_difference - (($width_difference - abs(index - total)/4) * modifier * progress),
|
total_key_width() - thickness_difference - (($width_difference - extra_side_size) * progress * modifier),
|
||||||
total_key_height() - thickness_difference - (($height_difference - abs(index - total)/4) * modifier * progress),
|
total_key_height() - thickness_difference - (($height_difference - extra_side_size) * progress * modifier),
|
||||||
.001
|
.001
|
||||||
],$corner_radius + (pow(progress, 2)));
|
],$corner_radius + extra_corner_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,6 +332,7 @@ module example_key(){
|
|||||||
$inset_text = inset_text;
|
$inset_text = inset_text;
|
||||||
$corner_radius = corner_radius;
|
$corner_radius = corner_radius;
|
||||||
$height_slices = height_slices;
|
$height_slices = height_slices;
|
||||||
|
$enable_side_sculpting = enable_side_sculpting;
|
||||||
|
|
||||||
key();
|
key();
|
||||||
}
|
}
|
||||||
@ -364,10 +375,11 @@ module fakeISOEnter(thickness_difference = 0){
|
|||||||
[unit(1.25) - t, unit(1) - t],
|
[unit(1.25) - t, unit(1) - t],
|
||||||
[unit(1.25) - t, unit(2) - t],
|
[unit(1.25) - t, unit(2) - t],
|
||||||
[ 0 + t, unit(2) - t]
|
[ 0 + t, unit(2) - t]
|
||||||
]
|
];
|
||||||
offset(r=$corner_radius) {
|
|
||||||
polygon(points=pointArray);
|
offset(r=$corner_radius) {
|
||||||
}
|
polygon(points=pointArray);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//corollary is shape_hull
|
//corollary is shape_hull
|
||||||
@ -382,6 +394,6 @@ 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(-.9)]) fakeISOEnter();
|
translate([unit(-.5), unit(-.95)]) fakeISOEnter(thickness_difference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
29
keys.scad
29
keys.scad
@ -6,17 +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:
|
||||||
* make SA keycaps get more rounded the further up they are (like in real life)
|
|
||||||
* make that rounding thing ^ only happen on certain keycaps via limiting the amount of slives we take to 2
|
|
||||||
* can now measure keycaps very accurately. need to redo measurements: [x] SA [ ] DCS [ ] DSA [ ] OEM?
|
|
||||||
* functions to control bowed edges? and bowed corners
|
|
||||||
* bowed sides for SA? jebus
|
|
||||||
* sideways cylindrical dish needs to be used for some spacebars but not others. currently none of them use it
|
|
||||||
* Add inset stem to all profiles that need it
|
|
||||||
* Pregenerated keysets for DCS (rounded tops too intense) [ ] 60% [ ] TKL [ ] full
|
|
||||||
* Full experimental ISO enter
|
* Full experimental ISO enter
|
||||||
|
* 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
|
||||||
|
* 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
|
||||||
* customizer version where everything is copy/pasted in
|
* customizer version where everything is copy/pasted in
|
||||||
* I probably need to switch to surfaces for dishes don't I
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use <key.scad>
|
use <key.scad>
|
||||||
@ -114,6 +110,10 @@ module sa_row(n=1) {
|
|||||||
$dish_skew_y = 0;
|
$dish_skew_y = 0;
|
||||||
$top_skew = 0;
|
$top_skew = 0;
|
||||||
$height_slices = 10;
|
$height_slices = 10;
|
||||||
|
$enable_side_sculpting = true;
|
||||||
|
// might wanna change this if you don't minkowski
|
||||||
|
// do you even minkowski bro
|
||||||
|
$corner_radius = 0.01;
|
||||||
|
|
||||||
if (n == 1){
|
if (n == 1){
|
||||||
$total_depth = 14.89;
|
$total_depth = 14.89;
|
||||||
@ -166,7 +166,9 @@ module fake_iso_enter() {
|
|||||||
$dish_skew_y = 0;
|
$dish_skew_y = 0;
|
||||||
$ISOEnter = true;
|
$ISOEnter = true;
|
||||||
|
|
||||||
stabilized(vertical=true) children();
|
stabilized(vertical=true) {
|
||||||
|
children();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module brimmed() {
|
module brimmed() {
|
||||||
@ -184,6 +186,11 @@ module inverted() {
|
|||||||
children();
|
children();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module rotated() {
|
||||||
|
$stem_rotation = 90;
|
||||||
|
children();
|
||||||
|
}
|
||||||
|
|
||||||
module stabilized(mm=12, vertical = false) {
|
module stabilized(mm=12, vertical = false) {
|
||||||
if (vertical) {
|
if (vertical) {
|
||||||
$connectors = [
|
$connectors = [
|
||||||
@ -361,4 +368,4 @@ module legend(text, inset=false) {
|
|||||||
/*
|
/*
|
||||||
sa_row(1) blank() key();*/
|
sa_row(1) blank() key();*/
|
||||||
|
|
||||||
blank() dishless() fake_iso_enter() cherry() key();
|
/*blank() dishless() rounded() sa_row(1) blank() key();*/
|
||||||
|
40
keysets.scad
Normal file
40
keysets.scad
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*use <key.scad>*/
|
||||||
|
include <keys.scad>
|
||||||
|
|
||||||
|
//TODO duplicate def to not make this a special var. maybe not worth it
|
||||||
|
unit = 19.05;
|
||||||
|
|
||||||
|
// defaults
|
||||||
|
$bottom_key_width = 18.16;
|
||||||
|
$bottom_key_height = 18.16;
|
||||||
|
$width_difference = 6;
|
||||||
|
$height_difference = 4;
|
||||||
|
$total_depth = 11.5;
|
||||||
|
$top_tilt = -6;
|
||||||
|
$top_skew = 1.7;
|
||||||
|
$dish_type = 0;
|
||||||
|
$dish_depth = 1;
|
||||||
|
$dish_skew_x = 0;
|
||||||
|
$dish_skew_y = 0;
|
||||||
|
$key_length = 1;
|
||||||
|
$key_height = 1;
|
||||||
|
$has_brim = false;
|
||||||
|
$inverted_dish = false;
|
||||||
|
$connectors = [[0,0]];
|
||||||
|
$ISOEnter = false;
|
||||||
|
$rounded_key = false;
|
||||||
|
$stem_profile = 0;
|
||||||
|
$stem_inset = 0;
|
||||||
|
$stem_rotation = 0;
|
||||||
|
$text = "";
|
||||||
|
$inset_text = false;
|
||||||
|
$corner_radius = 1;
|
||||||
|
$height_slices = 1;
|
||||||
|
|
||||||
|
|
||||||
|
for (column = [1:15]){
|
||||||
|
for(row = [1:4]) {
|
||||||
|
echo(row);
|
||||||
|
translate_u(column, row) dishless() dcs_row(5-row) blank() key();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user