editor: improve floorplan modes and annotations (#549)
* 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 * fix(editor): anchor floorplan cursor to snapped point * fix(nodes): preview floorplan edits through live overrides * feat(editor): add context-aware floorplan modes * fix(nodes): render crisp wall selection hatching * fix(editor): cap floorplan handles at extreme zoom * fix(editor): keep zone labels upright after rotation * refactor(editor): make referenced annotations registry-driven * refactor(nodes): colocate contextual dimension builders * fix(editor): use mode-driven angle snapping * fix(nodes): use mode-driven move snapping * chore(editor): update react scan tooling * refactor(floorplan): streamline construction documentation * refactor(floorplan): remove wall assembly roadmap * fix(floorplan): migrate retired scene data --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
daa1f3e99b
commit
ab76686b8b
@@ -2,7 +2,7 @@
|
||||
|
||||
## 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.
|
||||
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 supports, and the product's intentional scope boundaries.
|
||||
|
||||
The review covered the full 19-page chapter and the floor-plan stack across:
|
||||
|
||||
@@ -91,7 +91,7 @@ The planner also supports:
|
||||
- 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.
|
||||
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.
|
||||
|
||||
`packages/nodes/src/shared/construction-length.ts` formats imperial construction dimensions using feet, inches, and reduced fractions rounded to the nearest sixteenth.
|
||||
|
||||
@@ -111,7 +111,20 @@ The existing measurement system is broader than the chapter's drafting examples.
|
||||
- 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.
|
||||
The architecture is documented in `wiki/architecture/measurements.md`. These measurements remain analysis annotations rather than architectural construction-dimension strings.
|
||||
|
||||
### Manual construction dimensions
|
||||
|
||||
The editor provides a dedicated associative `ConstructionDimensionNode` for architectural drafting in Expert mode. A drafter can:
|
||||
|
||||
- Pick stable semantic references or free points.
|
||||
- Create point-to-point, continuous, radius, diameter, center-mark, chord, arc-length, angular, and coordinate dimensions.
|
||||
- Place and later move the dimension baseline.
|
||||
- Reposition individual witness references.
|
||||
- Suppress or restore individual segments.
|
||||
- Keep dimensions associated with their host geometry as walls, openings, and other supported elements change.
|
||||
|
||||
Manual construction dimensions render in the live floor plan and PDF output, and their visibility is controlled independently from automatic dimensions and analysis measurements.
|
||||
|
||||
### Door and window documentation
|
||||
|
||||
@@ -132,7 +145,7 @@ The rough-opening fields intentionally remain optional rather than being invente
|
||||
|
||||
### Rooms, stairs, and other plan graphics
|
||||
|
||||
- Zones render a centered name but currently represent generic colored polygons rather than a complete architectural room model.
|
||||
- Architectural room zones provide room names and numbers, finish and occupancy metadata, ceiling heights, clear dimensions, and room schedules. Generic colored zones remain available for non-room uses.
|
||||
- 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.
|
||||
@@ -150,44 +163,24 @@ The rough-opening fields intentionally remain optional rather than being invente
|
||||
- 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.
|
||||
- Document metric notation and paper-space sizing for dimensions, measurement labels, room labels, annotation text, mark bubbles, and annotation linework.
|
||||
- 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.
|
||||
The export intentionally fits the plan to an A4 landscape page.
|
||||
|
||||
## Important current limitations
|
||||
## Intentional scope boundaries
|
||||
|
||||
### Interactive measurement and construction dimension are different concepts
|
||||
### Walls use one modeled thickness
|
||||
|
||||
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.
|
||||
`WallNode` stores one total thickness and finish materials. It does not model separate studs, sheathing, finish layers, veneer, air space, concrete block, or furring. Face-based dimensions therefore reference the modeled wall face rather than a separately proven construction layer.
|
||||
|
||||
### The current datum is not truly face of stud
|
||||
### Export uses the supported fitted-page presentation
|
||||
|
||||
`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.
|
||||
PDF export fits each supported plan to an A4 landscape page. Construction dimensions, measurements, annotation text, room labels, mark bubbles, and annotation linework use the existing document presentation profiles.
|
||||
|
||||
### Paper-space control is only partially implemented
|
||||
### Automatic annotation placement uses its current obstacle set
|
||||
|
||||
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.
|
||||
Automatic placement handles adjacent labels, short values, opening marks, walls, wall corners, door symbols and swings, windows, columns, and room labels. Drafters can pin a label position, reset it with a double-click, and suppress individual manual-dimension segments.
|
||||
|
||||
## Features that should not be copied blindly
|
||||
|
||||
|
||||
Reference in New Issue
Block a user