Add an IfcBeam between Start and End with a centred rectangle
(Width × Height) or parameterised Profile. Local Z is the beam
axis so the extrusion runs along the beam.
Add an IfcColumn to a parsed model, anchored to an existing storey. Emits the full STEP sub-graph (placement, profile, extruded solid, representation, IfcRelContainedInSpatialStructure) into the overlay so the column appears next to the existing model on export.
Position is the base centre in storey-local coordinates (metres),
Width×Depth selects a centred rectangle; Profile selects the
canonical parameterised section. RefDirection turns its local X axis
in the storey plane, and Height is the +Z extrusion length.
Create a column at the actual live crossing and retain its IfcGridPlacement binding.
Add an IfcCostItem. CostValues/CostQuantities are optional; an empty array is refused.
Add an IfcPhysicalSimpleQuantity for IfcCostItem.CostQuantities.
Add an IfcCostSchedule. Refused for IFC2X3 (different attribute layout).
Add an IfcCostValue. AppliedValue and AppliedValueRef are mutually exclusive.
Create the curtain wall and all its members/panels in one undo batch. Metres, storey-local.
Add a free-standing IfcDoor (Width × Height + thin frame depth).
Add an IfcElementType subtype (e.g. { Type: 'IfcWallType', Name, PredefinedType }), laid out for the model's schema.
Inject a new entity into the active model. Returns an EntityRef
pointing at the freshly-allocated expressId.
Pass def.type as the canonical IFC EXPRESS PascalCase name
(e.g. 'IfcRectangleProfileDef'). UPPERCASE STEP tokens are also
accepted and silently normalized to PascalCase against the schema
registry, so the returned entity.type always reflects the
canonical form regardless of how the caller spelled it.
Attribute conventions (mirror EntityExtractor.extractEntity()):
"#42" → entity reference".AREA." → enumnull → $(a,b,c) (recursed)modelId must be one the backend answers for: the headless CLI backend
takes 'default' or the file basename and throws on anything else, rather
than minting a ref that bim.mutate.* would then refuse.
Create straight tagged grid axes. Position and axis endpoints are metres in their local frame.
Add an IfcDoor filling a new opening in a wall (IfcRelFillsElement). Sill defaults to 0.
Add an IfcWindow filling a new opening in a wall (IfcRelFillsElement), bottom edge at Sill.
Add an IfcMaterialLayerSet of IfcMaterialLayers (MaterialLayers[i].LayerThickness in metres).
Add an IfcMaterialLayerSetUsage (default AXIS2/POSITIVE; OffsetFromReferenceLine in metres).
Add an IfcMember (generic structural member — brace, post, strut)
between Start and End. Same rectangular or parameterised Profile
extrusion as addBeam; choose PredefinedType to disambiguate the role.
Cut an IfcOpeningElement (IfcRelVoidsElement) into a wall (Offset, Sill, Width, Height) or
slab (Position [x, y], Width, Depth); the cut spans the host body + 50 mm per face unless CutDepth.
Add an IfcPlate (thin flat element) — rectangle or polygon
profile extruded by Thickness. PredefinedType defaults to
NOTDEFINED; pass 'CURTAIN_PANEL' / 'SHEET' to override.
Add a railing along Path in storey-local metres, including the handrail and its posts.
Add an IfcRoof — flat-roof slab variant. Same rectangle/polygon
profile shapes as addSlab but emits an IfcRoof entity with
.FLAT_ROOF. PredefinedType.
Add an IfcSlab. Position is the minimum corner; the slab extends
Width along +X, Depth along +Y, and is extruded Thickness
upward.
Add an IfcSpace (room/zone) — rectangle or polygon footprint
extruded vertically by Height. Aggregated into the storey via
IfcRelAggregates (spaces are spatial-structure children, not
IfcRelContainedInSpatialStructure products).
Add a storey-local straight-run stair and its aggregated flight; lengths are metres, Direction radians.
Add an IfcStructuralAnalysisModel. Not storey-anchored (IfcGroup, no geometry).
Add an IfcStructuralCurveMember between params.Start and params.End,
anchored to a storey for its ObjectPlacement. Emits an
IfcTopologyRepresentation (IfcEdge between two IfcVertexPoints) as its
analytical line geometry.
Add an IfcStructuralLinearAction carrying an IfcStructuralLoadLinearForce.
Add an IfcStructuralLoadGroup, or an IfcStructuralLoadCase when params.SelfWeightCoefficients is given.
Add an IfcStructuralPointAction carrying an IfcStructuralLoadSingleForce.
Add an IfcStructuralPointConnection at params.Position, optionally with an IfcBoundaryNodeCondition.
Add an IfcWall from Start to End (storey-local metres). Profile
spans the full length along the wall axis, centred on Thickness,
and is extruded upward by Height.
Add a free-standing IfcWindow (Width × Height + thin frame depth).
Linear spacing/fit or polar span, sharing the viewer's placement planner.
Associate a material with objects via IfcRelAssociatesMaterial, replacing their previous one. Returns the relationship.
Assign members/connections into an analysis model, or activities into a
load group, via IfcRelAssignsToGroup — the relationship
bim.structural.analysisModels()[i].itemGlobalIds and
bim.structural.loadGroups()[i].activityGlobalIds read back.
Type objects via IfcRelDefinesByType; an object already typed moves to this type. Returns the relationship.
Apply a structural action/reaction to the member or connection it acts on via IfcRelConnectsStructuralActivity.
Link a structural member to a structural connection via IfcRelConnectsStructuralMember.
Paste a dependency-pruned selection in storey-local metres/radians.
Move/resize the opening and its filling together. Lengths are metres in the host frame.
Join two walls in the same placement frame; returns IfcRelConnectsPathElements.
Optionaloptions: WallJoinApplyOptionsNest childExpressIds (IfcCostItem) under parentExpressId via
IfcRelNests. A child already nested elsewhere is reparented: detached
from its old rel (which is tombstoned if that empties it) first.
Safe-delete an IfcCostSchedule / IfcCostItem / IfcCostValue. Throws,
naming referrers, if a value is still listed in another item's
CostValues or another value's Components — pass { detach: true }
to rewrite those lists first. Deleting an item cascades to values it
alone references.
Optionaloptions: { detach?: boolean }Remove an entity. Tombstones existing source entities so they're skipped on export; forgets overlay-only entities entirely. Returns false if the id is unknown to the store.
Remove a single-flight stair and its flight; shared geometry, styles and materials are retained.
Replace a product with canonical storey-local params; a refusal retains its old graph.
Replace an IfcCostItem's CostValues. Pass [] to clear it (written as $, never ()).
Edit a positional STEP argument on any entity by zero-based index.
Use this for non-IfcRoot edits like IfcRectangleProfileDef.XDim
(index 3) where the attribute has no symbolic name.
bim.store— document-level edits on a parsed model.Use this for raw STEP edits that don't fit
bim.mutate.*:addEntityto inject a new entity recordremoveEntityto drop an existing or newly-added entitysetPositionalAttributeto edit non-IfcRoot attributes by index (e.g.IfcRectangleProfileDef.XDim)For property-set / quantity / named-attribute edits use
bim.mutate.*. For building a model from scratch usebim.create.*.Changes accumulate in a per-model overlay and are flushed to the IFC file on the next
bim.export.ifc({ applyMutations: true }).