diff options
-rw-r--r-- | README.md | 40 |
1 files changed, 26 insertions, 14 deletions
@@ -1,9 +1,13 @@ -# The Dactyl-ManuForm Keyboard - Python 3 +# The Dactyl-ManuForm Keyboard - Python 3 - Cadquery This is a fork of [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) by Tom Short, which itself is a fork of [Dactyl](https://github.com/adereth/dactyl-keyboard) by Matthew Adereth, a parameterized, split-hand, concave, columnar, ergonomic keyboard. -The major change is switching to a python based file generator. Both predecessors were exceptional contributions to the ergo keyboard community by the authors but used a rather esoteric programming language, Clojure. My hope is that by converting the code to Python, the community will have an easier time modifying and evolving this design. I am planning to build this keyboard in the next several weeks and will update with my build information and BOM. +While the code structure remains comparable to the original, Clojure and OpenSCAD have been replaced by Python and cadquery/OpenCASCADE. The predecessors were exceptional contributions to the ergo keyboard community by the authors but used a rather esoteric programming language, Clojure, and a relatively inconsistent geometry engine, OpenSCAD. My hope is that by converting the code the community will have an easier time modifying and evolving this design. -I am also planning to create an entirely new object-oriented generator and will add a link when it is complete. In the mean time wanted to add my contribution of a faithful translation of the existing code and general structure into Python. The only geometry addition was an option to add the kalih hot-swap mounting through an STL file. +## Updated Geometry Engine, now generating STEP files !!! +As part of the effort to create a new engine I converted the code to cadquery/OpenCASCADE. While OpenSCAD has provided an open source 3D engine that is extremely popular, it frankly creates barely passable STLs when you have complex geometry. After being extremely frustrated trying to fix the mesh I realized it is just not a stable engine to create high quality files. OpenCASCADE is extremely powerful but requires extensive detail to operate. cadquery provided an excellent platform to run a stable geometry engine with a simplified interface API. + +## Status / Future +FWIW, the cadquery version is essentially a double translation and is now a bit of a mess. I wanted to share with the community as the first version of dactyl-manuform that exports as a STEP file, allowing easier editing. I am happy to maintain the code, but I am unlikely to spend much more time cleaning it up as I am working on an entirely new object-oriented generator in Python/cadquery. This was my proof of concept for eliminating OpenSCAD from the workflow and I thought it worth giving back to the community. **The majority of the the rest of the below content is as defined by previous authors, except where noted.** @@ -33,11 +37,27 @@ I built a 4x5 version (40% size) for myself. The default has a bit more tenting **Setting up the Python environment - NEW** * [Install Python 3.X](https://www.python.org/downloads/release/python-385/) or use your [favorite distro / platform (Anaconda)](https://www.anaconda.com/products/individual) * It is advisable, but not necessary, to setup a virtual environment to prevent package/library incompatibility -* [Install SolidPython](https://pypi.org/project/solidpython/), easiest method is `pip install solidpython` or `pip3 install solidpython` on linux. * [Install Numpy](https://pypi.org/project/numpy/), easiest method is `pip install numpy` or `pip3 install numpy` on linux. + +**cadquery install** +* [Install cadquery](https://github.com/CadQuery/cadquery), many options (see link), but easiest method is `conda install -c conda-forge -c cadquery cadquery=2`. Props to the creators/maintainers, this has the power of Open CASCADE with nearing the simplicity of OpenSCAD. + +**OpenSCAD install** +* [Install SolidPython](https://pypi.org/project/solidpython/), easiest method is `pip install solidpython` or `pip3 install solidpython` on linux. * [Install OpenSCAD](http://www.openscad.org/) -**Generating the design - NEW** +**Generating the cadquery design - NEW** +* Run `python dactyl_manuform_cadquery.py` or `python3 dactyl_manuform_cadquery.py` +* This will regenerate the `things/*.step` files + * `left_og_py.step` + * `right_og_py.step` + * `plate_og_py.step` +* Use FreeCAD or other program to open a `.step` file. +* Export functions can be modified to export stl directly if desired. + When done, use FreeCAD or other CAD program to modify, edit, or export to STL. + + +**Generating the OpenSCAD design - NEW** * Run `python dactyl_manuform.py` or `python3 dactyl_manuform.py` * This will regenerate the `things/*.scad` files * `left_py.scad` @@ -55,21 +75,13 @@ This can be exported to a DXF file in OpenSCAD. The [things/](things/) directory also has DXF files for the bottom plate. When laser cut, some of the inside cuts will need to be removed. -This model can be tricky to print. -It's wide, so I've had problems with PLA on a Makerbot with edges warping. -This can cause the printer to think its head is jammed. -Even if it successfully prints, warping can cause problems. -On one print, the RJ-9 holder was squished, so I had to cut down my connector to fit. - -If printed at Shapeways or other professional shops, I would not expect such problems. - ### Thingiverse [The 4x5 STL left/right pair](https://www.thingiverse.com/thing:2349390) from the [things/](things/) directory is in the thingiverse for public printing ### Wiring -Here are materials I (tshort) used for wiring. +Here are materials tshort used for wiring. * Two Arduino Pro Micros * [Heat-set inserts](https://www.mcmaster.com/#94180a331/=16yfrx1) |