In Blockpad, frames are the things you do work in. Frames contain objects, and different frames contain different types of objects. The 3 important frames are Reports, Spreadsheets, and 2D Drawings, which all can be top level frames
Frames don't have to be top level though. In Blockpad, you can insert certain frames into certain other frames.
For example, you can insert a table into a report, using the insert button.
Now, there is a table frame inside of this report frame. The table is fully functional as a spreadsheet, with live calculations and everything. This table is considered to be a frame, but not a top level frame.
You can name tables or any other subframe in the properties window. Open the properties window, then find "Name" at the top under "Object" and click to edit the name.
You can also insert a 2D Canvas into a report, using the same insert tool.
You can have frames inside of a spreadsheet or table too, but the process is a little different. Here, you change a cell property, and then that cell becomes a frame.
Select a cell, and under "Object" in the properties window, change cell type from "Value Cell" to "Multiline". Now this cell is a Multiline cell, which is considered a frame. Here you can do anything that can be done in a report, including inserting more frames.
Information can be shared between frames. If there is a number value or a function that is defined in one frame, you can use it in another frame.
You can do so using the same methods described in Referencing a Value: clicking, copy reference, and typing the name.
It isn't necessary to understand the value container system in Blockpad, since you can always use copy reference or click on a value to reference it in a formula (see Referencing a Value). However, it can be helpful to understand how it works, so a brief explanation will be given here.
In Blockpad, values are stored in value containers. All frames are value containers, but sections can also be value containers. When you create a value inside of a value container, then it is stored in that container.
Value containers can also hold other value containers. So, containers can be inside of other containers, in the same way that frames can be inside of frames.
To reference values from different value containers, a dot notation is used. Below is the basic layout for dot notation to reference a value inside of the same file.
You can always use this full name to reference a value, but it isn't always necessary. In the picture below, the values are being referenced from the top level frame.
However, the reference name must be started after the closest shared container between the referenced value and the container you are referencing from. In other words, the reference name must begin directly after the first shared parent container.
So, if a value is defined in the same container, only ValueName is needed for the reference.
If a value is defined in a container below, then SubContainer and ValueName are needed.
If a value is defined in the container above, then only ValueName is needed.
If a value is defined in a different sub container under the same container then only SubContainer and ValueName are needed.
If a value is defined several sub containers below, then all of them must be named.
Because cell C1 is a multiline cell in Table7, it is considered a value container. And because the table in C1 is the first in that frame, it is auto-named Table1.
If a value is defined in a different top level frame, then the full reference name must be used.
It's good to keep value containers in mind when naming new values, because duplicate names generate an error in Blockpad. Anywhere that only requires ValueName to reference a value should not have a duplicate name.
For example, children containers should not duplicate names from the parent. This will generate an error when referencing that value name from inside the child.
Every frame and most sections are automatically a closed container for every value inside. However, you can change the frame to be an "open container", so that the values inside are shared with the container above it.
Open containers are useful if you want to define values inside a sub frame but reference them in the top level frame without typing a lengthy location.
First select a frame, then open the Properties Window. Under Object, change "Capture Variables" from yes to no. Now the frame is an open box.
If this is done to a top level frame, all of the values in that frame are shared with the whole file, i.e. all other top level frames. If this is done to a sub container, then all the values in that sub container are treated like they're stored in the container above.
In the picture below, Table42 has "Capture Variables" set to no, so the values can be referenced in the frame above without the full location.
It is best to exercise caution with this feature, because it can lead to accidentally using the same value name multiple times, which gives an error.
The 2-D Canvas frame is for making 2-D sketches
To navigate in a top level 2-D Canvas, use the mouse scroll to zoom and the middle mouse click to drag the screen.
You can add dots, lines, circles, arcs, arrows, shapes and more using the toolbar icons and the Draw dropdown. You can change line color and thickness using the [properties window].
You can move and rotate objects using the tools in the toolbar and you can copy items using copy/paste.
To copy and paste using a specific reference point, use ctrl+shift+c. First select the object or objects, then press ctrl+shift+c, then select the desired reference point, then paste.
When creating and moving objects in the drawing, point snapping is enabled by default.
Point snap options can be changed in Draw->Point Snap Options.
You can also add text lines and dimension labels with editable text.
Text lines and dimension labels are very similar to spreadsheet cells, and they can have formulas just like spreadsheet cells. So, if you put an equals sign at the beginning, you can perform calculations and reference, create and name values.
Dimension labels default to the Measurement Scale of the specified length, but you can edit them to have text, calculations, or outside values.
Drawing frames are often useful inside report frames. They give a visual representation of the calculations being performed or the constants being assigned. Plus, drawings can have text and numbers that update with the report calculations
In this example, the drawing displays the actual values that are assigned and calculated. If you change any of the values, then the drawing presents the new numbers.