NativeBIM by NativeCAD

NativeBIM / Methods

NativeBIM by NativeCAD

IFC measurement methods

Every figure on the NativeBIM pages comes from a script in the NativeBIM repository. This page gives, for each one, the script, the exact command, the inputs, the result and how many runs it took.

The repository is private, so scripts are named here as text. Where a run wrote a result file, the file is published below with its sha256, so you can check the figure against it. The four comparisons with IfcOpenShell and the geometry coverage figure were read from run logs; they keep their method here until a rerun publishes a result file.

Reading and writing IFC

Reading and writing IFC

Byte-identical re-save

78 of 78 IFC files re-saved byte-identical (sha256-equal after load and save). Inputs: A 977.5 MB test corpus: 41 exporter files and 37 buildingSMART samples in IFC2X3, IFC4 and IFC4X3_ADD2. Measured with tests/step/writer/corpus_roundtrip.js (method).

Command
node --max-old-space-size=4096 tests/step/writer/corpus_roundtrip.js --json tests/step/writer/results/corpus-2026-10-23.json <corpus dirs>
Result
corpus-2026-10-23.json, sha256 bfa0c76ecdaf272380e8e6b0c86dce9c6e4cf0a5b197c02efc84deacb3e2b936
Runs
Three runs, each 78 of 78.
Reading and writing IFC

Index pass speed

151 MB/s index pass over the 13.0 MB Medical-Dental clinic sample (209,259 records). Inputs: The buildingSMART Medical-Dental clinic sample, CC BY 4.0. Measured with tests/step/bench/bench_reader.js (method).

Command
node tests/step/bench/bench_reader.js --runs 3 --decode --json tests/step/bench/results-2026-10-23-b.json <files>
Result
results-2026-10-23-b.json (row dental_clinic), sha256 495b541e4f471c3b2d1a54af216caaa45d3861ec2971b0d82314869a9d912211
Runs
Median of 3 cold runs on a shared 2-vCPU machine.
Reading and writing IFC

Placements against IfcOpenShell

148,522 object placements on 75 files equal to IfcOpenShell 0.9.0.post1 within a 1e-6 relative tolerance. Inputs: The exporter and buildingSMART corpus, main loop plus the two large files. Measured with tests/model/placement/oracle_compare.js (method).

Command
node tests/model/placement/oracle_compare.js <corpus files>
Result
The run log; translation differences of at most 8.5e-14 m.
Runs
One run against IfcOpenShell dumps of the same files.
Reading and writing IFC

Properties and quantities against IfcOpenShell

1,532,281 property and quantity values on 71 files (58,035 elements) equal to IfcOpenShell 0.9.0.post1. Inputs: The exporter and buildingSMART corpus. Measured with tests/model/semantics/oracle_compare.js (method).

Command
node tests/model/semantics/oracle_compare.js <corpus files>
Result
The run log; values compared one by one.
Runs
One corpus run.

Geometry

Geometry

Geometry coverage

99.634% of elements with a body shape produce geometry: 123,002 of 123,454 elements on 41 exporter files. Inputs: 41 exporter files. Measured with tests/geometry/brep/oracle_bbox.js (method).

Command
node --max-old-space-size=5000 tests/geometry/brep/oracle_bbox.js --bench <ios dumps> --json OUT.json <corpus files>
Result
OUT.json of the run.
Runs
One run.
Geometry

Bounding boxes against IfcOpenShell

99.967% of bounding boxes within 1 mm of IfcOpenShell 0.9.0.post1 on 122,685 common elements in 38 files, outside the boolean and opening cases, which that build approximated; 99.619% with them. Inputs: 38 files with IfcOpenShell dumps; excluded categories boolean-approx and openings. Measured with tests/geometry/brep/oracle_bbox.js (method).

Command
node --max-old-space-size=5000 tests/geometry/brep/oracle_bbox.js --bench <ios dumps> --json OUT.json <corpus files>
Result
OUT.json of the run.
Runs
One run.

Generating

Generating

Test-fit search time

5.9 ms to evaluate 472 warehouse layouts on the Boulder demo lot and find the 72 feasible ones, cold run. Inputs: docs/launch/site/boulder/brief.json (from the public parcel record in parcel.json), top 3. Measured with docs/launch/site/boulder/testfit.js (method).

Command
node docs/launch/site/boulder/testfit.js --time
Result
timings.json, sha256 1f66a6ea69074110fc07bd1f8a66d097509ed83bd52e96e6a0e1b7dddf4c8bdc
Runs
1 cold run and 5 warm runs; 3.5 ms median warm, on a 16-core desktop.

See the demo

Generating

Generated model validation

0 errors from IfcOpenShell 0.9.0.post1 schema and rule validation of the generated 480,000 SF warehouse, on its 9,174-record build of 2026-10-26; the same build is checked by the NativeBIM rule checker on the warehouse-check demo. Inputs: The top test-fit option for the rear-load calibration pad, fixed seed. Measured with tests/authoring/builder/warehouse_sample.js (method).

Command
node tests/authoring/builder/warehouse_sample.js && python -m ifcopenshell.validate --rules tests/out/aut0_warehouse.ifc
Result
"No validation issues found. 0 error(s) found."
Runs
One run.

See the demo

Engineering

Engineering

Automated test files

207 automated test files that npm test collects from the default roots. Inputs: The landed tree. Measured with tools/check/run-tests.js (method).

Command
npm test (the files collected by defaultTargets and collectTests)
Result
A count of collected files; pass and fail totals are published only from a green run on the release build.
Runs
One count.
Engineering

Core runtime dependencies

0 runtime dependencies in the core library; a CI gate fails on any new one. Inputs: packages/core/package.json and every require in packages/core. Measured with tools/check/deps.js (method).

Command
npm run check:deps
Result
Exit status of the gate.
Runs
Every CI run.

Data behind the demo and reference pages

Page dataCommandWritten toDate and script
Demo pages: the warehouse model and the questionsnode docs/launch/site/capture.jswarehouse.json and docs/launch/site/data/ask.json, docs/launch/site/capture.js
Tool referencenode docs/launch/site/gen-tools.jsnativebim-tools.jsonon every build, docs/launch/site/gen-tools.js
Corpus sweepnode tools/bench/sweep.jssweep-public-2026-10-23.json, tools/bench/sweep.js
Test-fit options and figure (Boulder lot)node docs/launch/site/boulder/testfit.jstimings.json and the figure, docs/launch/site/boulder/testfit.js

Published result files

Copied from the repository with internal ticket fields removed and repository links shortened to paths; every figure is unchanged. The sha256 is of the published file.

FileRunSizesha256
corpus-2026-10-23.json72,708 bytesbfa0c76ecdaf272380e8e6b0c86dce9c6e4cf0a5b197c02efc84deacb3e2b936
results-2026-10-23-b.json2,756 bytes495b541e4f471c3b2d1a54af216caaa45d3861ec2971b0d82314869a9d912211
timings.json336 bytes1f66a6ea69074110fc07bd1f8a66d097509ed83bd52e96e6a0e1b7dddf4c8bdc
warehouse.json1,943 bytes92802a0f0367ceae1ee8daa8afce0f50192384755a1f48d080cea26235087152
sweep-public-2026-10-23.json226,657 bytes01aafd79379285ec1132cd348c04ff682155eb06e69b568148dd22219c7422d2

Rules for numbers

Notices

NativeBIM is licensed software. It does not provide design, engineering or other professional services. Outputs are drafts for review by the licensed professional of record.

IFC and Industry Foundation Classes are marks of buildingSMART International.

NativeBIM is not affiliated with, endorsed by or sponsored by the companies and organizations named here. Product names and marks belong to their owners.

NativeBIM is provided as is, without warranty of any kind. To the extent the law allows, FeatureBoard Labs Incorporated is not liable for indirect, incidental or consequential damages, lost profits or lost data, and its total liability is limited to the license fees paid in the 12 months before the claim. Read the license.