bimforge
A standalone CAD/BIM toolkit in Python: measure 2D plan sheets, author parametric IFC models, roll them up into quantities, stage them in 4D/5D, and produce control, layout and structure sheets.
bimforge.bim— DXF → IFC authoring (IFC4X3 by default, exact extrusions and alignment sweeps), IFC → quantity takeoff, plan-sheet calibration and vector measurement, georeferencing, 3D KML/KMZ for Google Earth, 4D schedule embed/read-back (IfcWorkSchedule) and 5D cost and resource loading (IfcCostSchedule). Schedule readers for GanttWarrior JSON, Primavera P6 XER and MS Project MSPDI live here too.bimforge.author— the structure-family kernel: alignments, section prisms, battered walls, reinforcing bars, plates, saddles, spillways, standard-plan families, with quantities taken from the emitted geometry and never from a parallel formula.bimforge.sheetsandbimforge.cad— sheet production and the org-neutral DXF/KML/geo engine, styled by pluggable style packs.bimforge.terrain— terrain grids, watertight terrain solids and excavation carves from point clouds and contours.bimforge.blender— Blender add-ons. Alignment Section puts a station slider in the 3D view sidebar that cuts a live cross-section along an IFC4X3IfcAlignment(see below).
Install
pip install bimforge # IFC stack included (ifcopenshell, ezdxf, shapely, pyproj, numpy)
pip install 'bimforge[all]' # + PDF plan sheets, matplotlib drawing, build123d exact solids
pip install 'bimforge[terrain]' # + point-cloud / mesh terrain
Two CLIs ship with the package:
est-bim --help # dxf2bim, ifc2dxf, takeoff, schedule, cost5d, kml, calibrate, measure, build, ...
est-sheets --help # control / layout / structure sheet production
Blender: alignment section slider
python -m bimforge.blender # writes bimforge_alignment_section.zip
In Blender 4.2+ install the zip from Edit > Preferences > Add-ons > Install from Disk. It needs ifcopenshell inside Blender, which Bonsai provides. Then go to 3D View > Sidebar (N) > Section, pick Bonsai (the IFC Bonsai has open) or File, and press Load Alignments. Drag Station to slide the section. You can also step by a fixed interval or type a station and press Go. View Section looks through an orthographic camera whose near clip sits on the cut. Every mesh is cut at the plane, and the cut is filled into Section Cut. Each item is filled per its own styling: its material's colour, which is the IFC surface style when Bonsai loaded it. An unstyled item (no material, or the default grey) is filled by what its material or object name says it is: concrete, rebar, asphalt, gravel, steel, timber or earthwork. Single colour switches back to one highlight colour. Every cut edge is also drawn as a thin dark line. That outlines the fills and shows open cuts, such as a ground surface, which has no inside to fill.
Offsets. An offset ruler runs across the section: CL, then ticks every
Every (10' Lt, 10' Rt, ...) at a set height above grade. Locate puts
the 3D cursor at the current station plus an offset Lt or Rt, at the grade
elevation. It then reads the top model surface straight below, for example
Sta 12+50.00, 3.50 Rt | PG EL 160.16 | top EL 150.92 existing-grade.
Inquire reads the 3D cursor back as station and offset, and Cut also
slides the section to it.
4D date. When the IFC carries a 4D schedule (IfcTask links, as written
by est-bim schedule), the panel shows the model as it stands at the end of
a day. A construction task's elements appear at its start, and a demolition,
dismantle or removal task's elements disappear at its start. Hidden elements
are not cut. Type a date, step by a day or a week, or jump to the previous
or next day on which something appears or goes. The panel counts what is
standing, not yet built and removed. The panel reports station, grade elevation, grade and bearing.
With Follow timeline on, frames sweep the whole alignment, so rendering
the animation makes a fly-through. Stations read in feet when the project is
in feet or its map conversion is to a feet grid.
GIS (QGIS)
est-bim ifc2gis --ifc model.4d.ifc --out model.gpkg
The output is a true-3D GeoPackage in the project CRS. It has one layer of
solids and one of lines (the alignment), and each feature carries its class,
name, GlobalId, cost code and quantities. If the IFC has a 4D schedule, each
feature also carries appear_date and vanish_date. If it has an
alignment, each feature carries its station and offset range. Drag the file
into QGIS and set the project CRS to match. Use View > 3D Map Views to
see the Z, and the Temporal Controller (Layer Properties > Temporal >
separate start and end date fields) to play the staging.
Style packs
CAD styling (title-block borders, layer colours, KML and IFC surface styles)
comes from a style pack: a package or directory with templates/*.dxf and an
optional styles.yaml. Resolution is explicit argument → registered providers
→ built-in neutral defaults. Any installed distribution can register a provider
through the bimforge.style_packs entry-point group (a zero-argument callable
returning a pack spec or None).
Fixture provenance
Test fixtures cite public sources or derive their quantities in-repo. They carry no employer bid numbers and no working-directory paths, and CI's de-org scan refuses a change that adds one.
License
Apache-2.0. See LICENSE and NOTICE. Security reports: SECURITY.md.
Metadata
Release files for bimforge 0.1.96
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bimforge-0.1.96.tar.gz | 583.9 kB | With provenance | Details for bimforge-0.1.96.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bimforge-0.1.96-py3-none-any.whl | Python 3 | none | any | Details for bimforge-0.1.96-py3-none-any.whl |
Total release size: 1.3 MB
Release files / bimforge-0.1.96.tar.gz
| Download URL | bimforge-0.1.96.tar.gz |
|---|---|
| Size | 583.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
29191e2df9082b2cbb6b4c219688f216707843d1af69a847d3ce039778af53be
|
|
BLAKE2b-256 checksum How to use checksums |
30fa90bd8641ef58a4ffa24a012472602c91f3409a07e5d1c55dc432efc0a116
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logRelease files / bimforge-0.1.96-py3-none-any.whl
| Download URL | bimforge-0.1.96-py3-none-any.whl |
|---|---|
| Size | 667.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d848a60f57938c43fb66eb96aeb40670d1e9c02bc044e01ed8ad0067af22c4e7
|
|
BLAKE2b-256 checksum How to use checksums |
f357c3e50e7970ef5ca243f23bcd381c45a017055fd6191acfd925d4cddc581c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for bimforge 0.1.96
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for bimforge-0.1.96.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.