v1.0.4 — Assembly general-arrangement drawings
General-arrangement / assembly drawings (#50)
DrawingComposer.Composer.render only took a single Shape. Two new overloads produce one GA sheet that lays out multiple parts together with per-component identity:
render(spec:components:)— lays out[DrawingComponent]in shared views (one scale + placement frame → parts sit in assembled positions), draws a numbered balloon per part, and renders a parts-list (BOM) table. SamepartNumber/namemerge into one BOM row with summed quantity; every instance is still drawn. Optional per-componenttransform(12-elt row-major 3×4) positions a part before projection.render(spec:document:)— flattens an XCAFDocumentto its positioned leaf parts and delegates; leaf names drive the parts list.
Reuses upstream OCCTSwift v0.150 BillOfMaterials + Sheet.renderBOM + DXFWriter primitives. DrawingComposerResult gains componentCount + partsList (both defaulted → source-compatible; the single-shape path and the occtkit CLI are unchanged).
Scope: per-view sections/detailViews/dimensions/manual annotations key to one drawing per named view and are not carried into the GA path; auto centrelines/centermarks are applied per component. No cross-component hidden-line removal (each part's HLR is independent).
Tests
First tests for the DrawingComposer module — new DrawingComposerTests target (3): multi-component BOM merge, empty-throws, placement transform.
🤖 Generated with Claude Code