Blast groups let you tag holes by a predicate — a formula that returns true or false for each hole. The formula is entered in the Formula field of the Assign Group dialog. Holes where the expression is true become members of the group.
This is the blast group formula engine. It shares the fx: prefix with charging and print templates but is not the same evaluator. Do not use print functions (sum, groupTable, mapView) or charging functions (ppvKG, massLength, chargeBase) here.
See the Formula Engine hub for all three engines.
Always write fx: for new predicates (for example fx:holeLength < 2). Legacy = is still accepted internally but should not be used — spreadsheets may misinterpret a leading =.
The result must be boolean. If the formula has a syntax error or unknown variable, Kirra shows an error and the group is not created or updated.
Each hole is evaluated with its own properties. You can use formal names or short aliases.
| Variable | Meaning |
|---|---|
holeLength / holeLengthCalculated |
Collar-to-toe length (m) |
holeDiameter |
Diameter (mm) |
holeType |
Hole type string |
holeAngle, holeBearing |
Angle (° from vertical), bearing (°) |
benchHeight, subdrillAmount, subdrillLength |
Bench and subdrill (m) |
burden, spacing |
Pattern metrics (m) |
startX, startY, startZ, endX, endY, endZ, gradeZ |
Coordinates / grade Z |
timingDelayMilliseconds |
Hole delay (ms) |
measuredLength, measuredMass |
Measured values |
| Variable | Meaning |
|---|---|
holeColour |
The colour the hole is drawn in, lower-case #rrggbb. Empty when the hole is on auto |
holeColourMode |
"fixed" when the hole has a colour of its own, "auto" when it takes the theme colour |
delayColour |
The delay / connector colour — a different thing from holeColour |
holeShape |
"circle", "triangle", "square", "cross" or "diamond" |
A hole carries two colours. holeColour is the collar glyph you see on the canvas; delayColour is the swatch the ties and delay text take, set by the Delay Colour control. Searching one will not find the other.
A hole left on auto takes the theme’s contrast colour — white on a dark background, black on a light one — so it has no colour of its own and holeColour is empty. Ask for those by mode, not by colour:
fx:holeColourMode == "auto"
fx:holeColourMode == "fixed" && holeColour == "#ff0000"
holeShape always answers what the hole is drawn as. A hole that has never been given a shape stores nothing and is drawn as a circle, so fx:holeShape == "circle" finds it.
Australian spelling. The chips write
colour. The Americancolor,holeColor,holeColorModeanddelayColorstill evaluate, so formulas saved in older projects keep working.
| Alias | Maps to |
|---|---|
length, depth |
Hole length |
diameter |
holeDiameter |
type |
holeType |
angle, bearing |
holeAngle, holeBearing |
bench, subdrill |
benchHeight, subdrillAmount |
shape |
holeShape |
colour |
holeColour |
delay |
timingDelayMilliseconds |
rowID, posID |
Row / position IDs |
If a name is not recognised, fix the spelling or use a formal name from the table above.
< > <= >= == !=&& || !( )fx:holeType == "Production" (quote string literals)This engine exposes no functions — only operators on variables. Use && and || for combining conditions (not print-template string & concatenation).
fx:holeLength > 2
fx:subdrill <= 0
fx:holeType == "Production"
fx:holeType != "Batter"
fx:diameter == 115 && length > 8
fx:burden >= 4 && (spacing >= 5 || spacing < 10)
fx:(type == "Production" || type == "Presplit") && depth < 3
fx:holeType == "Production" && burden >= 4.5
fx:depth < 3
fx:holeShape == "triangle"
fx:holeColour == "#ff0000" && holeType == "Production"
fx:holeColourMode == "auto"
| Symptom | Likely cause | Fix |
|---|---|---|
| Error dialog, group not saved | Syntax error or unknown variable | Check parentheses and variable names |
| No holes selected | Wrong type comparison (number vs string) | Quote holeType and similar strings |
Used sum() or ppvKG() |
Wrong engine | Use Print Formula Reference or Deck Builder Formula Guide |