2026-10-14
Create and edit site massing with one project and one undo history, through commands and the plan and 3D editors. See Site massing for a worked study.
Check these when you upgrade
- Breaking: create and edit a
Buildingthrough a project. UsemassBuildingCommandwithProjectManager.apply, then edit through commands or the managed editors. Standalonenew Building({ profile, height }), segments without storeys,storeyHeight,Building.setStoreys,Building.addSegment,Building.removeSegment,regenerateStoreys,storeyHeightForandSTOREY_HEIGHT_BY_USEare removed. See Model a mass. - Files with
showMassingneed 1.2.0. Floorkit 1.1.0 refuses that new plan-view field. Files without it still open in both versions. Update custom saved-view validators to accept it. BuildingEditCommandhas new members. Addreplace-mass,add-building,remove-buildingandreplace-siteto exhaustive switches.ProjectFileErroralso addsbuilding-in-useandsite-in-use;storey-in-usecan now be reported by a mass edit.- Recheck floor area against the site’s grade and area definitions. A storey entirely at or below grade is a basement. Basement, parking, core and mechanical areas do not count toward FAR unless the rules include them. Set
BmStorey.areaKindexplicitly where needed; pass{ grade }tomassQuantitiesorBuilding.quantitiesfor a site above or below zero. - Sections and elevations exclude masses. A view that selects only a mass gives
empty-view. Use a massing plan and 3D view, or convert the mass to a shell for physical cuts. - Masses use colours by use when no colour is set. Set
coloron the mass or passmassColors: {}to keep the previous default. Plan views and sheets can now fill mass parts with their colours; update screenshot or PDF expectations accordingly. - The plan editor reports deselection after undo. A select listener must accept
undefinedwhen undo removes the selected element. A storey-setting edit in a mass building also reports the changed objects. - Custom editable targets can supply
activePart. The editors preserve the selected mass part during gestures and after saving or undoing. Hosts with customEditableTargetimplementations can provide its saved part id alongsideselectPart.
Added
- Mass, building and site commands.
replace-mass,add-building,remove-buildingandreplace-sitework throughBuildingSessionandProjectManager, including batches, undo and redo.massBuildingCommandcreates a mass from an outline;massSegmentHeightCommandchanges a part’s height in whole storeys. - Plan and 3D mass editing. Select a part, reshape, move, turn or delete it. Push/pull changes its height in 3D. Each completed gesture saves one command; edits that break a saved view or remove occupied storeys are refused.
- Draw a building in the plan.
ManagedPlanEditor.startMassDrawingdraws and saves a new mass as one step.startOutlineDrawingreturns an outline for an app’s own creation flow. Escape cancels without saving. - Site massing on plans and sheets.
showMassing: truedraws mass parts, the parcel and the at-grade setback line in plan views, sheets and PDF exports.ProjectManager.setBuildableEnvelopeshows the supplied envelope in 3D; it is a display setting, not part of a saved project. - Area kinds and colours for mass parts. Save
BmStorey.areaKindand optionalBmMassSegment.color.GUIEditor.onDragexposes live figures during supported gestures before the command is saved.
Changed
- Mass, building and site edits preserve unaffected objects. A storey-setting edit in a mass building rebuilds the affected storey and mass.
- A rebuilt mass keeps its active part. Height drags keep materials and unchanged parts across geometry writes.
Fixed
- Setback checks measure clearance edge to edge, including concave parcels.
- Basement classification uses site grade when calculating floor area ratios.
- Editor keyboard focus and selection grips recover correctly after mass edits and undo. Plan move/turn feedback works when an app loads another copy of Three.js.
2026-10-11
One object for an open project, commands for each element of a storey, and edits that stay fast in a large building.
Check these when you upgrade
- The mouse wheel pans the 2D plan and the sheet. In 1.0.0 it zoomed. Call
setNavigation(MOUSE_NAVIGATION)on the view to keep the zoom. SeecreateModelRenderer. - Install
opengeometry@^2.0.18. Floorkit needs 2.0.18 or later. - Selection and hover are blue. Set
--op-accent: #000000on the editor container to keep the black look. - Drawing text uses Paper Mono. On screen and in SVG, load Paper Mono in your page, or the text shows in Courier. A PDF needs no font. To keep the old look, set
fontFamilyin the typography of the sheet style and in the dimension styles. - Editor readouts use the system monospace font. Set
--op-ui-fonton the editor container for a different font. - TypeScript: two unions are larger.
BuildingEditCommandhas new kinds, and thekindof a change event can berestore. Aswitchthat must cover each member needs the new cases. onChangereports are more exact. A moved block givesmoveand an added element givescreate. The labels of a door or a window that moves off its wall or to a different wall changed.ogidsnames only the elements that the step changed.- Objects stay the same after an edit. An edit builds again only what changed, so the other objects are not new objects. Do not write
position,rotationorscaleon a Floorkit object below a storey group: use an edit command. Do not write into a drawing that the plan editor made. - The model check is stricter. A column, a beam or a railing with a number that the build cannot use is refused when a file opens. A stair with more than 1,000 risers is refused.
Added
ProjectManager. One object holds an open project: the building, the views, the sheets and the markers. It has one undo history, it mounts a plan editor, it connects a 3D editor, and it exports sheets.- Commands for the elements of a storey.
add-element,replace-elementandremove-elementchange slabs, roofs, spaces, stairs, columns, beams, railings and blocks. - Commands for block definitions and for storeys.
add-asset,replace-asset,remove-asset,add-storey,remove-storeyandreplace-storey-settings. - A batch command.
{ kind: 'batch', commands: [...] }applies several commands as one step with one undo. When one command fails, nothing changes. - A change event names what changed. The events of
BuildingSession.subscribeandProjectManager.subscribehave an optionalchangedlist of live ids, so your app can refresh only those elements. setNavigation. Set how the wheel and the mouse buttons move the 2D plan and the sheet.- A block moves and turns in both editors.
Changed
- Edits are fast in a large building. An edit builds again only the elements that changed, and the plan editor draws again only those. In a storey of 160 rooms, a slab move takes about 5 ms (before about 2.2 s), and a door move takes about 46 ms (before about 2.2 s).
- The first plan draw of a large storey is faster. At 160 rooms it takes about 0.24 s. It took about 64 s.
- More moves of a wall at a corner are accepted.
- A body up to 1 km from the origin of the model draws in a plan, a section and an elevation.
- A selected wall in the 2D plan editor shows its outline, with no bounding box and no rotate dot.
Fixed
- A dragged wall end joins the wall it is released on.
- The wall outline stays whole after a wall drag.
- A drag that is refused or cancelled puts the element back, and the 2D plan shows the saved plan again.
- The undo of a live edit puts the element back exactly.
- The plan symbol of a door or a window no longer shows in the 3D view.
- A wall cuts its holes again when only its axis moves.
LineDimensionprints no debug logs.- A door, a window or a wall opening disposes its kernel bodies.
2026-10-06
Floorkit 1.0 launched.