Design and fabricate your own digitally fabricated furniture
SketchChair is an open-source software tool that allows anyone to easily design and build their own digitally fabricated furniture. Sketch your design, test it with an ergonomic figure, and generate cutting patterns for CNC fabrication - all within minutes.
By: Diatom Studio Contact: hello@diatom.cc Website: sketchchair.cc
# Clean and compile
ant clean compile
# Build JAR
ant build.standard
# Your compiled application will be in: build/SketchChair-standard.jar./launch-mac.commandcd build
java -Djogamp.gluegen.UseTempJarCache=true -jar SketchChair-standard.jarDetailed JavaDoc documentation for all custom classes can be found at: /doc/index.html
Additional documentation:
- build-windows.md - Windows-specific build instructions
- release-instructions.md - Creating release packages
- processing4-upgrade.md - Processing 4 migration notes
This is a high-level overview of the SketchChair engine:
SketchChair contains a vector drawing program. When you draw on a SketchPlane, drawings are managed by the cc.sketchchair.sketch package.
The build command generates all parametric parts of your design:
- The engine examines slice selections added by the user
- The
cc.sketchchair.geometrypackage calculates chair slice forms based on intersections between SketchPlanes - Additional SketchPlanes are added with slots so pieces fit together
- Multiple slice styles are supported: flat finger-jointed surfaces, waffle forms, etc.
- Drawings from multiple SketchPlanes combine to create cutting outlines with joining details
- Outlines generate 3D meshes fed to the jBullet physics engine
- Simulation calculates chair position and ergonomic figure interaction
- SketchPlanes are matched to the physically simulated model and rendered
When producing a design:
- SketchOutlines are generated and passed to the ShapePacking package
- Pieces are automatically packed on sheets of specified size
- Export through ToolPathWriter package in various formats (DXF, G-code, PDF, etc.)
- Designs save using SketchChair's custom DOM format
- Each element recursively saves via
toXML()methods - CloudHook package handles uploading to sketchchair.cc
- Server compares designs to create/update database entries
SketchChair is organized into modular packages that can be used independently:
Core SketchChair application code. Ties together geometry, shape packing, and figure libraries.
Geometry classes for storing design structure and calculating cross slices and slots.
Drawing functions and classes. Can function as a standalone vector drawing program.
Miscellaneous static utility functions.
Ergonomic figure for testing chair designs.
2D textures for reference backgrounds on drawing planes.
GUI assets and components.
Delaunay triangulation library for generating 3D meshes from design outlines.
GUI widgets: layer selector, slice settings, etc.
Server communication for uploading chairs and user authentication. Server component written in PHP.
Custom GUI library with standard components written for SketchChair.
2D cutting outline packing onto material sheets.
Converts 2D sketch outlines to output formats: G-code, DXF, PDF, etc.
Java with the Processing framework
This provides:
- Cross-platform compatibility (Windows, macOS, Linux)
- Potential for web deployment via ProcessingJS/p5.js
- Homepage: http://processing.org/
- License: LGPL
- Note: SketchChair uses a patched
core.jarwith custom application icons to fix the macOS Dock icon issue with JOGL's NEWT windowing system (see Processing Issue #5123). The original is backed up ascore.jar.BACKUPinlibProcessing4/.
- Homepage: http://jogamp.org/
- Purpose: OpenGL bindings for Java
- Version: 2.6.0 (latest stable, compatible with macOS 15.3+ and Apple Silicon)
- Homepage: http://jbullet.advel.cz/
- License: ZLIB
- Purpose: Physics simulation
- Homepage: http://toxiclibs.org/
- License: LGPLv2
- Purpose: Geometry utilities
- Homepage: http://svgsalamander.java.net/
- License: LGPL
- Purpose: SVG import/export
- Homepage: http://www.xom.nu/
- License: LGPL
- Purpose: XML processing
SketchChair was originally developed using Eclipse IDE.
Apache Ant (see build.xml)
- Current: Java 17+
- Recommended for macOS 15.3+: JDK 25 (for JOGL 2.6.0 compatibility)
Note: Legacy mode (Processing 1.x) is no longer maintained in current development branches.
Legacy compilation instructions (for reference only)
- Edit
src/SETTINGS.java- Change line 106:LEGACY_MODE = true; - Edit
build.xml:- Change line 14:
dir="libLegacy" - Change line 69:
dir="libLegacy"
- Change line 14:
- Run:
ant build
- Edit
src/SETTINGS.java- Change line 106:LEGACY_MODE = false; - Edit
build.xml:- Change line 14:
dir="libCurrent" - Change line 69:
dir="libCurrent"
- Change line 14:
- Run:
ant build
SketchChair is open-source and welcomes contributions!
- Issues & Features: GitHub Issues
- Documentation: See
/doc/index.htmlfor API docs - Questions: hello@diatom.cc
See LICENSE.txt for full license information.
- Website: sketchchair.cc
- Studio: diatom.cc
- Processing: processing.org
Made with ❤️ by Diatom Studio

