Interactive topology optimization for compliant mechanisms — unleash your creativity!

TopoptComec helps you design compliant mechanisms — flexible structures that achieve motion through material deformation rather than joints.
Simply draw your domain, set forces and supports, choose your material and optimizer, then watch the algorithm sculpt the optimal shape — in 2D or 3D.
None of the existing competing solutions combine all of these features in a single tool:
- 🔨 Rigid structure and compliant mechanism — Same solver, just change the loads.
- 🧊 2D and 3D support — Real engineering isn’t flat.
- 🚀 Fast, like really fast — Designed for performance, not academic demos.
- 🧪 Flexible — Tons of parameters to tweak → infinite design possibilities.
- 🍰 Easy to use — Intuitive GUI and CLI, piece of cake to use.
- 🔓 Open source — Transparent, extensible. No black boxes.
Open the folder you want TopoptComec to be in a terminal and run:
git clone https://github.com/ninja7V/topoptcomec.git
cd topoptcomecInstall uv if you don't already have it.
uv run topoptcomecuv run topoptcomec -p ForceInverter_2Sup_2D --preview
Tweak the parameters or choose a preset and hit "Create"!
Units: TopoptComec is unit-agnostic — one grid element = one length unit, and
E/forces are whatever consistent unit system you choose. Seedocs/GLOSSARY.md(Units and Conventions) for details, including the artificial-spring convention at load points.
Presets: the CLI and GUI look for
presets.jsonin the current directory first, then~/.topoptcomec/presets.json, then fall back to the packaged examples (CLI: override with--presets).
Once you’re happy with your mechanism, export it for visualization in ParaView or for refinement in your favorite CAD software.
The interface should feel intuitive, but you’ll find detailed visual explanations in the Wiki.
Ideas, bug reports, or pull requests — all are welcome. Let’s build something awesome together!
See the CONTRIBUTING.md file for details.
Thank you for using TopoptComec 🙂
Just optimize!
This project is licensed under the MIT License - see the LICENSE.txt file for details.
This project also uses the PySide6 library, which is licensed under the GNU Lesser General Public License v3.0 (LGPLv3). The source code for PySide6 can be obtained from its official repository: https://github.com/pyside/pyside-setup.
