Tenting
Generate 3D-printable tented case rings for keyboard bottom plates.
Given an STL or STEP file of a keyboard plate, this tool extracts its 2D outline and generates a surrounding ring with configurable tilt angles for ergonomic tenting.
Features
- Extract 2D outlines from STL, OBJ, PLY, OFF, or STEP files
- Generate tented rings with adjustable lateral and forward tilt angles
- Configurable wall height, thickness, and clearance
- Internal ledge/shelf for the plate to rest on
- Automatic left/right mirroring for split keyboards
- Export to STL for 3D printing
Installation
# Clone the repository
git clone https://github.com/GreenKeebz/Tenting.git
cd Tenting
# Create and activate a virtual environment
python3 -m venv venv
source venv/bin/activate
# Install depend...
Tenting
Generate 3D-printable tented case rings for keyboard bottom plates.
Given an STL or STEP file of a keyboard plate, this tool extracts its 2D outline and generates a surrounding ring with configurable tilt angles for ergonomic tenting.
Features
- Extract 2D outlines from STL, OBJ, PLY, OFF, or STEP files
- Generate tented rings with adjustable lateral and forward tilt angles
- Configurable wall height, thickness, and clearance
- Internal ledge/shelf for the plate to rest on
- Automatic left/right mirroring for split keyboards
- Export to STL for 3D printing
Installation
# Clone the repository
git clone https://github.com/GreenKeebz/Tenting.git
cd Tenting
# Create and activate a virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
Usage
- List all options:
python generate_silakka_tenting.py --help - Generate with defaults (Silakka AliExpress outline):
python generate_silakka_tenting.py - Example with custom tilt and wall height:
python generate_silakka_tenting.py --lateral-tilt 10 --forward-tilt 2.5 --wall-height 6
- Example using the original outline and skipping save/view:
python generate_silakka_tenting.py --no-ali-version --no-save --no-show
STL files are written to results/ unless you pass --no-save. The OCP CAD Viewer preview opens unless you pass --no-show.
Pre-generated STLs
The results/ folder contains ready-to-print tenting rings for the Silakka54 (AliExpress version) with lateral tilt angles from 5° to 15° in 2.5° increments. Download and print directly if one of these angles works for you.
Other Keyboards
The helpers.py module contains generic code for generating tenting rings from any keyboard plate STL or STEP file. Support for additional keyboards will be added soon.
Visualizing with OCP CAD Viewer (VS Code)
Install the OCP CAD Viewer extension for VS Code, then:
- Open the command palette (
Ctrl+Shift+P) - Run "OCP CAD Viewer: Open Viewer"
- Run your script - the model will appear in the viewer
Configuration
| Parameter | Description | Default |
|---|---|---|
wall_height | Height of the ring walls above the plate surface | 5.0 |
wall_thickness | Thickness of the outer walls | 2.0 |
clearance | Gap between plate edge and inner wall | 0.25 |
ledge_overhang | How far the ledge extends inward from the inner wall | 2.0 |
ledge_thickness | Vertical thickness of the ledge | 1.2 |
ledge_z | Z offset of the ledge from the plate bottom | 0.0 |
lateral_tilt | Side-to-side tilt in degrees (positive = inner side raised) | 7.5 |
forward_tilt | Front-to-back tilt in degrees (positive = back raised) | 0.0 |
min_base_thickness | Minimum material thickness at the lowest point | 0.1 |
Acknowledgments
Thanks to Squalus Cephalus for creating the Silakka54 keyboard, which served as the development reference for this tool.
License
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.