C++ Interface for communicating with Cricut x-y plotters. Originally developed by vangdfang on github.
- C++ 66.3%
- CMake 15.9%
- G-code 15.1%
- C 2.6%
- SWIG 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflows | ||
| cmake | ||
| deps | ||
| include | ||
| old_code | ||
| src | ||
| .clang-format | ||
| .clang-tidy | ||
| .gitignore | ||
| .gitmodules | ||
| CMakeLists.txt | ||
| compile_commands.json | ||
| README.md | ||
Cutters
This list is incomplete. If you have more information, please file a pull request to update this table or otherwise let us know:
| Cutter | Version | Status |
|---|---|---|
| Cricut Cake | v2.35 | should work |
| Cricut Cake Mini | v1.54 | should work |
| Cricut Create | v1.51 | should work |
| Cricut Create | v1.54 | should work |
| Cricut Expression | v2.00 | too old |
| Cricut Expression | v2.31 | works |
| Cricut Expression | v2.34 | should work |
| Cricut Expression | v2.43 | should work |
| Cricut Personal | v1.00 | too old |
| Cricut Personal | v1.31 | works |
| Cricut Personal | v1.34 | works |
Developer Notes
Build Dependencies
Currently the list of dependencies are as follows:
spdlog(logging library)- minimum required version: 1.15.2
apt-based (Ubuntu, Debian, etc) package name:libspdlog-dev
thorvg(SVG parsing library)- minimum required version: 1.0.0
thorvgis not distributed in debian repositories; however it can be installed from the submodule using the following commands:
meson setup build --buildtype=release -Ddefault_library=static
meson compile -C build
meson install -C build
Boost(used for asynchronous serial I/O, command line argument parsing, and error handling)- Minimum required boost version: 1.83.0
apt-based (Ubuntu, Debian, etc) package names:libboost-program-options-dev libboost-system-dev libasio-dev
For each library, there are 3 possible inclusion methods, depending on preference and your environment. Listed flags are in ordered priority (The lower numbered flags are used first, and the rest are ignored).
- Submodule inclusion: Clone the repo with
--recurse-submodules, and use the flag-D ${LIBRARY}_SUBMODULE=ONto enable. - System-installed: You already have the libraries installed on the system, and the installed versions are compatible with the codebase (check required versions).
Use the flag
-D ${LIBRARY}_SYSTEM=ON. For reasons unknown to me, thorvg cannot be imported from the system at time of writing. - Fetch: You don't want to deal with dependencies, let CMake do the work.
Use the flag
-D ${LIBRARY}_FETCH=ON. Note that the initial configure step will take more time, as CMake will be fetching a zip file, unzipping it, and potentially building it.
Example: Use the spdlog submodule, get ThorVG from the system, and fetch Boost.
cmake -B build -D SPDLOG_SUBMODULE=ON -D SPDLOG_FETCH=ON -D BOOST_SYSTEM=ON -D THORVG_FETCH=ON
Note that SPDLOG_FETCH is enabled, but it is ignored since submodule is enabled and is higher priority.
Internal
TODOs
- Finish main
- parse args
- do the work
- Fill in developer/readme information.
- Fill in build process
- fill in usage (CI to build targets? 🤔)
- Use CI as starting point
- rename project to express intent
- research Type Erasure as alternative for inheritance?
- See CppCon2026 talk on type erasure