This is a collection of scripts to generate plate and case designed that can be fabricated with small desktop CNC machines such as the CNC1610 series (and other machines with similarly small volume, 160mm x 100mm).
https://github.com/xunker/small_cnc_keyboard_builder
The key difference is that this builder allows for non-rectangular plates, so that you can machine your keyboard in multiple smaller pieces that can be joined together later or be used in as a split keyboard.
This is important because without it you need a CNC machine with at least 280mm of volume in a single direction to make a 60% keyboard plate. Using this builder you can make full-sized plates using much smaller equipment.
Requires OpenJSCAD CLI module:
npm install
TDB
Currently only costar-style stabilizers are supported. More will come later.
Suggested installation:
Stabilizer cutouts extend below the switch, toward the bottom edge of the board (closes to to the user). The wire-side of the stabilizers should be on that edge too.
The keycap-pins should be installed with the "long side" pointed at the top edge of the keyboard.
- allow caseWall thickness X/Y to be set independently
- allow screw hole inset X/Y to be set independently
- Add tests
- Add jsdoc to function
- print out maximum width/length of plate when rendering
- Add to config file layers:
- protect certain paramters -- they can be defined in any block, but not re-defined
- switch unit dimensions
- screw hole placement (but screw hole size can)
- ..anything else that must be consistent between layers
- justify-edge options
- make a given edge flat regardless of key row offset
- protect certain paramters -- they can be defined in any block, but not re-defined
- Document:
- splitting in to sections based on colour
- what render rows does
- what truncation does and why its useful
- layers vs sections vs operations
- Objectify Key Unit/Cutout parameters to allow for more styles
- Objectify Stabilizer Kind/Cutout parameters to allow for more styles
- Render all layers at once with sequential filenames
- modularize the
build_all.sh
bash script
- modularize the
- Add note of materials used
- Add note about
cutout
andupper
- option to build custom layers based on "case" and "bottom", not just "cutout"
- Add usage notes
- Add documentation about kerf on
- CNC: bulk-cut vs finishing operations
- Laser: laser kerf
- Add example of workflow
- laser'ed
- machined
- Properly fix the section shift issue outlined in
truncateOutput
- Also fix issue of it not taking kerf + extendFootprint in to account
- add proper package.json with version, etc
- add examples
It is based on my original OpenSCAD script, but was ported to OpenJSCAD once I realized the design was getting complicated enough to need a real object model.
Release History
- 1.0.0 - November 2019
Initial