Inside of a report, you can insert dynamic expressions. Each dynamic expression has a formula inside, where you will perform calculations, assign constants, and create functions. Regular text won't do these things. If you type in 2+2, nothing happens.
A dynamic expression looks like this:
The input section of an expression is highlighted in blue, and the calculated section is in purple.
Dynamic expressions can be inserted using the [insert tool] or by typing the equals sign into the report.
If you want an equals sign, but not an expression, press esc after the expression opens. Also, the auto insert functionality for dynamic expressions can be turned off using the button in the toolbar.
To edit an expression, double click the highlighted area. You can also select the expression by moving over it with the arrow keys and pressing the spacebar.
If there is an equals sign in the text that is not an expression, Blockpad will highlight the surrounding text in green to suggest it as an expression.
If you see this highlighted text, there are no calculations happening. If you want this text to calculate, right click the green highlighted area and select text to expression.
This functionality can be turned off or on using the button in the right of the toolbar.
Number values in Blockpad can have units.
To assign a unit, simply type the unit text after the number. The unit text must be the same as what is stored in the Blockpad library, but Blockpad will often autocorrect to what is intended. The dropdown selection will also help.
The calculation will track the units and convert along the way as necessary.
To convert a value to a different unit, type "to" and the desired unit.
The end view hides the "to ft", but you see the result.
This will often need to be done at the end of a long calculation with many units, because the formula will not always cancel out units unless you ask it to.
If units are incompatible, the expression will calculate, but it will show a question mark as the unit and an error on the expression.
In Blockpad, formula results are always stored in the file as values. These values can be given names so that you can reference them in other formulas.
Values are created with calculations or just typing the value into the formula.
You can reference values with no name. Blockpad will create the name for you. If you try to reference a value using copy reference or click functionality (see "Referencing a Constant" below), then Blockpad will auto-assign a name to that value. In this case, 30 deg is value3 and 11 ft is value4.
Values inside of spreadsheet cells are a special case of this because you can reference the value in a cell using the cell reference (e.g B11 or AA4). In this case, the value doesn't need a name, it is referenced using it's location in the spreadsheet.
Values can also be text. To create a text value, be sure to use quotation marks (") or apostrophes (') to begin and end the text.
There are three ways to use a value in a dynamic expression.
There are a few good things to know about creating value names.
If the same name is used more than once in a frame, then Blockpad will show an error if that name is referenced anywhere.
If a value is renamed, then all references to that value will update to show the new name. The reference won't be broken.
There are a few built-in number values: pi, e, and i
You can use the properties window to show and hide different parts of a dynamic expression.
You can show and hide
You can also choose to view the expression as multiple lines and turn the math layout off.
To do so, open the properties window (Edit->Properties, or right click -> Properties, or press f4), select the expression, scroll to the bottom of the window, and under Formula, toggle what you want to show or hide.
In Blockpad, you can use functions inside of formulas, just like in a spreadsheet cell. There are a lot of built in functions, but it is also easy to make your own functions, which we'll go over later in this section.
There are basic math functions.
There are also logical functions.
The expression above uses the if() function. When you edit it, it looks like an if function in a spreadsheet.
A quick note on logical functions: to test if something is equal, a double equals sign is used. This is to distinguish testing equality from assigning value names and performing calculations.
Some functions are only used with tables and spreadsheets, like lookup functions.
Functions will track units.
There is an error in the last example because units are incompatible
And functions that require angles are unit sensitive.
Defining a function in Blockpad is simple and a very powerful way to limit rework.
To define a function, you specify the function name, the function variables, and the calculation. These are defined in a specific way. Let's look at the sample below
Here, "hypotenuse" is the function name, "a" and "b" are the function variables, and Sqrt(a^2+b^2) is the calculation. Now hypotenuse() is defined as a function and can be used in calculations.
Here are the basic steps to writing a function:
Using a defined function is very similar to referencing a value: clicking, copy reference, or typing the name in all work. Then you proceed like a normal built-in function, with parentheses and typing in values for the function variables.
A few things to keep in mind:
Blockpad formulas also support arrays, vectors, and matrices. Many of the built-in functions are matrix compatible as well.
In Blockpad, these "matrices" are called arrays. Arrays, can have any type of values: text, numbers, even more arrays.
When doing numerical calculations, a 1-dimensional array with only numbers is called a vector, and a 2-dimensional array with only numbers is called a matrix.
To create an array in a formula, brackets are used. Brackets [ ] specify the start and end of the array. commas (,) separate members of one row into columns, and semi-colons (;) specify the end of a row. For example, [11, 22, 33; 22, 33, 11; 33, 11, 22] typed into a formula produces the matrix below.
Arrays can also be created by referencing a group of cells from a spreadsheet or table. In this case, the array will update with the table.
Array values can have names, just like normal number and text values.
And matrix calculations can be performed just like regular calculations.
If a matrix calculation can't be completed, then you will get an error.
And of course, matrices support number values with units.
And unit tracking.
Functions work with arrays too. Some treat the array like a list or a group of spreadsheet cells.
And some treat the array as a matrix.
You can also reference an array for lookup functions.
Blockpad supports complex numbers in a very simple way. Simply use the letter i to denote the imaginary number inside of a dynamic expression. The square root of a negative number will also produce i.