Skip to content

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 ​

  1. Tool Designer → Assemblies → New. Pick the Assembly Type (Floor, Wall, Roof, Ceiling, Slab/Foundation, Deck, Custom).
  2. 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 (RoundUp in the formula), and a List Match — an Advanced Part — decides the exact product
  1. Drag layers to reorder, and drag the Reference Plane to any boundary in the stack.
  2. 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.
  3. 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.
  4. Save to a .tsum library and attach it to a compatible tool (Wall, Floor, Roof).

Use an assembly in a project ​

  1. Arm a tool with an attached assembly (e.g. "Floor System A") and draw.
  2. Double-click the instance → Assembly tab.
  3. Pick slot materials from the dropdowns (e.g. Joist Material = 2x12) and toggle layers on/off (e.g. no ceiling drywall below).
  4. Click OK. Quantities, the Estimating tab, reports and 3D all update.

Options & settings ​

Structure ​

ConceptMeaning
Assembly TypeFloor, 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 PlaneThe line layers are positioned against: the Elevation Line (floors/roofs/ceilings) or the Wall Plane (walls). Can sit at any boundary in the stack
LayerFunction + material (or slot) + thickness + side + generation rule
Layer FunctionStructure, Substrate, Insulation, Membrane, Finish, Air gap, Accessory (no thickness: glue, nails, tape, labor)
Material SlotA layer whose material is chosen per instance from a filtered list, with a default
Generation ruleContinuous (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 ​

ConstraintExample
Stack (default)Each layer starts where the previous one ends. Changing a thickness shifts everything beyond it.
Fill cavityInsulation thickness = framing layer depth, located inside the framing layer
MatchThickness/width = another layer's (= {Layer > Studs > Depth})
Offset from planeA fixed offset (e.g. furring 3/4" off the plane)
FormulaAny expression (IF({Layer > Joists > Depth} > 11.875, 1 1/8", 3/4"))
Conditional includeA layer only if a checkbox/property is true (e.g. "Ceiling drywall below?")
Slot filterThe 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 slotJoistsSubfloorTotal 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:

LayerFunctionPositionRule
Architectural shinglesFinishon top of underlaymentContinuous (bundles, 3 per square)
Synthetic underlaymentMembraneon top of sheathingContinuous (rolls)
7/16" OSBSubstrate0 → +7/16"Continuous (4×8 sheets)
Rafter Material ◆slotStructure0 → −[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'):

LayerFunctionPositionQuantity on 1,200 sf
4" concreteStructure0 → −4"1,200 × 4/12 ÷ 27 = 14.81 cu yd
10 mil vapor barrierMembraneat −4"RoundUp(1,200 × 1.10 ÷ 1,000) = 2 rolls
4" gravel baseSubstrate−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.
Planbase Estimating LLCDimSum Takeoff
Sheet titleAssemblies
SectionSmart framing tools
StatusComing
ScaleNTS
Sheet29 / 57

DimSum Takeoff by Planbase Estimating LLC · Kansas City, Missouri