Files
editor/wiki/floorplan-chapter-17-assessment.md
T
77442861d9 editor: complete floorplan construction documentation (#531)
* Add roof surface placement support for items

Items (e.g. solar panels) can now be placed on sloped roof surfaces.
The placement system computes euler rotation from the roof surface
normal so items sit flush on the slope instead of going inside.

- Add roofStrategy to placement-strategies with enter/move/click/leave
- Wire roof:enter/move/click/leave events in the placement coordinator
- Add calculateRoofRotation in placement-math using surface normals
- Support full 3D cursor rotation for sloped surfaces
- Items on roofs are parented to the level with world-space rotation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fixed conflict

* feat(floorplan): add construction dimension strings

* feat(floorplan): coordinate opening dimensions

* feat(floorplan): add opening documentation

* feat(floorplan): add construction dimensions and notes

* feat(floorplan): add interior dimensions and curved note leaders

* feat(floorplan): improve construction dimensions and document plan

* feat(floorplan): harden construction document output

* feat(floorplan): add annotation collision diagnostics

* feat(floorplan): size export annotations in paper space

* feat(floorplan): automatically separate overlapping labels

* fix(floorplan): resolve dense label overlaps

* fix(floorplan): remove stale collision warning overlays

* fix(floorplan): treat mark pills as collision obstacles

* feat(floorplan): place short dimension values outside

* fix(floorplan): preserve dimension string order

* fix(floorplan): avoid architectural geometry in label layout

* feat(floorplan): add dimension side fallback leaders

* docs(floorplan): update chapter 17 implementation status

* fix(floorplan): dimension subdivided interior walls

* feat: add associative floor plan dimensions

* feat: add continuous construction dimension strings

* feat: add structural floor plan grids

* feat: coordinate columns with structural grids

Snap column placement and movement to structural axes and intersections, derive associative grid references, and preserve floor-plan rotation by allowing secondary-button pointer moves through the grid drafting layer.

* feat: add architectural room documentation

Add room-role metadata, editable documentation fields, centered room labels, and persisted live/PDF visibility while preserving generic zone behavior.

* feat: generate architectural room schedules

Add registry-driven room schedule rows with unit-aware areas and heights, natural room ordering, enclosure resolution, and document-quality warnings.

* feat: add reliable room clear dimensions

Derive unit-aware clear dimensions from proven modeled inside wall faces for straight rectangular rooms, including rotated and split-wall enclosures, while suppressing unproven datums.

* feat: add architectural stair documentation

Add level-aware UP/DN graphics, derived flight and rail notes, plan break and overhead conventions, linked destination-level projection, and persisted live/PDF visibility.

* feat: add typed specialty construction notes

Add schema-validated specialty payloads, standardized plan notation, contract-scope metadata, configurable overhead outlines, and editor authoring controls.

* feat: add curved and circular dimensions

Add associative radius, diameter, center, chord, arc-length, angular, and coordinate modes with unit-aware notation, repeated-feature labels, 2D authoring, and document controls.

* feat: coordinate floor plan drawing types

Add persistent floor, foundation, reflected-ceiling, roof, and site plan views with per-dimension show, omit, reference, and foundation-controller behavior across live and PDF output.

* feat: add associative curved wall dimensions

Bind radius, center, chord, arc-length, and angular construction dimensions directly to curved wall geometry so annotations update when the host curve changes.

* fix: render automatic curved wall dimensions

The wall floor-plan builder explicitly skipped curved walls, leaving the associative authoring workflow as the only dimension path. Render a concentric arc-length dimension automatically and keep it governed by automatic-dimension visibility.

* fix: use radius callout for curved walls

Replace the automatic arc-length annotation with the source-standard radius method: computed center mark, radial leader, curve arrow, and R value. Keep adjacent linear strings responsible for locating the curve tangencies and depth.

* Implement construction dimension string editing

* Add construction dimension standards controls

* Apply drawing standards to automatic dimensions

* Add floorplan overhead and reference visibility controls

* Add view-specific dimension segment suppression

* Add persistent drawing sheet model

* Plot floorplan exports at fixed scale

* Apply paper-space annotation profiles

* Compose floorplan PDF sheets

* Support sheet paper sizes and preflight

* Persist pinned annotation layout overrides

* Expand annotation collision obstacles

* Add floorplan annotation preflight surface

* Add reusable drawing sheet general notes

* Add drawing sheet keyed note instances

* Add drawing sheet document markers

* Expand construction note leader terminators

* Add wall assembly layer model

* Resolve wall assembly datum references

* Add wall assembly floorplan graphics

* Add opening documentation dimension policies

* Add finish-face room clear dimensions

* Extend room clear dimensions to rectilinear rooms

* Add construction module advisories

* Add clearance advisory profiles

* Add dimension completeness audit

* Expand dimension completeness audit

* Include preflight issues in completeness audit

* feat: complete floorplan construction documentation

* refactor: remove construction note node

* feat: refine floorplan documentation and unit display

* fix(editor): improve floorplan PDF dimensions

* fix(floorplan): refresh annotation collision layout

* fix(floorplan): keep annotations clear and restore registry boundaries

* feat(floorplan): refine construction dimension references

* fix(floorplan): align documentation tools with architecture

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-22 14:02:17 -04:00

204 lines
12 KiB
Markdown

# Floor Plan Chapter 17 Assessment
## Purpose
This document compares the guidance in `Chapter_17_Floor_Plan_Dimensions_and_Notes.pdf` with Pascal's current floor-plan implementation. It records what the chapter teaches, what the editor already supports, and the remaining construction-document gaps.
The review covered the full 19-page chapter and the floor-plan stack across:
- Core floor-plan, wall, opening, and measurement schemas.
- The registry-owned `FloorplanGeometry` contract.
- Editor 2D rendering and interaction layers.
- Node-specific floor-plan builders.
- Automatic wall and opening dimension planning.
- Persistent measurements and smart measurement.
- Door/window documentation and schedules.
- Per-level PDF export.
## What the chapter is teaching
The chapter is primarily about construction communication, not merely measuring geometry. Its main principles are:
1. A drawing must locate and size every construction-critical feature without requiring field workers to guess, scale the drawing, or perform unnecessary arithmetic.
2. Dimensions must be organized into consistent strings that remain readable and uncrowded.
3. The selected datum must match the construction method: centerline, face of stud, face of finish, masonry opening, rough opening, or another explicit reference.
4. Dimension graphics must follow a consistent standard: thin lines, extension-line gaps, extension-line overshoot, uniform terminators, readable aligned text, and predictable spacing.
5. Exterior strings normally progress from detailed opening/partition information to the overall building dimension.
6. Local or specific notes identify individual features through leaders. General notes apply to the whole drawing and are normally numbered in a dedicated sheet area.
7. Door/window schedules and feature notes may replace repeated dimensions when they communicate the information more clearly.
8. Drawing scale, paper-space text size, line weight, and sheet composition are part of the construction-document contract.
9. Curved, circular, masonry, concrete, and foundation-related construction require different dimension semantics from ordinary wood-frame walls.
## Current implementation
### Automatic construction dimensions
`packages/nodes/src/wall/construction-dimensions.ts` already produces coordinated level-wide construction dimensions. The exterior hierarchy includes:
1. Opening widths.
2. Door and window center locations.
3. Intersecting partition references.
4. Structural columns.
5. Facade jogs, projections, and recesses.
6. Overall facade dimensions.
7. A structural overall dimension when an exterior column row extends beyond the wall envelope.
The planner also supports:
- Collinear wall runs that form one facade.
- Disconnected facade runs.
- Angled exterior walls.
- Exterior-side classification.
- Wall-thickness-aware partition references.
- Interior partition strings, including geometrically enclosed partitions whose side metadata remains stale after wall splitting.
- Subdivision chains on every exterior orientation when internal walls divide a facade into multiple runs.
- Hosted door and window widths.
- Interior clear spans bounded by adjacent wall faces.
- Suppression of very short accidental segments.
- Associative updates when the contributing model geometry changes.
`packages/nodes/src/wall/floorplan.ts` integrates these dimensions into the registry-driven wall floor-plan builder.
### Dimension graphics
`packages/editor/src/components/editor-2d/renderers/floorplan-dimension-renderer.tsx` implements several conventions from the chapter:
- Aligned dimension lines.
- A gap between the feature and extension line.
- Extension lines that pass beyond the dimension line.
- Consistent 45-degree architectural slash terminators.
- Thin dimension and extension lines.
- Text above the dimension line.
- Text that remains readable when the plan is rotated.
- Explicit aligned baselines for stepped facade dimensions.
- Separate edit and document presentation profiles.
- True modeled wall thickness in document output while retaining interactive legibility in edit mode.
- Paper-space dimension text, tick, extension-gap, overshoot, and label-offset sizing in PDF output.
- Whole-millimetre document notation without an `mm` suffix, while retaining metre notation in the interactive editor.
- Short-segment values outside the dimension ticks when the value cannot fit inside.
### Automatic annotation layout
`packages/editor/src/components/editor-2d/renderers/floorplan-annotation-layout.ts` now resolves automatic dimension-value collisions in both the live floor plan and PDF composition. It supports:
- Label-to-label separation, including dense clusters.
- Stable same-string drawing order and priority for farther-out architectural strings.
- Movement along the dimension string before crossing into an adjacent tier.
- Fixed door/window mark pills as obstacles.
- Semantic architectural obstacles for walls, wall corners, door symbols and swing envelopes, windows, and columns.
- Sampled diagonal wall outlines, avoiding the oversized screen-aligned bounds produced by rotated walls.
- Outside-end placement for short values, followed by outside-start when the end side is blocked.
- Matching baseline extensions when a short value changes sides.
- A leader and true tick-to-tick baseline when both outside positions require further relocation.
The former orange/red dashed collision overlay was removed because it displayed stale pre-layout conflicts on top of labels that the automatic resolver had already made readable. Any future unresolved-collision reporting should live in a separate preflight surface rather than being painted over the drawing.
`packages/nodes/src/shared/construction-length.ts` formats imperial construction dimensions using feet, inches, and reduced fractions rounded to the nearest sixteenth.
### Persistent measurements
The existing measurement system is broader than the chapter's drafting examples. It supports:
- Distance.
- Angle.
- Area.
- Perimeter.
- Prism volume.
- Free and associative semantic anchors.
- Wall, roof, slab, ceiling, zone, and site features.
- Live updates when referenced geometry changes.
- Dangling-reference presentation and explicit detach behavior.
- 2D and 3D drafting and editing.
- Smart transient measurement reports.
The architecture is documented in `wiki/architecture/measurements.md`. These measurements are analysis annotations; they are not yet a complete replacement for architectural construction-dimension strings.
### Door and window documentation
`packages/nodes/src/shared/opening-documentation.ts` provides:
- Deterministic automatic door and window marks.
- Explicit mark overrides.
- Duplicate explicit-mark warnings.
- Mark bubbles and leaders.
- Door schedules.
- Window schedules.
- Nominal dimensions.
- Optional verified rough-opening dimensions.
- Window sill and head heights.
- Door operation, frame, and hardware fields.
The rough-opening fields intentionally remain optional rather than being invented from the nominal modeled opening size.
### Rooms, stairs, and other plan graphics
- Zones render a centered name but currently represent generic colored polygons rather than a complete architectural room model.
- Stairs render footprints, treads, and direction arrows, but do not yet emit a complete construction stair note.
- Columns can contribute structural center references to automatic exterior strings.
- The generic floor-plan registry already renders walls, doors, windows, slabs, ceilings, zones, roofs, stairs, columns, furniture, MEP nodes, and annotation nodes through a common geometry contract.
### PDF export
`packages/editor/src/lib/floorplan/floorplan-export.tsx` currently provides:
- Per-level PDF plan pages.
- North-up orientation that accounts for building rotation.
- Full and structure-only export scopes.
- Door and window schedule pages.
- Registry-driven geometry matching the live floor-plan builders.
- Conversion of non-scaling SVG strokes for PDF output.
- Preservation of persistent measurement value labels in full export.
- Respect for the existing measurement-visibility preference.
- Document-purpose wall rendering at modeled thickness.
- Document metric notation and initial paper-space sizing for construction dimensions and measurement labels.
- The same automatic annotation collision layout used by the live floor plan.
The plan is fitted to an A4 landscape page. It is not yet plotted at a fixed architectural scale.
## Important current limitations
### Interactive measurement and construction dimension are different concepts
The measurement system stores geometric analysis annotations. The wall planner creates automatic construction strings. There is no dedicated manual construction-dimension object that lets a drafter pick references, place a baseline, add points to a continuous string, and later reposition or suppress individual segments.
### The current datum is not truly face of stud
`WallNode` stores total thickness and finish materials but does not describe studs, sheathing, finish layers, veneer, air space, concrete block, or furring. Automatic dimensions can reference a generic wall face, but the model cannot yet prove that this face is a structural stud face or finish face.
### Paper-space control is only partially implemented
Exported construction dimensions and measurement labels now resolve their main text, tick, extension-gap, overshoot, and label-offset sizes from paper points. Note text, mark bubbles, room labels, remaining line-weight categories, and fixed user-selectable drawing scales still require the drawing-sheet work.
### Construction dimensions have no independent visibility layer
The live floor plan exposes independent visibility controls for automatic dimensions, manual dimensions, measurements, opening marks, structural grids, room labels, and stair annotations. Full export intentionally includes every supported annotation category regardless of the live-view toggles.
### Automatic collision layout has no persistent manual override
Automatic placement now handles adjacent labels, short values, opening marks, and the first set of architectural obstacles. It does not yet let a drafter pin a chosen label position, suppress a segment, or persist a view-specific layout override. Broader fixed-symbol coverage and a separate unresolved-collision preflight also remain.
### Curved and circular construction dimensions
Curved walls emit an automatic radius leader and center mark in live plans and document output, matching the chapter's curved-wall callout method. Manual associative construction dimensions cover radius, diameter, center, chord, arc-length, coordinate-pattern, and angular-pattern workflows, with curved-wall defining geometry resolved from stable semantic host features.
### Construction systems are not semantically modeled
The editor cannot yet apply different documentation rules for wood framing, masonry veneer, concrete block, structural masonry, or solid concrete because those assembly semantics do not exist in the wall model.
### The floor plan has no drawing-sheet model
The export layer produces plan and schedule pages, but there is no persistent drawing sheet with view identity, scale, title block, drawing number, note blocks, graphic scale, north arrow, or per-view annotation visibility.
## Features that should not be copied blindly
The chapter was published in 2012. Its example sizes and clearances are useful drafting and design references, but they should not be treated as current building-code requirements.
Any implementation of hallway, fixture, door, stair, appliance, or room-clearance checks should:
- Be configurable by jurisdiction and standard profile.
- Be presented as an advisory or verification result unless code provenance is known.
- Avoid embedding manufacturer-dependent rough openings or product sizes as universal facts.
- Avoid silently omitting dimensions merely because a feature is commonly considered standard.
The product should prefer explicit model data, verified manufacturer data, and user-controlled documentation policies.