Repository: https://github.com/trailcode/EzyCad
EzyCad (Easy CAD) is an open-source CAD application for hobbyist machinists to design and edit 2D and 3D models for machining projects. It supports creating precise parts with tools for sketching, extruding, and applying geometric operations, using OpenGL, Dear ImGui, and Open CASCADE Technology (OCCT). Export models to formats like STEP or STL for CNC machines or 3D printers, or run EzyCad in your browser (WebAssembly). Project home: trailcode.github.io/EzyCad.
Not EZCAD laser software: EzyCad (with a y) is hobbyist mechanical CAD built on OCCT — unrelated to EZCAD2/EZCAD3 laser marking products.
Prebuilt Windows binaries (portable .zip containing EzyCad.exe + all required DLLs and assets) are published on the GitHub Releases page.
- Go to Releases → expand "Assets" under the latest version.
- Download
EzyCad-vX.Y.Z-windows-x64.zip(or the equivalent name), unzip, and runEzyCad.exe. - No installer is required; the zip is self-contained.
WebAssembly (browser) version: Run EzyCad directly in your browser (no download needed).
For source builds or other platforms, see the Building Instructions below.
- 2D and 3D modeling capabilities.
- Integration with Open CASCADE for geometric operations.
- Cross-platform support with Emscripten for WebAssembly builds.
- Interactive GUI built with ImGui.
Online: ezycad.readthedocs.io (built from this repo on Read the Docs).
Source: usage.md and related guides in docs/ (usage-sketch.md, usage-settings.md, usage-occt-view.md, etc.). They cover the user interface, modeling tools, keyboard shortcuts, and view controls.
Release history is in CHANGELOG.md (repository root). The user guides now live in the docs/ folder (together with building-occt.md, style guides, etc.). With the CMake Visual Studio generator, documentation files appear under a docs folder (and the two root docs at project root) on the EzyCad / EzyCad_lib targets in Solution Explorer.
Ensure the following dependencies are installed:
- CMake (minimum version 3.14.0)
- Nuget command line utility
- A C++ 20 compatible compiler (e.g., MSVC, GCC, or Clang)
- OpenGL development libraries
- Open CASCADE Technology (OCCT 8.0.0) https://github.com/Open-Cascade-SAS/OCCT
Full guide: docs/building-occt.md (Windows prebuilts, wasm/Emscripten, troubleshooting).
- See: https://dev.opencascade.org/doc/overview/html/build_upgrade__building_occt.html
- OCCT 3rd-party binaries: https://github.com/Open-Cascade-SAS/OCCT/releases/download/V8_0_0/3rdparty-vc14-64.zip
- Currently building EzyCad has only been tested with the Release build of OCCT.
- Or download pre-built binaries: https://github.com/Open-Cascade-SAS/OCCT/releases/tag/V8_0_0
- Local desktop builds: prefer Visual Studio 2026 (
-G "Visual Studio 18 2026"). Details: agents/workflows/local-dev.md.
- Clone the repository.
- Install vcpkg and set
VCPKG_ROOT(GLFW and GLEW come from the repovcpkg.jsonmanifest; same path as CI). - Create a build directory, e.g.,
C:\src\EzyCad\build. - Configure the project in the build directory using CMake:
- After extracting the V8.0.0 combined prebuilt zip under
C:\bin(see docs/building-occt.md):cmake -S C:\src\EzyCad -B build -G "Visual Studio 18 2026" -A x64 -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake -DOpenCASCADE_DIR=C:\bin\opencascade-8.0.0-vc14-64\cmake -DOCCT_3RD_PARTY_DIR=C:\bin\3rdparty-vc14-64 OpenCASCADE_DIRmust be the folder that containsOpenCASCADEConfig.cmake(for the combined package that is...\opencascade-8.0.0-vc14-64\cmake).OCCT_3RD_PARTY_DIRshould point to the OCCT 3rd-party distribution (...\3rdparty-vc14-64).- Prefer CMake 4.3+ (PATH or VS 2026 bundled) so generator Visual Studio 18 2026 is available. After deleting
build/, re-run this configure step before building.
- After extracting the V8.0.0 combined prebuilt zip under
- Build the project (
cmake --build build --config Release).
- Desktop MSVC builds require the vcpkg toolchain (
CMAKE_TOOLCHAIN_FILE=.../vcpkg.cmake). NuGet is not used. - Use Visual Studio 2026 as the IDE for debugging and building (generator
Visual Studio 18 2026). Do not configure withVisual Studio 17 2022on a machine that only has VS 2026. - If configure fails after wiping
build/, confirm both OCCT paths exist on disk, thatVCPKG_ROOTis set, and that your CMake listsVisual Studio 18 2026incmake --help.
- Install Emscripten and activate its environment (
emsdk_env). - OCCT 7.9.3 for wasm (recommended):
scripts\build-occt-793-wasm.ps1(or.cmd) afteremsdk_env— see docs/building-occt.md. OCCT 8.x has a GLES shading regression on wasm (see docs/bugs.md). - OCCT 8.0.0.p1 for wasm:
scripts\build-occt-v8-wasm.ps1for regression testing against upstream. - Configure the EzyCad project with Emscripten (Ninja recommended):
emcmake cmake -S . -B build-em-7-9-3 -Wno-dev -G Ninja "-DOpenCASCADE_DIR=%USERPROFILE%/occt-wasm-build/V7_9_3/install/lib/cmake/opencascade" -DCMAKE_BUILD_TYPE=Release- Replace
%USERPROFILE%with your home if the shell does not expand it (path must containOpenCASCADEConfig.cmake). Add -Wno-dev to suppress remaining CMake developer warnings. - If configure freezes after that warning, the hang is often in
find_package(OpenCASCADE)or Emscripten compiler detection. Run with--debug-outputto see where it stops. - Build:
ninja -C build-em-7-9-3(oremmake cmake --build . --config Release)
- Build the project.
- Serve the WebAssembly:
python.exe -m http.server 8000from the build output directory (look forEzyCad.html+EzyCad.wasm+EzyCad.data). - Or build and serve:
ninja && python.exe -m http.server 8000 - GitHub Pages HTML: After changing
web/index.htmlorweb/EzyCad.html, sync to trailcode.github.io withscripts/sync-github-pages-html.ps1(see script header). - Dear ImGui under
third_party/imgui/carries EzyCad-specific changes (font rendering); see In-tree third-party libraries at the end of this README.
- Icons from: https://wiki.freecad.org/Artwork
- Project home: trailcode.github.io/EzyCad
- Report issues or suggest features on the GitHub repository.
- Contribute by developing features and fixing bugs. Pull requests are welcome!
- Additional resources, including video tutorials and online documentation, are linked in usage.md.
- Outreach draft posts (forums, Reddit, awesome lists): agents/outreach/discoverability.md.
EzyCad is maintained by a small team and we would love more contributors. If you can help with features, bug fixes, documentation, or testing - please jump in. Every contribution helps move the project forward.
Style guides: ezycad_code_style.md for C++ in src/; ezycad_doc_style.md for user guides and Read the Docs. Both human developers and AI coding agents should follow the relevant guide.
Developer module docs: Maintainer notes for major src/ modules live under src/doc/ (sketch, shape, GUI, script, utilities). These are for contributors working in the codebase, not end-user guides.
AI / agent instructions: Short repo-local notes for coding assistants live under agents/. Root-level discovery markers are AGENTS.md and agents.md. See agents/README.md for the index (start with agents/workflows/local-dev.md).
Open CASCADE (OCCT) is not vendored here. You build or install OCCT (and its binary redistributables) outside this tree and pass OpenCASCADE_DIR / OCCT_3RD_PARTY_DIR into CMake, as in Building Instructions above.
The third_party/ folder holds other libraries shipped inside the EzyCad repository (typically committed as a vendored snapshot, not fetched by CMake except where noted):
| Component | Location | Role |
|---|---|---|
| Dear ImGui | third_party/imgui/ |
Immediate-mode UI used by the application. This tree includes project-specific changes for font rendering; see imgui#7519 (comment). |
| nlohmann/json | third_party/json/ (headers under include/) |
JSON used by the project; CMake adds third_party/json/include. |
| tinyfiledialogs | third_party/tinyfiledialogs/ |
Small C helper for native file dialogs on desktop. |
| ImGuiColorTextEdit | third_party/ImGuiColorTextEdit/ |
Syntax-highlighted editor widget for the Lua and Python script consoles (upstream). |
ImGuiColorTextEdit: Prefer a full checkout under third_party/ImGuiColorTextEdit/ (see third_party/README.md). If that folder is missing, CMake FetchContent downloads upstream at a fixed commit (ca2f9f1462e3b60e56351bc466acda448c5ea50d) because the upstream repo has no release tags. To upgrade the editor, bump that SHA in CMakeLists.txt and refresh any vendored copy.
Windows note: GLFW and GLEW for MSVC come from vcpkg (vcpkg.json + -DCMAKE_TOOLCHAIN_FILE=.../vcpkg.cmake). They are not under third_party/.
