User Guide
07.5 · Formula Engine

Project Parametrics

A Project Parametric is a named variable scoped to a project and accessible from any formula in that project. They are also called parametrics in the UI.

When to Use

  • Values that appear in many formulas: #labour_rate, #inflation, #floor_area.
  • Project assumptions that might change: #contingency_pct, #overhead_factor.
  • Computed roll-ups you want to reference elsewhere: a Live define that always equals the current total direct cost.

Types of Define

TypeMeaning
NumberPlain numeric constant.
FormulaAn expression evaluated on use.
LiveA computed value drawn from project aggregations. Read-only from formulas.
StringText (rarely used in math).
Boolean0 / 1.
DateSerial date.

Live examples built into TX1:

  • #dc_total — current Direct Cost total.
  • #oh_total — current Overhead total.
  • #gross_total — current Sell Total.
  • #carbon_total — total carbon emissions.

Creating a Define

  1. Open the Parametrics panel.
  2. Click New Define.
  3. Name (letters, digits, underscores — no spaces).
  4. Type.
  5. Value (for Number/String/Date) or expression (for Formula).
  6. Optional description and formatting.

Referencing

= #labour_rate * Qty
= [LABOUR_RATE] * Qty         // equivalent

Live Defines

Live defines are recomputed after every change to the underlying aggregation. They cannot be edited — attempting to set one returns an error.

Modifying From a Formula

Use SET(#name, expression) to update a define mid-formula:

= SET(#running_total, L5 + #running_total)

The VariableChanged event then notifies every formula that references #running_total and they re-evaluate.

Deleting a Define

Deleting a define fails if any formula still references it. GetParametricUsageAsync returns usage sites — inspect these before deleting.

Scope Hint

Every define has a Scope field:

  • Global — available everywhere in the project.
  • DirectCostBreakdown / OverheadBreakdown / ResourceBreakdown — scoped to a specific entity (see 07.6).

Project parametrics are always visible; scoped parametrics only exist inside their scope.

Best Practices

  • Name defines in snake_case.
  • Prefix with a category: rate_…, qty_…, pct_….
  • Add a description — future-you will thank you.
  • Freeze the define's value during tender submission (lock the project).