NativeBIM by NativeCAD

NativeBIM / Demos / Pump plant room from an STL

NativeBIM by NativeCAD

IFC showcase: Pump plant room from an STL

A pump mesh becomes an exact B-rep IfcPump with ports on its flanges, is placed in a plant room and piped by the router; the mesh error and the clash check are measured.

This model is illustrative. It is built from a script with the dimensions listed under Sources, and it does not represent an existing or as-built building.

3D model

The viewer opens pump-plant-room.glb, the glTF that NativeBIM writes from the IFC file. The IFC file is pump-plant-room.ifc.

What is in the model

ItemCount or value
Walls4
Doors1
Slabs2
Columns1
Storeys1

Requirements

The model does not yet meet every requirement of an interior. Each is measured on the model’s geometry by casting rays at it from sample points 0.25 m apart.

RequirementWhat it asksResult
Every enclosed area has a floorRooms are walked on: an area walls close in at a storey level and nothing to stand on is not a room.Not yet: 1 of 170 samples fail
The interior is closed inWalls, doors and windows close every interior floor on all sides; a gap in the walls is a hole in the building.Not yet: 792 of 1527 samples fail

Drawing set

Draft drawing set generated from the model: pump-plant-room-drawings.pdf (PDF, 3 sheets).

Elevations are not generated yet, so this drawing set has plans and schedules only. Sections are not generated yet, so this drawing set has plans and schedules only.

Mesh to exact equipment, placed and piped

The pump enters as a closed mesh of 1170 triangles. NativeCAD rebuilt it as one solid of 24 faces and the importer wrote it as an IfcPump with that B-rep as its body and 2 ports. Measured on the IFC: Hausdorff distance 0.289 mm and volume difference +0.1244 percent, the values the seed gives (0.289 mm and +0.1249 percent). Two pipe systems are routed from the ports around the structure and the equipment, and 0 hard clashes among the 26 bodies in the model.

Mesh against exact B-rep (measured by the build on the IFC; the known answer is computed from the seed)
QuantityMeasuredKnown answer
Hausdorff distance, mesh to B-rep0.289 mm0.289 mm (largest facet sagitta, radius 135 mm at 48 sides)
Volume difference, B-rep less mesh+0.1244 percent+0.1249 percent (cylinders exact, facets inscribed)
Mesh volume63.727 litres63.727 litres
B-rep volume (NativeCAD)63.806 litres63.806 litres
Mesh triangles after cleaning1170closed, 0 open edges
B-rep faces in the STEP file24 (cylindrical 12, plane 12)6 cylinders, each split at its seam, and 12 planes
IfcAdvancedFace entities in the IFC24one per face
Ports found on the pump (flange end faces of the mesh) and what they connect to
PortFlowPosition in the room, mAxisFlangeSystem typeConnected to
SuctionSINK(1.906, 3.000, 0.165)(-1, 0, 0)220.00 mmHEATINGpipesegment Heating water return run 1 segment 3
DischargeSOURCE(2.200, 3.000, 0.454)(0, 0, 1)220.00 mmHEATINGpipesegment Heating water supply run 1 segment 1
Routed pipe systems (routeMep, preview): sized from the flow, routed around the column, tank, switchboard, existing pipe and the door zone
SystemPipeLengthBendsSegmentsFittingsVelocityGradientIncludes the pump
Heating water return100 mm2.84 m2321.27 m/s163 Pa/myes
Heating water supply100 mm7.95 m4541.27 m/s163 Pa/myes
Clash check (packages/core/src/validate/clash.js), on the written file
CheckResult
Hard clashes, every element against every other0 (bodies tested 26, pairs tested 32, pairs touching 32)
Pipes against the pump, hard clashes0 (the pipe ends meet the flange faces)
Pipes within 40 mm of the column, tank, walls, slabs or switchboard0
Return pipes within 40 mm of the supply pipes or the existing pipe0
Router check, clearance 50.00 mm from every obstacle and systempassed
The STEP file opened in NativeCAD again (recorded in nativecad-record.json; this build does not run NativeCAD)
What NativeCAD reportedValue
NativeCAD version0.25.0
Solids1
Faces24
Edges48
Volume63.806 litres
Watertightyes
Topology errors0
This build reads the same file1 solid, 24 faces

Measured by the build, not quoted: the mesh is compared with the B-rep as NativeBIM writes it into the IFC and evaluates it (the B-rep tessellated at 720 chords per circle, so its own chord error does not enter), and the Hausdorff distance is the largest distance from either surface to the other. The mesh is a 48-sided polygon wherever the solid is round, with its vertices on the circle, so the exact solid lies farther out by the facet sagitta of the largest circle and is slightly larger. Both numbers follow from the seed in equipment.js, and the build stops if they differ from the measured ones by more than 5 percent.

The equipment is simple on purpose: a box casing, two nozzles with flanges and a motor cylinder, so that NativeCAD recognises every face as a plane or a cylinder and returns an exact solid. NativeCAD marks the faces of a mesh-derived solid as such, because their edges are chords of the circles they bound; the surfaces themselves are exact planes and cylinders (fit error below 0.00002 mm).

Ports: the importer finds every round end face that ends the part. The motor cover end is one of them (diameter 246.00 mm). It is not a pipe connection, so this showcase keeps the end faces whose diameter is a PN 16 flange outside diameter from the table in the sources, which leaves the suction and discharge flanges.

Routing: both systems are routed with the preview edit op routeMep. The pump body and the door zone are given to it as an obstacle and a keep-out; it takes the column, tank, switchboard, walls, slabs and the existing pipe from the model. Obstacles are bounding boxes, so a route can be longer than a designer would draw.

Files: the STL is written by equipment.js and the build stops if the checked-in copy differs from what the script writes. The STEP is NativeCAD output, checked in so that the build needs no CAD kernel. To refresh it, run the three calls listed in nativecad-record.json (the same ones tools/mesh/import.js writes to request.json) and replace pump.step and the record.

Sources

Where each dimension comes from. Anything marked as chosen for the sample is an assumption, not a measurement.

Built 2026-10-27 with node tools/showcase/build.js pump-plant-room. Re-running the command gives the same bytes.

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.

Sheets are marked NOT FOR CONSTRUCTION by default.

Areas are computed by NativeBIM, not a certified BOMA measurement.

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.