v0.22.0 - The "Joist Arrays That Just Work" Release
This release rebuilds how papermodels handles geometry. Intersection points now come from a single canonical node store, and the JoistArrayModel has been rebuilt on top of it. The aim is to make the frequent geometry errors of past releases go away.
⚠️ Breaking changes
CollectorTribModelhas been removed. UseJoistArrayModelinstead. The Example notebooks have been updated to import and assignJoistArrayModel.
Features
- Canonical node store: all intersection points now refer to shared canonical nodes, instead of each element carrying its own geometry and intersection points. An STRtree finds candidate overlaps, and wall centerlines use a robust oriented bounding box. This prevents floating-point errors between elements that should touch.
- Rebuilt
JoistArrayModel: joists are laid out in "stations" along the prototype.- A joist that lands in a gap between supports moves to the nearest location with valid supports, or is dropped with a warning.
- Trib areas are bands between neighbouring joists, so there are no gaps in trib area.
- An abrupt change in span along an array gives a warning suggesting a separate joist prototype.
- Prototypes tilted past vertical no longer get backwards arrays or cantilevers projected into the span.
- New
joist_containermarkup: draw a polygon around a joist prototype and give it a legend entry whoseTypecontains "container". Joists in the array are clipped to the container, so both cantilevers and backspans can vary along the array. - Dashed line types: dash patterns in PDF annotations are now read, so a dashed legend entry is its own line type and no longer gets mixed up with a solid entry of the same colour and weight.
plot_annotations()draws dashed lines dashed.
Fixes
- Joist arrays that previously dropped joists, such as the triangular array in the resi dormers test drawing, are now complete.
- A short intermediate beam under a single joist no longer moves that joist off its bearing.
- Point load locations on walls are now correct.
What's Changed
- Chores/kill excess deps by @connorferster in #136
- Node canon/design document by @connorferster in #139
- Rebuild JoistArrayModel on stations and canonical nodes; add joist_container; remove CollectorTribModel by @connorferster in #140
- feat: read PDF dash patterns as line types and plot them by @connorferster in #141
- chore: bump version to 0.22.0 by @connorferster in #142
Full Changelog: v0.21.0...v0.22.0