Assemblies Coming
ComingThis feature is designed but not in DimSum yet. This page describes how it will work.
An Assembly is an ordered stack of material layers built around a reference plane, with dynamic material slots and constraints, that turns one drawn line or area into a complete floor, wall, roof, ceiling or slab build-up with quantities and 3D.
Overview
Inspired by BIMsmith Forge's assembly builder, a DimSum Assembly describes what a thing is made of and where each layer sits. A floor might be "1/2" drywall – Elevation Line – joists – 3/4" subfloor + glue". Attach it to an Area tool, draw the floor, and you get joists, sheets, glue and drywall with the counts your layer formulas define, stacked at correct elevations in 3D.
Assemblies are the #1 priority. Assemblies should be well-built tools, designed in a BIM Forge manner, so they're easy to understand and easy to create. In practice that means: an assembly is a tool with a visual, to-scale layer stack on top, not a separate expert system. Everything in it (layer quantities, waste, rounding, pricing) uses the same formulas, lists and parts as the rest of DimSum.
Two things make assemblies dynamic:
- Material slots: a layer whose material is chosen per instance from a filtered list (Joist Material → 2x10, 2x12, TJI 230 11 7/8", open-web 14"). Change the slot and the stack re-flows.
- Constraints: rules like stack (each layer starts where the previous ends), fill cavity (insulation = stud depth) or a formula, so changing one layer updates the rest.
Assemblies work for any trade: framing floors and walls, roofing build-ups, concrete slabs on gravel with a vapor barrier, or custom stacks.
Where to find it
- Tool Designer → Assemblies (the Assembly Designer).
- Tool Settings dialog → Assembly tab (per instance: slot dropdowns and layer on/off toggles).
- Properties panel and Estimating tab: layers are listed under the instance with their quantities.
- Tools panel → DimSum Defaults → Assemblies: Floor, Wall, Roof, Ceiling and Slab examples.
How to use it
Build an assembly
- Tool Designer → Assemblies → New. Pick the Assembly Type (Floor, Wall, Roof, Ceiling, Slab/Foundation, Deck, Custom).
- Click + Add layer for each component. For each layer set:
- Function (Structure, Substrate, Insulation, Membrane, Finish, Air gap, Accessory)
- Material (from the Materials Library), or click + Add slot to make it a dynamic slot with a filter and a default
- Thickness and Side (above/below or exterior/interior of the reference plane)
- Generation rule (Continuous, Framed members, Linear, Count, Formula)
- Constraint (Stack, Fill cavity, Match, Offset, Fixed, Formula, Conditional include)
- Qty formula: every layer gets an editable default (e.g. area ÷ coverage × (1 + Waste %)); you decide whether it rounds (
RoundUpin the formula), and a List Match — an Advanced Part — decides the exact product
- Drag layers to reorder, and drag the Reference Plane to any boundary in the stack.
- Watch the section preview (to scale, dimensioned per layer, reference plane highlighted) and the summary: total thickness, total R-value, weight per sf, cost per sf/LF, fire/STC.
- Try it on the Tools Playground (draw a 24' × 14' floor, or type Area 1,000 sf in the sample boxes) and check the quantities.
- Save to a
.tsumlibrary and attach it to a compatible tool (Wall, Floor, Roof).
Use an assembly in a project
- Arm a tool with an attached assembly (e.g. "Floor System A") and draw.
- Double-click the instance → Assembly tab.
- Pick slot materials from the dropdowns (e.g. Joist Material = 2x12) and toggle layers on/off (e.g. no ceiling drywall below).
- Click OK. Quantities, the Estimating tab, reports and 3D all update.
Options & settings
Structure
| Concept | Meaning |
|---|---|
| Assembly Type | Floor, Wall, Roof, Ceiling, Slab/Foundation, Deck, Custom. Sets the base tool: Wall → Linear / face Area; Floor/Ceiling/Slab → Area; Roof → Pitched Area; Custom → any |
| Reference Plane | The line layers are positioned against: the Elevation Line (floors/roofs/ceilings) or the Wall Plane (walls). Can sit at any boundary in the stack |
| Layer | Function + material (or slot) + thickness + side + generation rule |
| Layer Function | Structure, Substrate, Insulation, Membrane, Finish, Air gap, Accessory (no thickness: glue, nails, tape, labor) |
| Material Slot | A layer whose material is chosen per instance from a filtered list, with a default |
| Generation rule | Continuous (area/sheet goods), Framed members (studs/joists at O.C., using the Joist/Wall behaviors), Linear (plates, rim, blocking rows), Count (hangers per member), Formula (anything) |
Constraints
| Constraint | Example |
|---|---|
| Stack (default) | Each layer starts where the previous one ends. Changing a thickness shifts everything beyond it. |
| Fill cavity | Insulation thickness = framing layer depth, located inside the framing layer |
| Match | Thickness/width = another layer's (= {Layer > Studs > Depth}) |
| Offset from plane | A fixed offset (e.g. furring 3/4" off the plane) |
| Formula | Any expression (IF({Layer > Joists > Depth} > 11.875, 1 1/8", 3/4")) |
| Conditional include | A layer only if a checkbox/property is true (e.g. "Ceiling drywall below?") |
| Slot filter | The materials allowed in a slot, plus the default. A material is a row of an imported list, and the list's columns are its fields, so a slot filters on those columns or on which list a material came from. How a slot filters is to be designed Coming — see Materials Library. |
Layer properties in formulas
{Layer > Subfloor > Qty}, {Layer > Studs > Depth}, {Layer > Joists > Material > E}. See Property System.
Examples
Framing: floor assembly (plan example)
Listed bottom to top, reference Elevation Line at the bottom of the joists. This matches the new level elevation model: the level's elevation is the top of its supporting structure (e.g. the top of the foundation), and the floor system sits on top of it.
▲ up
│ + Subfloor Glue Accessory qty = RoundUp({Layer > Subfloor > Qty} / 4, 0)
│ 3/4" T&G Subfloor Substrate +{Joist Depth} → +{Joist Depth}+3/4" (Continuous, 4x8 sheets)
│ {Joist Material} ◆slot Structure 0 → +{Joist Depth} (Framed @ {O.C.})
│══════════ Elevation Line (reference plane) ══════════
│ 1/2" Sheetrock Finish 0 → −1/2" (Continuous, ceiling below)| Joist slot | Joists | Subfloor | Total thickness |
|---|---|---|---|
| 2x10 (9 1/4") | 0 → +9 1/4" | +9 1/4" → +10" | 1/2 + 9 1/4 + 3/4 = 10 1/2" |
| 2x12 (11 1/4") | 0 → +11 1/4" | +11 1/4" → +12" | 1/2 + 11 1/4 + 3/4 = 12 1/2" |
Switching 2x10 → 2x12 moves the subfloor up 2" automatically (Stack), the sheet count stays the same, joist quantities re-match, and 3D updates.
Moving the reference plane to the top of the subfloor (so top of subfloor = level elevation): subfloor 0 → −3/4", joists −3/4" → −10", drywall −10" → −10 1/2" (with 2x10).
On the Playground, a 24' × 14' floor (336 sf), 2x10 @ 16" (the RoundUp and 10% waste below are written in the layers' own formulas):
- Joists: 288" ÷ 16" = 18 spaces, members on both edges = 19 (the Joist tool's Member at Start Edge, Member at Far Edge and Layout Start decide this — properties of the tool where the older design had a Layout Preset; see Joist & Rafter tools)
- Subfloor: RoundUp(336 × 1.10 ÷ 32) = RoundUp(11.55) = 12 sheets
- Glue: RoundUp(12 ÷ 4) = 3 tubes
- Drywall below (4×12): RoundUp(336 × 1.10 ÷ 48) = RoundUp(7.70) = 8 sheets
At 1,000 sf the same assembly gives subfloor RoundUp(1,100 ÷ 32) = RoundUp(34.4) = 35 sheets and glue RoundUp(35 ÷ 4) = 9 tubes.
Framing: wall assembly (plan example)
Wall Plane = exterior face of studs (default for exterior walls):
EXTERIOR ◄──────────────────────────────── ► INTERIOR
Siding (face tool / optional layer) │ 7/16" OSB │ ║ WALL PLANE ║ 2x6 Studs @16" ◆slot + R21 Batt (fills cavity) │ 1/2" GWB
+{Sheathing}+{Siding} +7/16" 0 0 → −5 1/2" −5 1/2" → −6"- Exterior sheathing sits outside the wall plane, studs + insulation inside, drywall on the far side.
- Fill cavity: insulation thickness follows the stud slot: 2x4 → 3 1/2", 2x6 → 5 1/2". The default R-value material can swap accordingly (optional rule).
- Elevation faces: siding drawn on an elevation page stacks outside the exterior layers. Face Offset defaults to the total exterior layer thickness (here 7/16"), so siding sits on the sheathing, not inside it.
- Total wall thickness (without siding): 7/16 + 5 1/2 + 1/2 = 6 7/16".
- The framing layer's O.C. places studs for 2D/3D; the purchasable stud, plate and header counts are your own layer formulas or parts (nothing is hard-coded; see Wall tools).
Roofing: roof assembly (illustration)
Roof → Pitched Area, reference plane = top of rafters:
| Layer | Function | Position | Rule |
|---|---|---|---|
| Architectural shingles | Finish | on top of underlayment | Continuous (bundles, 3 per square) |
| Synthetic underlayment | Membrane | on top of sheathing | Continuous (rolls) |
| 7/16" OSB | Substrate | 0 → +7/16" | Continuous (4×8 sheets) |
| Rafter Material ◆slot | Structure | 0 → −[Rafter Depth] | Framed @ O.C. (Pitched Joist behavior) |
Continuous layers use the plane's sloped area, so a 469.57 sf plane at 6/12 gives RoundUp(469.57 × 1.10 ÷ 32) = 17 sheets of OSB.
Concrete: slab-on-grade assembly (illustration)
Slab → Area, reference plane = top of slab (level elevation 0'):
| Layer | Function | Position | Quantity on 1,200 sf |
|---|---|---|---|
| 4" concrete | Structure | 0 → −4" | 1,200 × 4/12 ÷ 27 = 14.81 cu yd |
| 10 mil vapor barrier | Membrane | at −4" | RoundUp(1,200 × 1.10 ÷ 1,000) = 2 rolls |
| 4" gravel base | Substrate | −4" → −8" | 1,200 × 4/12 ÷ 27 = 14.81 cu yd |
Make the concrete a slot (4" / 5" / 6") and the gravel moves down with it (Stack).
Tips & shortcuts
- Put the reference plane where your plans dimension from: bottom of joists or top of subfloor for floors, stud face for walls.
- Make anything that changes job to job a slot (joist size, stud size, slab thickness); keep fixed items as plain layers.
- Use Accessory layers for zero-thickness items (glue, nails, tape, labor) tied to a layer's Qty.
- Use Conditional include for optional layers ("Ceiling drywall below?") instead of separate assemblies.
Rules, limits & edge cases
- An assembly attaches only to compatible base tools (e.g. a Wall assembly can't go on a Point tool).
- The assembly and its slot choices are per instance; shapes can't choose different assemblies.
- Turning a layer off removes its quantities and its 3D solid, and Stack re-flows the layers beyond it.
- A framing slot can be set to "By Others – Engineered Layout" so it uses a truss/I-joist layout's spacing, depth and elevations while pricing members as supplied by others (Engineered Layout Overlays).
- A non-planar roof plane follows the Pitched Area rules (fit best plane / triangulate) before layers are built.
- Deck is an Assembly Type, but there's no deck tool: decks are Joist + Beam instances with treated material.