15 Commits

Author SHA1 Message Date
Bob
2429384b51 resin settings, some tines support tweaks 2022-02-21 16:02:37 -05:00
Bob
1a10d1e5bc Merge pull request #124 from Michal-Szczepaniak/patch-1
Fix preonic_default example
2022-02-21 13:30:18 -05:00
Bob
41381ed376 Merge pull request #148 from rsheldiii/v2/propogate-stem-inner-slop
Correctly support $stem_inner_slop
2022-02-21 13:29:28 -05:00
Bob
08f17a4e1f add stem_inner_slop to all places where it is supposed to be 2022-02-21 13:28:36 -05:00
Bob
4766e3eca6 Merge pull request #117 from AberDerBart/master
Fix rounded_cherry stem to properly use $stem_inner_slop
2022-02-21 13:24:19 -05:00
Bob
19cdb2d9ae Merge pull request #145 from rsheldiii/dependabot/npm_and_yarn/copy-props-2.0.5
Bump copy-props from 2.0.4 to 2.0.5
2022-02-21 13:16:38 -05:00
Bob
75cfa2a856 Merge pull request #147 from rsheldiii/v2/offset-stem-support
V2: Make tine support work for offset stems, remove $extra_long_stem_support
2022-02-21 13:12:24 -05:00
Bob
4ba88df064 Merge pull request #49 from Xuis/InstructionsModification
Added clear instructions for line you should modify
2022-02-21 12:44:24 -05:00
Bob
315bc83039 Merge branch 'master' into InstructionsModification 2022-02-21 12:44:00 -05:00
dependabot[bot]
077de5ac87 Bump copy-props from 2.0.4 to 2.0.5
Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/copy-props/compare/2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-21 17:27:07 +00:00
Michał Szczepaniak
38bfbfa61c Fix preonic_default example 2022-01-11 20:43:41 +01:00
Jonas Grosse-Holz
7ee9e61412 Fix rounded_cherry stem to properly use $stem_inner_slop 2021-09-27 20:45:47 +02:00
Will Harris
c81889b298 removed more extraneous space for formatting 2020-06-12 16:18:06 -06:00
Will Harris
0a246489ec removed extra space 2020-06-12 16:14:55 -06:00
Will Harris
654874fb5f Added clear instructions to which line you should modify to generate a key
Addition to the README and a slight change in formatting to accommodate
the extra information
2020-06-12 16:07:31 -06:00
10 changed files with 69 additions and 37 deletions

View File

@@ -25,7 +25,19 @@ If you are technically inclined at all, this is definitely the best way to run t
First, you'll need OpenSCAD: http://www.openscad.org/downloads.html. I highly recommend installing the development snapshot, as they generally support more features and are relatively stable. Development snapshots are listed in their own section on the downloads page.
After you have openSCAD installed, you need to download the code and run it. running `git clone https://github.com/rsheldiii/KeyV2.git` if you have git, or downloading [this zip](https://github.com/rsheldiii/KeyV2/archive/master.zip) and extracting the directory should do it. Then all you need to do is open `keys.scad` with openSCAD and you are set! It is possible to edit this project with an external editor by checking off Design => 'Automatic Reload and Preview' in OpenSCAD.
After you have openSCAD installed, you need to download the code and run it. running `git clone https://github.com/rsheldiii/openSCAD-projects.git` if you have git, or downloading [this zip](https://github.com/rsheldiii/openSCAD-projects/archive/master.zip) and extracting the directory should do it.
To make your own key, all you need to do is open `keys.scad` with openSCAD and modify this line:
```
dcs_row(5) legend("⇪", size=9) key();
```
To be whatever you want. For example, this is for a ctrl key on an OEM keyboard:
```u(1.25) oem_row(3) legend("ctrl", size=4.5) key();```
It is possible to edit this project with an external editor by checking off Design => 'Automatic Reload and Preview' in OpenSCAD.
All examples below assume you are running the library on your computer with OpenSCAD.

View File

@@ -1130,7 +1130,7 @@ module upside_down() {
module sideways() {
$key_shape_type = "flat_sided_square";
$dish_overdraw_width = abs(extra_keytop_length_for_flat_sides());
extra_y_rotation = atan2($width_difference/2,$total_depth);
extra_y_rotation = atan2($width_difference/2,$total_depth); // TODO assumes centered top
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
rotate([0,90 + extra_y_rotation ,0]) children();
}
@@ -1158,7 +1158,14 @@ module auto_place() {
translate_u(x,-y) children(child_index);
}
}
module arrows(profile, rows = [4,4,4,3]) {
// suggested settings for resin prints
module resin() {
$stem_slop = 0;
$stem_inner_slop = 0;
$stem_support_type = "disable";
children();
}module arrows(profile, rows = [4,4,4,3]) {
positions = [[0, 0], [1, 0], [2, 0], [1, 1]];
legends = ["←", "↓", "→", "↑"];
@@ -3308,7 +3315,7 @@ function unit_length(length) = $unit * (length - 1) + 18.16;
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross
@@ -3494,7 +3501,7 @@ function unit_length(length) = $unit * (length - 1) + 18.16;
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross
@@ -3534,7 +3541,7 @@ module rounded_cherry_stem(depth, slop, throw) {
// inside cross
// translation purely for aesthetic purposes, to get rid of that awful lattice
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
}
// a safe theoretical distance between two vertices such that they don't collapse. hard to use
@@ -3690,7 +3697,7 @@ function unit_length(length) = $unit * (length - 1) + 18.16;
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross
@@ -3734,7 +3741,7 @@ module box_cherry_stem(depth, slop, throw) {
}
// inside cross
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
}
module alps_stem(depth, slop, throw){
@@ -4049,7 +4056,7 @@ function unit_length(length) = $unit * (length - 1) + 18.16;
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross
@@ -4098,12 +4105,12 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "rounded_cherry") {
difference() {
cylinder(d=$rounded_cherry_stem_d * 2, h=stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "box_cherry") {
difference() {
@@ -4113,7 +4120,7 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "cherry_stabilizer") {
difference() {
@@ -4123,7 +4130,7 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if(stem_type == "choc") {
translate([-5.7/2,0,0]) linear_extrude(height=stem_support_height) {
@@ -4292,7 +4299,7 @@ function unit_length(length) = $unit * (length - 1) + 18.16;
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross
@@ -4361,7 +4368,7 @@ module tines_support(stem_type, stem_support_height, slop) {
}
// 2 vertical tines holding either side of the cruciform
for (x = [1.15, -1.15]) {
for (x = [2, -2]) {
translate([x,0,$stem_support_height / 2]) {
cube([
0.5,
@@ -4372,7 +4379,7 @@ module tines_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "cherry_stabilizer") {
difference () {
@@ -4392,13 +4399,13 @@ module tines_support(stem_type, stem_support_height, slop) {
difference () {
centered_tines(stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "rounded_cherry") {
difference () {
centered_tines(stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "alps"){
centered_tines(stem_support_height);

View File

@@ -17,4 +17,4 @@ dcs_row(5) legend("⇪", size=9) key();
} */
// example layout
/* preonic_default("dcs"); */
/* preonic_default("dcs") key(); */

View File

@@ -195,7 +195,7 @@ module upside_down() {
module sideways() {
$key_shape_type = "flat_sided_square";
$dish_overdraw_width = abs(extra_keytop_length_for_flat_sides());
extra_y_rotation = atan2($width_difference/2,$total_depth);
extra_y_rotation = atan2($width_difference/2,$total_depth); // TODO assumes centered top
translate([0,0,cos(extra_y_rotation) * total_key_width()/2])
rotate([0,90 + extra_y_rotation ,0]) children();
}
@@ -223,3 +223,11 @@ module auto_place() {
translate_u(x,-y) children(child_index);
}
}
// suggested settings for resin prints
module resin() {
$stem_slop = 0;
$stem_inner_slop = 0;
$stem_support_type = "disable";
children();
}

View File

@@ -16,12 +16,12 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "rounded_cherry") {
difference() {
cylinder(d=$rounded_cherry_stem_d * 2, h=stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "box_cherry") {
difference() {
@@ -31,7 +31,7 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "cherry_stabilizer") {
difference() {
@@ -41,7 +41,7 @@ module brim_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if(stem_type == "choc") {
translate([-5.7/2,0,0]) linear_extrude(height=stem_support_height) {

View File

@@ -36,7 +36,7 @@ module tines_support(stem_type, stem_support_height, slop) {
}
// 2 vertical tines holding either side of the cruciform
for (x = [1.15, -1.15]) {
for (x = [2, -2]) {
translate([x,0,$stem_support_height / 2]) {
cube([
0.5,
@@ -47,7 +47,7 @@ module tines_support(stem_type, stem_support_height, slop) {
}
}
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "cherry_stabilizer") {
difference () {
@@ -67,13 +67,13 @@ module tines_support(stem_type, stem_support_height, slop) {
difference () {
centered_tines(stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "rounded_cherry") {
difference () {
centered_tines(stem_support_height);
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
} else if (stem_type == "alps"){
centered_tines(stem_support_height);

View File

@@ -11,6 +11,6 @@ module box_cherry_stem(depth, slop, throw) {
}
// inside cross
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
}

View File

@@ -2,7 +2,7 @@ include <../functions.scad>
// extra length to the vertical tine of the inside cherry cross
// splits the stem into halves - allows easier fitment
extra_vertical = 0.6;
extra_vertical = 100;
module inside_cherry_cross(slop) {
// inside cross

View File

@@ -7,6 +7,6 @@ module rounded_cherry_stem(depth, slop, throw) {
// inside cross
// translation purely for aesthetic purposes, to get rid of that awful lattice
inside_cherry_cross(slop);
inside_cherry_cross($stem_inner_slop);
}
}

View File

@@ -445,12 +445,12 @@ copy-descriptor@^0.1.0:
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
copy-props@^2.0.1:
version "2.0.4"
resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe"
integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==
version "2.0.5"
resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2"
integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==
dependencies:
each-props "^1.3.0"
is-plain-object "^2.0.1"
each-props "^1.3.2"
is-plain-object "^5.0.0"
core-util-is@~1.0.0:
version "1.0.2"
@@ -538,7 +538,7 @@ duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
each-props@^1.3.0:
each-props@^1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333"
integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==
@@ -1178,6 +1178,11 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
is-relative@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"