OPK is a spherical top keycap profile developed in CadQuery and released under the very permissive Apache License 2.0.
It's especially suited for creating high/medium profile spherical top keycaps.
The profile is still highly experimental and very alpha stage.
I'm new to CadQuery (CQ), Ptyhon and code based CAD in general. There's a lot of guesswork and fumbling around to get to this point, any help is very much appreciated.
If you are new to CQ, the easiest is to download a CQ-Editor pre-built package (I use the latest development release), load the opk.py
file and hit Render!
The main keycap
function has sane defaults and parameters are sufficiently commented.
The export directory includes a few examples in both STL and STEP format.
Some examples:
Create the default 1u keycap
cap = keycap()
show_object(cap)
Create a 1.5U keycap
cap = keycap(unitX=1.5)
show_object(cap)
Create a flat top (not angled) 2U keycap
cap = keycap(unitX=2, angle=0)
show_object(cap)
Create a 4U spacebar
cap = keycap(unitX=4, angle=1, convex=True)
show_object(cap)
A 2.25U Return key in system-default-serif font
cap = keycap(unitX=2.25, legend="Return", font="serif", fontsize=8)
show_object(cap)
CQ can export in many formats including STEP and STL. The easiest way to export an STL in CQ-Editor is by selecting the model in the 3D view and then clicking on Tools > Export as STL.
Of course it can be done programmatically and that can make exporting an entire keyboard very easy. The following code exports an STL and a STEP file.
cap = keycap()
show_object(cap)
exporters.export(cap, 'keycap.stl', tolerance=0.001, angularTolerance=0.05)
exporters.export(cap, 'keycap.step')
Default angle is 7deg that should be a good starting point for Row 3.
For spacebars a small angle (0-4deg) is recommended.
Not all fonts will be centered correctly, choose carefully. I'll add some way to better center the legends.
The code includes an example to use a DXF drawing as legend (check the comments at the end of the keycap function).
- add support for vertical key
- add stepped key
- add ISO Enter
- add 2U pos-like stabilizers
- add support for logos and graphical legends
- add reinforcement for big keys
- automatic export script of all needed keycap for a full keyboard
- output files already supported for 3D printing
- online editor
- add secondary/tertiary legends
- add support for stems other than cherry
- clean up the code