mirror of
https://github.com/rsheldiii/KeyV2.git
synced 2024-11-22 21:23:40 +00:00
Merge pull request #39 from rsheldiii/colors
Promote colors to first-party
This commit is contained in:
commit
65b464ed3e
@ -192,6 +192,13 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
|
|||||||
// Shouldn't work in thingiverse customizer, though it has been...
|
// Shouldn't work in thingiverse customizer, though it has been...
|
||||||
$stem_positions = [[0,0]];
|
$stem_positions = [[0,0]];
|
||||||
|
|
||||||
|
// colors
|
||||||
|
$primary_color = [.2667,.5882,1];
|
||||||
|
$secondary_color = [.4412, .7, .3784];
|
||||||
|
$tertiary_color = [1, .6941, .2];
|
||||||
|
$quaternary_color = [.4078, .3569, .749];
|
||||||
|
$warning_color = [1,0,0, 0.15];
|
||||||
|
|
||||||
// key width functions
|
// key width functions
|
||||||
|
|
||||||
module u(u=1) {
|
module u(u=1) {
|
||||||
@ -799,10 +806,13 @@ module bump(depth=undef) {
|
|||||||
|
|
||||||
// kinda dirty, but it works
|
// kinda dirty, but it works
|
||||||
// might not work great with fully sculpted profiles yet
|
// might not work great with fully sculpted profiles yet
|
||||||
|
// NOTE: this needs to come after row declarations or it won't work
|
||||||
module upside_down() {
|
module upside_down() {
|
||||||
if ($stem_inner_slop != 0) {
|
if ($stem_inner_slop != 0) {
|
||||||
echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
|
echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$stem_support_type = "disable";
|
||||||
// $top_tilt*2 because top_placement rotates by top_tilt for us
|
// $top_tilt*2 because top_placement rotates by top_tilt for us
|
||||||
// first rotate 180 to get the keycaps to face the same direction
|
// first rotate 180 to get the keycaps to face the same direction
|
||||||
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
|
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
|
||||||
@ -817,6 +827,17 @@ module sideways() {
|
|||||||
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
|
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
|
||||||
rotate([0,90 + extra_y_rotation ,0]) children();
|
rotate([0,90 + extra_y_rotation ,0]) children();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// emulating the % modifier.
|
||||||
|
// since we use custom colors, just using the % modifier doesn't work
|
||||||
|
module debug() {
|
||||||
|
$primary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$secondary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$tertiary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$quaternary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
|
||||||
|
%children();
|
||||||
|
}
|
||||||
module arrows(profile, rows = [4,4,4,3]) {
|
module arrows(profile, rows = [4,4,4,3]) {
|
||||||
positions = [[0, 0], [1, 0], [2, 0], [1, 1]];
|
positions = [[0, 0], [1, 0], [2, 0], [1, 1]];
|
||||||
legends = ["←", "↓", "→", "↑"];
|
legends = ["←", "↓", "→", "↑"];
|
||||||
@ -3330,16 +3351,11 @@ function dup(value=0,n) = [for (i = [1:n]) value];
|
|||||||
SMALLEST_POSSIBLE = 1/128;
|
SMALLEST_POSSIBLE = 1/128;
|
||||||
$fs = .1;
|
$fs = .1;
|
||||||
$unit = 19.05;
|
$unit = 19.05;
|
||||||
blue = [.2667,.5882,1];
|
|
||||||
color2 = [.5412, .4784, 1];
|
|
||||||
purple = [.4078, .3569, .749];
|
|
||||||
yellow = [1, .6941, .2];
|
|
||||||
transparent_red = [1,0,0, 0.15];
|
|
||||||
|
|
||||||
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
|
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
|
||||||
module shape(thickness_difference, depth_difference=0){
|
module shape(thickness_difference, depth_difference=0){
|
||||||
dished(depth_difference, $inverted_dish) {
|
dished(depth_difference, $inverted_dish) {
|
||||||
color(blue) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
|
color($primary_color) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3348,9 +3364,9 @@ module shape(thickness_difference, depth_difference=0){
|
|||||||
// the dish doesn't _quite_ reach as far as it should
|
// the dish doesn't _quite_ reach as far as it should
|
||||||
module rounded_shape() {
|
module rounded_shape() {
|
||||||
dished(-$minkowski_radius, $inverted_dish) {
|
dished(-$minkowski_radius, $inverted_dish) {
|
||||||
color(blue) minkowski(){
|
color($primary_color) minkowski(){
|
||||||
// half minkowski in the z direction
|
// half minkowski in the z direction
|
||||||
color(blue) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
|
color($primary_color) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
|
||||||
/* cube($minkowski_radius); */
|
/* cube($minkowski_radius); */
|
||||||
sphere(r=$minkowski_radius, $fn=48);
|
sphere(r=$minkowski_radius, $fn=48);
|
||||||
}
|
}
|
||||||
@ -3362,7 +3378,7 @@ module rounded_shape() {
|
|||||||
// the main difference is minkowski happens after dishing, meaning the dish is
|
// the main difference is minkowski happens after dishing, meaning the dish is
|
||||||
// also minkowski'd
|
// also minkowski'd
|
||||||
/* module rounded_shape() {
|
/* module rounded_shape() {
|
||||||
color(blue) minkowski(){
|
color($primary_color) minkowski(){
|
||||||
// half minkowski in the z direction
|
// half minkowski in the z direction
|
||||||
shape($minkowski_radius * 2, $minkowski_radius/2);
|
shape($minkowski_radius * 2, $minkowski_radius/2);
|
||||||
difference(){
|
difference(){
|
||||||
@ -3524,7 +3540,7 @@ module front_placement() {
|
|||||||
|
|
||||||
// just to DRY up the code
|
// just to DRY up the code
|
||||||
module _dish() {
|
module _dish() {
|
||||||
dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
|
color($secondary_color) dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
|
||||||
}
|
}
|
||||||
|
|
||||||
module envelope(depth_difference=0) {
|
module envelope(depth_difference=0) {
|
||||||
@ -3582,7 +3598,7 @@ module keytext(text, position, font_size, depth) {
|
|||||||
woffset = (top_total_key_width()/3.5) * position[0];
|
woffset = (top_total_key_width()/3.5) * position[0];
|
||||||
hoffset = (top_total_key_height()/3.5) * -position[1];
|
hoffset = (top_total_key_height()/3.5) * -position[1];
|
||||||
translate([woffset, hoffset, -depth]){
|
translate([woffset, hoffset, -depth]){
|
||||||
linear_extrude(height=$dish_depth){
|
color($tertiary_color) linear_extrude(height=$dish_depth){
|
||||||
text(text=text, font=$font, size=font_size, halign="center", valign="center");
|
text(text=text, font=$font, size=font_size, halign="center", valign="center");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3600,15 +3616,15 @@ module keystem_positions(positions) {
|
|||||||
|
|
||||||
module support_for(positions, stem_type) {
|
module support_for(positions, stem_type) {
|
||||||
keystem_positions(positions) {
|
keystem_positions(positions) {
|
||||||
color(yellow) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
|
color($tertiary_color) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module stems_for(positions, stem_type) {
|
module stems_for(positions, stem_type) {
|
||||||
keystem_positions(positions) {
|
keystem_positions(positions) {
|
||||||
color(yellow) stem(stem_type, $total_depth, $stem_slop);
|
color($tertiary_color) stem(stem_type, $total_depth, $stem_slop);
|
||||||
if ($stem_support_type != "disable") {
|
if ($stem_support_type != "disable") {
|
||||||
color(color2) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
|
color($quaternary_color) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3630,7 +3646,7 @@ module cherry_keyswitch() {
|
|||||||
//approximate (fully depressed) cherry key to check clearances
|
//approximate (fully depressed) cherry key to check clearances
|
||||||
module clearance_check() {
|
module clearance_check() {
|
||||||
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
|
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
|
||||||
color(transparent_red){
|
color($warning_color){
|
||||||
translate([0,0,3.6 + $stem_inset - 5]) {
|
translate([0,0,3.6 + $stem_inset - 5]) {
|
||||||
cherry_keyswitch();
|
cherry_keyswitch();
|
||||||
}
|
}
|
||||||
@ -3639,7 +3655,6 @@ module clearance_check() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module legends(depth=0) {
|
module legends(depth=0) {
|
||||||
|
|
||||||
if (len($front_legends) > 0) {
|
if (len($front_legends) > 0) {
|
||||||
front_placement() {
|
front_placement() {
|
||||||
if (len($front_legends) > 0) {
|
if (len($front_legends) > 0) {
|
||||||
@ -3665,7 +3680,7 @@ module legends(depth=0) {
|
|||||||
module artisan(depth) {
|
module artisan(depth) {
|
||||||
top_of_key() {
|
top_of_key() {
|
||||||
// artisan objects / outset shape legends
|
// artisan objects / outset shape legends
|
||||||
children();
|
color($secondary_color) children();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3705,7 +3720,7 @@ module key(inset = false) {
|
|||||||
if(!$outset_legends) legends($inset_legend_depth);
|
if(!$outset_legends) legends($inset_legend_depth);
|
||||||
// subtract the clearance check if it's enabled, letting the user see the
|
// subtract the clearance check if it's enabled, letting the user see the
|
||||||
// parts of the keycap that will hit the cherry switch
|
// parts of the keycap that will hit the cherry switch
|
||||||
if ($clearance_check) clearance_check();
|
if ($clearance_check) %clearance_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
// both stem and support are optional
|
// both stem and support are optional
|
||||||
@ -3914,6 +3929,13 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
|
|||||||
// Where the stems are in relation to the center of the keycap, in units. default is one in the center
|
// Where the stems are in relation to the center of the keycap, in units. default is one in the center
|
||||||
// Shouldn't work in thingiverse customizer, though it has been...
|
// Shouldn't work in thingiverse customizer, though it has been...
|
||||||
$stem_positions = [[0,0]];
|
$stem_positions = [[0,0]];
|
||||||
|
|
||||||
|
// colors
|
||||||
|
$primary_color = [.2667,.5882,1];
|
||||||
|
$secondary_color = [.4412, .7, .3784];
|
||||||
|
$tertiary_color = [1, .6941, .2];
|
||||||
|
$quaternary_color = [.4078, .3569, .749];
|
||||||
|
$warning_color = [1,0,0, 0.15];
|
||||||
key();
|
key();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
30
src/key.scad
30
src/key.scad
@ -20,16 +20,11 @@ use <libraries/skin.scad>
|
|||||||
SMALLEST_POSSIBLE = 1/128;
|
SMALLEST_POSSIBLE = 1/128;
|
||||||
$fs = .1;
|
$fs = .1;
|
||||||
$unit = 19.05;
|
$unit = 19.05;
|
||||||
blue = [.2667,.5882,1];
|
|
||||||
color2 = [.5412, .4784, 1];
|
|
||||||
purple = [.4078, .3569, .749];
|
|
||||||
yellow = [1, .6941, .2];
|
|
||||||
transparent_red = [1,0,0, 0.15];
|
|
||||||
|
|
||||||
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
|
// key shape including dish. used as the ouside and inside shape in keytop(). allows for itself to be shrunk in depth and width / height
|
||||||
module shape(thickness_difference, depth_difference=0){
|
module shape(thickness_difference, depth_difference=0){
|
||||||
dished(depth_difference, $inverted_dish) {
|
dished(depth_difference, $inverted_dish) {
|
||||||
color(blue) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
|
color($primary_color) shape_hull(thickness_difference, depth_difference, $inverted_dish ? 2 : 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,9 +33,9 @@ module shape(thickness_difference, depth_difference=0){
|
|||||||
// the dish doesn't _quite_ reach as far as it should
|
// the dish doesn't _quite_ reach as far as it should
|
||||||
module rounded_shape() {
|
module rounded_shape() {
|
||||||
dished(-$minkowski_radius, $inverted_dish) {
|
dished(-$minkowski_radius, $inverted_dish) {
|
||||||
color(blue) minkowski(){
|
color($primary_color) minkowski(){
|
||||||
// half minkowski in the z direction
|
// half minkowski in the z direction
|
||||||
color(blue) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
|
color($primary_color) shape_hull($minkowski_radius * 2, $minkowski_radius/2, $inverted_dish ? 2 : 0);
|
||||||
/* cube($minkowski_radius); */
|
/* cube($minkowski_radius); */
|
||||||
sphere(r=$minkowski_radius, $fn=48);
|
sphere(r=$minkowski_radius, $fn=48);
|
||||||
}
|
}
|
||||||
@ -52,7 +47,7 @@ module rounded_shape() {
|
|||||||
// the main difference is minkowski happens after dishing, meaning the dish is
|
// the main difference is minkowski happens after dishing, meaning the dish is
|
||||||
// also minkowski'd
|
// also minkowski'd
|
||||||
/* module rounded_shape() {
|
/* module rounded_shape() {
|
||||||
color(blue) minkowski(){
|
color($primary_color) minkowski(){
|
||||||
// half minkowski in the z direction
|
// half minkowski in the z direction
|
||||||
shape($minkowski_radius * 2, $minkowski_radius/2);
|
shape($minkowski_radius * 2, $minkowski_radius/2);
|
||||||
difference(){
|
difference(){
|
||||||
@ -214,7 +209,7 @@ module front_placement() {
|
|||||||
|
|
||||||
// just to DRY up the code
|
// just to DRY up the code
|
||||||
module _dish() {
|
module _dish() {
|
||||||
dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
|
color($secondary_color) dish(top_total_key_width() + $dish_overdraw_width, top_total_key_height() + $dish_overdraw_height, $dish_depth, $inverted_dish);
|
||||||
}
|
}
|
||||||
|
|
||||||
module envelope(depth_difference=0) {
|
module envelope(depth_difference=0) {
|
||||||
@ -272,7 +267,7 @@ module keytext(text, position, font_size, depth) {
|
|||||||
woffset = (top_total_key_width()/3.5) * position[0];
|
woffset = (top_total_key_width()/3.5) * position[0];
|
||||||
hoffset = (top_total_key_height()/3.5) * -position[1];
|
hoffset = (top_total_key_height()/3.5) * -position[1];
|
||||||
translate([woffset, hoffset, -depth]){
|
translate([woffset, hoffset, -depth]){
|
||||||
linear_extrude(height=$dish_depth){
|
color($tertiary_color) linear_extrude(height=$dish_depth){
|
||||||
text(text=text, font=$font, size=font_size, halign="center", valign="center");
|
text(text=text, font=$font, size=font_size, halign="center", valign="center");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -290,15 +285,15 @@ module keystem_positions(positions) {
|
|||||||
|
|
||||||
module support_for(positions, stem_type) {
|
module support_for(positions, stem_type) {
|
||||||
keystem_positions(positions) {
|
keystem_positions(positions) {
|
||||||
color(yellow) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
|
color($tertiary_color) supports($support_type, stem_type, $stem_throw, $total_depth - $stem_throw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module stems_for(positions, stem_type) {
|
module stems_for(positions, stem_type) {
|
||||||
keystem_positions(positions) {
|
keystem_positions(positions) {
|
||||||
color(yellow) stem(stem_type, $total_depth, $stem_slop);
|
color($tertiary_color) stem(stem_type, $total_depth, $stem_slop);
|
||||||
if ($stem_support_type != "disable") {
|
if ($stem_support_type != "disable") {
|
||||||
color(color2) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
|
color($quaternary_color) stem_support($stem_support_type, stem_type, $stem_support_height, $stem_slop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -320,7 +315,7 @@ module cherry_keyswitch() {
|
|||||||
//approximate (fully depressed) cherry key to check clearances
|
//approximate (fully depressed) cherry key to check clearances
|
||||||
module clearance_check() {
|
module clearance_check() {
|
||||||
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
|
if($stem_type == "cherry" || $stem_type == "cherry_rounded"){
|
||||||
color(transparent_red){
|
color($warning_color){
|
||||||
translate([0,0,3.6 + $stem_inset - 5]) {
|
translate([0,0,3.6 + $stem_inset - 5]) {
|
||||||
cherry_keyswitch();
|
cherry_keyswitch();
|
||||||
}
|
}
|
||||||
@ -329,7 +324,6 @@ module clearance_check() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module legends(depth=0) {
|
module legends(depth=0) {
|
||||||
|
|
||||||
if (len($front_legends) > 0) {
|
if (len($front_legends) > 0) {
|
||||||
front_placement() {
|
front_placement() {
|
||||||
if (len($front_legends) > 0) {
|
if (len($front_legends) > 0) {
|
||||||
@ -355,7 +349,7 @@ module legends(depth=0) {
|
|||||||
module artisan(depth) {
|
module artisan(depth) {
|
||||||
top_of_key() {
|
top_of_key() {
|
||||||
// artisan objects / outset shape legends
|
// artisan objects / outset shape legends
|
||||||
children();
|
color($secondary_color) children();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -395,7 +389,7 @@ module key(inset = false) {
|
|||||||
if(!$outset_legends) legends($inset_legend_depth);
|
if(!$outset_legends) legends($inset_legend_depth);
|
||||||
// subtract the clearance check if it's enabled, letting the user see the
|
// subtract the clearance check if it's enabled, letting the user see the
|
||||||
// parts of the keycap that will hit the cherry switch
|
// parts of the keycap that will hit the cherry switch
|
||||||
if ($clearance_check) clearance_check();
|
if ($clearance_check) %clearance_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
// both stem and support are optional
|
// both stem and support are optional
|
||||||
|
@ -145,10 +145,13 @@ module bump(depth=undef) {
|
|||||||
|
|
||||||
// kinda dirty, but it works
|
// kinda dirty, but it works
|
||||||
// might not work great with fully sculpted profiles yet
|
// might not work great with fully sculpted profiles yet
|
||||||
|
// NOTE: this needs to come after row declarations or it won't work
|
||||||
module upside_down() {
|
module upside_down() {
|
||||||
if ($stem_inner_slop != 0) {
|
if ($stem_inner_slop != 0) {
|
||||||
echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
|
echo("it is recommended you set inner stem slop to 0 when you use upside_down()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$stem_support_type = "disable";
|
||||||
// $top_tilt*2 because top_placement rotates by top_tilt for us
|
// $top_tilt*2 because top_placement rotates by top_tilt for us
|
||||||
// first rotate 180 to get the keycaps to face the same direction
|
// first rotate 180 to get the keycaps to face the same direction
|
||||||
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
|
rotate([0,0,180]) top_placement() rotate([180+$top_tilt*2,0,0]) {
|
||||||
@ -163,3 +166,14 @@ module sideways() {
|
|||||||
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
|
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
|
||||||
rotate([0,90 + extra_y_rotation ,0]) children();
|
rotate([0,90 + extra_y_rotation ,0]) children();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// emulating the % modifier.
|
||||||
|
// since we use custom colors, just using the % modifier doesn't work
|
||||||
|
module debug() {
|
||||||
|
$primary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$secondary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$tertiary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
$quaternary_color = [0.5,0.5,0.5,0.2];
|
||||||
|
|
||||||
|
%children();
|
||||||
|
}
|
||||||
|
@ -176,3 +176,10 @@ $stabilizers = $key_length >= 6 ? [[-50, 0], [50, 0]] : $key_length >= 2 ? [[-12
|
|||||||
// Where the stems are in relation to the center of the keycap, in units. default is one in the center
|
// Where the stems are in relation to the center of the keycap, in units. default is one in the center
|
||||||
// Shouldn't work in thingiverse customizer, though it has been...
|
// Shouldn't work in thingiverse customizer, though it has been...
|
||||||
$stem_positions = [[0,0]];
|
$stem_positions = [[0,0]];
|
||||||
|
|
||||||
|
// colors
|
||||||
|
$primary_color = [.2667,.5882,1];
|
||||||
|
$secondary_color = [.4412, .7, .3784];
|
||||||
|
$tertiary_color = [1, .6941, .2];
|
||||||
|
$quaternary_color = [.4078, .3569, .749];
|
||||||
|
$warning_color = [1,0,0, 0.15];
|
||||||
|
Loading…
Reference in New Issue
Block a user