Macad|3D: a desktop CAD program for hobbyist model making on OpenCASCADE
Free and OpenSource 3D Construction Tool
At a glance
- What is it?
- Macad|3D is a free and open source 3D construction program for Windows, written in C# and WPF on top of OpenCASCADE, aimed at the model making hobbyist rather than at engineering drawings. Its build story is unusual: the OpenCASCADE geometry kernel arrives as a pre-built NuGet package, and the wrapper code around it is checked into the repository.
- Who is it for?
- Adopt Macad|3D if you make physical models as a hobby and want to design them, export perspective drawings and generate source files for printing, laser cutting, milling or photo etching without a commercial CAD licence. Do not adopt it for production engineering work, since its stated workflows target the model making hobbyist rather than engineering documentation.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 48 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A CAD program aimed at the model making hobbyist
Macad|3D is described as a free and open source 3D construction program, and the interesting qualifier is the one that follows: it implements workflows specific to the model making hobbyist.
The scope it describes is design and arrange your model, export perspective drawings, and create source data for printing, laser cutting, milling or photo etching. That is a specific audience. The person making a one-off enclosure for a machine, a jig, or a decorative object needs a solid model and cut paths, and needs them without buying a seat of a professional CAD package or fighting its command line.
The homepage and download are at macad3d.net, the licence is MIT, and the repository topics name the stack: 3d, cad, csharp, dotnet, occt, opencascade and wpf. The primary language recorded for the repository is C#.
The release history shows a project on a 4.x line with steady tagging. v4.4.2193 came out on 2026-01-02, v4.3.2108 on 2025-07-17 and v4.2.2057 on 2025-05-01. The last push was on 2026-09-05 and the repository is not archived, so the branch is still being worked on even though the most recent tag is from earlier in the year.
A WPF application sitting on the OpenCASCADE geometry kernel
The implementation stack is stated plainly: Macad|3D is mainly based on .Net, C#, C++/CLI and OpenCASCADE Technology, also known as OCCT.
The role of each piece is fairly easy to infer from the combination. OpenCASCADE is the geometry kernel that does the solid modelling, and it is a C++ library, which is why C++/CLI appears at all: the C# and WPF user interface needs to call into it, and C++/CLI is the interop layer that makes that possible inside the same process. Without it you would be looking at a native wrapper DLL, a P/Invoke layer and a lot of marshalling code.
This is worth knowing before you evaluate the project, because it sets the requirements. The development requirements listed are Visual Studio 2026 Community Edition with the .Net Desktop workload, the C++ Desktop workload, the .Net 10 support component and the C++/CLI support component. Four workload components for a hobbyist CAD program is a real setup cost, and it is the direct consequence of choosing a mature C++ geometry kernel over writing one.
The upside of that choice is the kernel itself. OpenCASCADE is a well established open source geometry engine with boolean operations, fillets and meshing, and building on it is the reason a free program can offer real solid modelling rather than a mesh editor. The repository layout shows a solution, Macad3D.slnx, with a Source/ directory, a Build/ directory, Tests/, Tools/ and Data/, along with a Directory.Packages.props for central package versions and a nuget.config.
Building runs through a script console, not a command line
The build instructions are unconventional enough to explain. You start ScriptConsole.cmd and enter the commands there, rather than running a build script from a shell.
There are three of them for the standard path. The first updates dependencies from nuget servers, the second builds the whole thing, and the third optionally runs tests to verify the build:
> restore > build all > test allThe build command takes a target, and the README says to replace all with debug or release if only one of those should be built. That is a build system that knows about configurations at the console level, which is unusual next to a plain dotnet build or msbuild invocation, and it is the natural consequence of the OCCT packaging discussed below: the build has to do more than compile, because it may have to fetch a pre-built geometry kernel and wire the wrapper to it.
The test target is optional, which is how the documentation frames it, but running it is the cheapest way to know that your build is sound before you trust it with a model.
The console is not just for building. The OCCT section of the README documents further commands in the same console, which is where the packaging decisions become visible.
OpenCASCADE arrives as a package, and the wrapper is checked in
This is the most interesting engineering decision in the repository, and it is explained at length in the README.
The restore script downloads a pre-built version of OpenCASCADE Technology so that the project can be built immediately, and that package contains only the parts used in this project. The complete distribution can be cloned from the OCCT github repo if you want to use additional parts, build the library with other build options, or make code changes. The version currently in use can be found in the about dialog.
Pointing the project at your own build of OCCT is a console command:
> occt config <pathToOcct>and going back to the pre-built package is another:
> occt config packageThe wrapper generation is the part with the trade-off spelled out. Generating the OCCT wrapper code depends on several packages that have to work hand in hand, and if any of them changes it can be time-consuming to track down the error and either update the others or find a way around. For that reason, the generated wrapper code for the version in use is checked into the repository. If you have to regenerate it, the command is:
> occt generateAnd there is an explanation of why a given member might be missing from the wrapper. It may not be automatically wrappable yet, it may have caused trouble in a prior version, or it may simply not be needed yet and was excluded to save compilation and especially linking time. The fix is to check the configuration files in Tools/WrapperGenerator/Configuration, enable what you need, and regenerate.
That last point is the honest cost of the approach. A checked-in wrapper is fast to build from, but a feature that was excluded to save link time is a feature you have to enable and regenerate to get, and that regeneration is the fragile step the README warns about.
Documentation lives in a separate repository
The user guide is not in the source repository. It is hosted in its own repository, Macad3D/UserGuide, and it is available online at macad3d.net/userguide/.
The split is a reasonable one for a project of this size, because a user guide and a build system have different lifetimes and different contributors, and the guide is written for people who will never open Visual Studio. The main repository's README is aimed at developers, and it is short because the developer documentation is genuinely short: build the thing, understand the OCCT packaging, contribute.
Contributions are accepted two ways, as the README states: either through GitHub or by sending a patch file to [email protected]. The patch route is a leftover from a period when the project was distributed differently, and it is a reminder that this is a project with a long history behind it.
The repository root also has a Contributing.md, a .vsconfig file for Visual Studio component configuration, Directory.Build.props and Directory.Build.targets for build-wide properties, and a License.txt. The solution file Macad3D.slnx is in the newer XML solution format, which is a sign of how recently the build has been modernised.
Where this fits against a commercial CAD seat
The realistic comparison is with a commercial parametric CAD package, and the difference in approach is about intent rather than about price.
A commercial package is built around parametric history: you change a dimension and the model updates, with constraints, sketches and a feature tree you can navigate later. That is the right model when the model will change, when the drawing has to be manufacturing-ready, and when somebody else has to pick up the file.
Macad|3D is built around the model making hobbyist. You design and arrange the model, export perspective drawings, and get source data for a specific fabrication process. For a laser cutter or a 3D printer, what matters is the geometry in the right format, and a feature tree that changes every dimension is not what you need. The MIT licence and a free download mean the cost side of the comparison is settled before you start.
The costs on the other side are real. The build environment is heavy, with four Visual Studio workloads, and the OpenCASCADE packaging adds a layer of complexity that a self contained installer does not have. The documentation is split across two repositories. And the wrapper exclusions mean some capabilities are not one command away.
So the honest summary is that this is a capable free CAD program for people who want to make a thing once, and it is not a substitute for a parametric workflow if your models will be revised by someone else.
Editorial conclusion
Adopt Macad|3D if you make physical models as a hobby and want to design them, export perspective drawings and generate source files for printing, laser cutting, milling or photo etching without a commercial CAD licence. Do not adopt it for production engineering work, since its stated workflows target the model making hobbyist rather than engineering documentation. Before you build it, install the Visual Studio 2026 Community Edition with the .Net Desktop, C++ Desktop, .Net 10 and C++/CLI workloads, and expect the first build to be slow, because the OpenCASCADE package and the generated wrapper are both substantial.
Frequently asked questions
How do I build Macad|3D from source?
Start ScriptConsole.cmd and run `restore` to update dependencies from the nuget servers, then `build all` to build the whole thing, replacing all with debug or release to build only one configuration. The optional `test all` command runs the tests to verify the build.
What do I need to install to develop Macad|3D?
Visual Studio 2026 Community Edition with the .Net Desktop workload, the C++ Desktop workload, the .Net 10 support component and the C++/CLI support component. The project is mainly built on .Net, C#, C++/CLI and OpenCASCADE Technology.
How does Macad|3D get OpenCASCADE?
The restore script downloads a pre-built version of OpenCASCADE Technology containing only the parts the project uses. To build against your own copy, run `occt config <pathToOcct>`, and to return to the pre-built package, run `occt config package`.
Why is a member of the OCCT wrapper missing?
The README lists three reasons: it cannot be automatically wrapped yet, it caused trouble in a prior version, or it was not needed yet and was excluded to save compilation and especially linking time. You enable it in the configuration files under Tools/WrapperGenerator/Configuration and regenerate with `occt generate`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/macad3d-macad3d)Was this useful?