IngeTrazo is a push-pull CAD modeler built for Linux engineers
Traza como a mano: modelador 3D libre para arquitectura, ingeniería y diseño 3D. Linux, Windows y macOS. BIM e IFC con IngePresupuestos. Abre archivos .skp.
At a glance
- What is it?
- IngeTrazo is a free 3D modeler for architecture, engineering and design, written in Python on PySide6, that brings freeform push and pull modeling to Linux with an optional BIM tagging layer and IFC export. It fits a civil engineer or designer who needs native desktop CAD on Linux, and it does not fit a team that needs a stable file format or DWG import on macOS.
- Who is it for?
- IngeTrazo fits a civil engineer, architect or 3D designer on Linux who wants sketch-style push and pull modeling with a BIM tagging layer instead of a heavyweight commercial suite, and it does not fit a team that needs a frozen file format or a stable plugin API, since the project states both may change between minor versions while it is at 0.x. Before adopting it, check the version chart and the ROADMAP.md, and note that the macOS build has no DWG import because dwg2dxf is Linux-only for now, and that IFC support is still on the planned dependency list rather than installed.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, 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
The pitch is push and pull modeling on Linux, where native CAD is thin
IngeTrazo is a free 3D modeler for architecture, engineering and 3D design, described as freeform at the core so you can draw anything as if sketching by hand, with an optional BIM tagging layer planned on top. The README puts the motivation plainly: it brings push and pull modeling to Linux, where there is almost no native CAD for civil engineers and architects, and for anyone who designs in 3D in furniture, objects, scenes or models.
The optional BIM layer is the intended workflow. You mark geometry as IfcWall, IfcSlab or IfcColumn, export to IFC, and close the loop of model, tag, quantity takeoff and budget with the sister project IngePresupuestos.
The status is stated in the README as usable, with real work getting done in it today: draw, extrude, edit, paint, dimension and annotate, open.skp files from 2013 to 2026, tag BIM classes and export IFC quantities, georeference and import survey data. It is developed by dogfooding on real engineering projects, backed by around 2,000 automated tests, and its geometry engine refuses to commit a broken solid through what the project calls the hermeticity guard.
That guard is the technical claim worth repeating, because it is what connects modeling to quantities. A solid that is not watertight cannot be measured reliably, and measured reliably is the difference between a model and a cost estimate.
The project is GPL-3.0-or-later, the site is ingetrazo.com, the last push was on 2026-10-19, and the release history shows v0.5.8 on 2026-10-12 after v0.5.7 and v0.5.6.1 at the end of September 2026.
The modeling vocabulary is deliberately the familiar one
The feature list reads like the manual of a drafting program, which is the point. A CAD user arrives already knowing what Push/Pull means, and the tool's job is to make that work in a freeform way rather than to teach a new way of working.
The viewport is Z-up, with a camera that orbits around the point under the cursor, a grid, colored axes, perspective and parallel and two-point perspective, standard views, zoom-extents, hidden-line removal and real-sun shadows. A walkthrough mode gives you Position Camera, Walk and Look Around at eye height.
The drawing tools are Line, Rectangle, Rotated Rectangle, Circle, Polygon, Arc with two points and 3-Point Arc, with inferencing, snapping, axis locks and a Value Control Box where you can type exact lengths and coordinates, with 200,100 or 200;100 for two values. There is also Freehand, Pie, 3D Text and images, and the last command repeats with Shift+R or from the right-click menu.
Push/Pull is the centrepiece: a watertight extrude, recess, step or through-hole that is solid-aware. Offset gives walls with real thickness from a face outline. Follow Me sweeps a profile along a path and Fillet rounds a corner. Move, Scale and Flip come with snap, inference and exact measured input. Tape Measure provides guide points and lines that every tool snaps to, Push/Pull included, so you can stop a face exactly at a guide's height.
The solid tools cover Outer Shell, Union, Subtract, Trim, Intersect and Split, and section planes give live cuts with section fill. Groups and components isolate geometry, move, explode and edit it as a unit, with copy and paste that shows a solid, textured preview under the cursor, and Paste in Place with Ctrl+Alt+V drops the copy exactly where it was taken.
Push/pull has a hermeticity guard, and that is the engineering claim
The distinguishing detail in the feature list is the hermeticity guard on Push/Pull, described as BIM-grade and as never committing a broken solid, and the README is explicit that this is the difference that makes the geometry valid for quantity takeoff.
This is where a freeform modeler usually breaks. A sketch-based modeller that extrudes a closed outline has a well-defined solid, and the boolean operations are safe. A freeform one draws a line across a face and pulls it, and the result may be a shell with a hole in it, or a self-intersecting volume, or a solid with reversed normals. Visually it often looks fine. The moment you ask for a volume, a surface area or a per-material quantity, the broken geometry produces a wrong number, and a wrong quantity is worse than no quantity because it goes into a budget.
A guard that refuses to commit a non-watertight solid converts that failure from a silent wrong answer into a rejected operation. The user sees that the push did not take, and the model on disk stays valid.
The requirements file shows where the solid arithmetic comes from. manifold3d is the solid booleans kernel for the Outer Shell and Solid Tools, described as the kernel of OpenSCAD and Blender's booleans, with native wheels for Linux x86_64 and aarch64, Windows and macOS, and cp310 through cp314. It is Apache-2.0 licensed.
The test count is worth noting in the same context. Around 2,000 automated tests is a large suite for a project at 0.x, and a boolean kernel and a file format are exactly the two places where a regression silently corrupts saved work.
Materials, display styles and dimensions carry a lot of the product
Three areas of the feature list show that this is aimed at producing drawings and documents, not just solids.
Display styles include Default, Architectural with textures on white, Shaded, Hidden line, Monochrome, Wireframe and X-ray, and scenes remember their style, with the sheet composer rendering each viewport in any of them. That is a page-layout feature: you set up a sheet, put several views on it, and each view carries its own representation.
Materials support solid colour per face and textures with planar projection and a real-world tile size, applied with a Paint tool. The material system has a named registry, so paint keeps identity, editing and restamping updates every use of that material, Model Info reports quantities per material, and exports carry the real names. Named materials are what make a paint operation safe to revisit later.
Dimensions and leader texts are static annotations with hidden-line occlusion and styles. Texts select by their glyphs, move with the anchor pinned, and edit on double-click, and both dimensions and leader texts come in from.skp files.
Curved solids cover soft edges, smooth cylinders, curved-surface selection and view-dependent profile and silhouette edges. The Rotate and Protractor tool brings plane inference with an axis-coloured disc, 15 degree tick snapping near it, slope input as rise:run such as 3:12, rotate-a-copy with Ctrl, fold-axis by dragging, and angled guide lines that feed the snap engine.
The side tray holds entity information, layers, scenes, materials with 213 RAL colours and a textured library, which is a small detail that says something about the intended audience: RAL is the European industrial colour standard.
Installation is a Flatpak, an AppImage or a tarball, and the Flatpak is the one to pick
The install section is specific about which route to take, and it recommends the Flatpak on Linux x86_64 for a reason the README states: it is the one that keeps itself current, because flatpak update has somewhere to look.
The three commands are:
flatpak remote-add --user --if-not-exists ingetrazo https://ingetrazo.com/ingetrazo.flatpakrepo
flatpak install --user ingetrazo com.ingetrazo.IngeTrazo
flatpak run com.ingetrazo.IngeTrazoIt lands in your applications menu with .igz and .skp files associated.
The release also carries a single-file IngeTrazo.flatpak you can double-click, but the README is blunt about the trade: a bundle has no update channel and stays on the version you installed. The AppImage is the portable option, and the tarball is for distributions without FUSE:
chmod +x IngeTrazo-*-x86_64.AppImage && ./IngeTrazo-*-x86_64.AppImage
# or
tar -xzf IngeTrazo-*-linux-x86_64.tar.gz && IngeTrazo-*/ingetrazoOn Windows you take the -setup- installer or the portable .zip. On macOS, Apple Silicon M1 and later, you download IngeTrazo-<version>-macos-arm64.dmg, open it and drag the app to Applications. The app is not signed yet, so the first time you right-click it and choose Open, and the README gives a known gap: DWG import is missing on macOS because dwg2dxf is Linux-only for now, while the native .skp reader works everywhere.
Nothing else has to be installed. Python, Qt and the pure-Python .skp reader travel inside the application, and a --check flag prints what the install found and exits non-zero if anything is missing.
The .skp reader is a fork, and that is both a strength and a dependency
The requirements file explains the .skp support more precisely than the README does, and it is the part of the dependency list worth reading.
The .skp import and export is pure Python, covering VFF 2021 and later as well as classic MFC 2013 to 2020, plus a legacy-format writer behind the .skp export that is currently off. The dependency is openskp, pinned to a specific commit of a fork on GitHub at iamahsanmehmood/openskp, with a subdirectory of packages/python.
The comment says the fork's feat-write-annotations branch is upstream main plus dimension and leader-text write and read, citing upstream PR #203, with an instruction to return to main when that PR merges. In other words, the project depends on a fork of a fork of a library, pinned to a commit, to gain a feature that upstream has not yet taken.
That is a real maintenance cost and it is also a real piece of engineering. The alternative to writing your own .skp reader, which is a proprietary binary format, is to depend on someone else's. The price is that when upstream merges the PR, the pin has to be moved, and if the fork's author disappears, the project has to adopt upstream's version and lose the annotation write support in the meantime.
DXF import comes from ezdxf, at least 1.4.4, pure Python and MIT licensed, with a comment that it is the same parser IngeCAD reads its documents with so the two projects share one set of format scars. DWG is expected to arrive via a LibreDWG dwg2dxf satellite.
The rest of the runtime is deliberately minimal, and the file says so: the engine runs on PySide6 alone, using Qt's bundled OpenGL for rendering, QtGui's QMatrix4x4 and QVector3D for math, and the standard library array module for vertex packing. NumPy joined for the DEM heightfield decode and sampling in the georeferencing work. The comment is explicit that no native mesh or BIM libraries are included yet and they are added only when the feature that needs them lands.
The version 0.x caveat is the thing to plan around
The README states the caveat plainly, and it deserves to be quoted rather than softened: it is still a 0.x, the file format and plugin API may evolve between minor versions, and rough edges exist, with an invitation to report them in the issue tracker.
That is the main risk in adopting this. A CAD file is a long-lived artefact. A building modelled in 0.5 might open differently in 0.6, and a project with a multi-year life needs a format that does not move under it. The plugin API being in flux has the same effect on anyone building tooling on top.
There is an opposite reading, and it is fair too. A 0.x project with around 2,000 tests, a hermeticity guard, several named example projects in the repository, and a release every few weeks is a project that is moving fast with its users, and the alternative for a Linux engineer is usually a commercial suite they cannot run natively or an older unmaintained option. The examples directory holds four real documents from the Yanque plaza project, the fountain, the bench with its pergola, the solar lamp post and the welcome arch, with their A3 sheets and PDFs, and they are also attached to every release as IngeTrazo-ejemplos.zip.
The repository layout is a serious one for a 0.x project: core/ for the engine, formats/ for file format handling, georef/ for georeferencing, i18n/ for translations, plugins/, materials/, resources/, styles/, views/ for the UI, installer/ and packaging/ for distribution, vendor/ for bundled code, plus analysis/, benchmarks/, tools/, scripts/, tests/ and docs/. There is a pytest.ini, an ingetrazo.spec for PyInstaller-style packaging, a CHANGELOG.md, a ROADMAP.md, an AUTHORS file and a CODE_OF_CONDUCT.md.
The planned dependencies list gives the clearest view of where the project is going: ifcopenshell for IFC import and export as the BIM bridge with IngePresupuestos, and pyassimp for COLLADA and glTF import. Both are commented out with a note not to install them on Python 3.14 because there are no wheels.
Editorial conclusion
IngeTrazo fits a civil engineer, architect or 3D designer on Linux who wants sketch-style push and pull modeling with a BIM tagging layer instead of a heavyweight commercial suite, and it does not fit a team that needs a frozen file format or a stable plugin API, since the project states both may change between minor versions while it is at 0.x. Before adopting it, check the version chart and the ROADMAP.md, and note that the macOS build has no DWG import because dwg2dxf is Linux-only for now, and that IFC support is still on the planned dependency list rather than installed.
Frequently asked questions
What is IngeTrazo?
IngeTrazo is a free 3D modeler for architecture, engineering and 3D design, written in Python on PySide6, that brings push and pull modeling to Linux with an optional BIM tagging layer for IfcWall, IfcSlab and IfcColumn classes and IFC export for quantity takeoff.
How do I install IngeTrazo on Linux?
The recommended route is the Flatpak from the project repository: flatpak remote-add --user --if-not-exists ingetrazo https://ingetrazo.com/ingetrazo.flatpakrepo, then flatpak install --user ingetrazo com.ingetrazo.IngeTrazo, then flatpak run com.ingetrazo.IngeTrazo. An AppImage and a tarball are also published, and the single-file flatpak bundle has no update channel.
What is the hermeticity guard in IngeTrazo?
It is a guard on the Push/Pull tool that never commits a broken solid, so the geometry stays valid for quantity takeoff. The README calls it the difference that makes the geometry valid for quantity takeoff, and solid booleans are handled by the manifold3d library.
Can IngeTrazo import SketchUp .skp files on macOS?
The native .skp reader works everywhere, according to the README, and the pure-Python reader covers VFF 2021 and later as well as classic MFC 2013 to 2020. DWG import is the known gap on macOS, because dwg2dxf is Linux-only for now, and the macOS build is also not signed yet so the first launch needs a right-click and Open.
What licence is IngeTrazo released under?
The project is licensed under GPL-3.0-or-later, with the licence text in the LICENSE file at the repository root. The runtime dependencies carry their own terms, including Apache-2.0 for manifold3d and MIT for ezdxf.
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/ingelibre-ingetrazo)Was this useful?