- Add model_space_extents() to Scene: collects key_vertices from all
model-space entities to compute an AABB.
- Add auto_fit_viewport() to Scene: sets view_target to model centroid
and derives custom_scale / view_height so the content fits the new
viewport with a 10% margin.
- Call auto_fit_viewport() in commit_entity() after a viewport is added
to a paper-space layout, so newly placed viewports immediately show
model-space content at a sensible scale.
- Scale line_weight_px by the viewport scale factor when projecting
model-space wires into paper space, so dimension arrows and annotation
lines appear at the correct visual thickness.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Viewport ID uniqueness: commit_entity assigns max_existing_id+1
instead of always using id=2
- Lock/On boolean toggles in Properties panel (vp_locked, vp_on)
backed by status.locked / status.is_on fields
- Standard scale Choice picker: 1:500 to 10:1 (also syncs view_height)
- Numeric scale edit now syncs view_height when changed
- Standard view Choice picker: Top/Bottom/Front/Back/Left/Right/4×Iso
updates view_direction vector via apply_geom_prop
- Viewport content not rendered when status.is_on is false
- current_layout_block_handle_pub() added for external access
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>