docs / panels / Family Table

Family Table

A family is a part that comes in many sizes: socket head cap screws M3 to M6 in several lengths, a bracket in five widths. You model it once, as a .fbrep family seed whose sizes are driven by expressions, and you list every size in the family's table. Each row of the table is one member, a normal part that Generate writes out as <part number>.nbrep.

The Family table dock tab is where you edit that table. It works like a spreadsheet.

A twelve-row socket head cap screw family, with the one value that does not evaluate hovered

When it is on screen

It is on screen exactly while the document you are editing is a family seed (.fbrep), whatever workbench you are in. A normal part (.nbrep) or a template (.tbrep) does not show it.

The columns

ColumnWhat it holds
#The row number, and a mark showing whether the member's file exists: it exists beside the family, it has not been generated. There is no mark while the family has never been saved, or while the part number cannot be a file name.
Part numberTyped by you. It is the member's file name (<part number>.nbrep), so it must be a valid file name and unique in the table.
RevisionThe member's revision, kept for the PLM. It does not affect the file name.
DescriptionFree text. Generate writes it into the member's part attributes.
one per expressionThe value this member gives that expression, as expression text: 12, d * 2.5, Math.max(d, 4).

The line above the table names the model's expressions that are not yet columns.

A blank expression cell means "use the model's own definition". It shows that definition dimmed, and hovering it says so. To change it for this member, type a value.

Adding and arranging

Editing cells

Click a cell to select it. Then:

KeyDoes
Arrow keysMove the selection
Tab / Shift+TabMove right / left, wrapping to the next or previous row
TypingStarts editing the cell, replacing its text
Enter, F2, double clickEdit the cell's current text
Delete / BackspaceClear the cell
Ctrl+CCopy the cell
Ctrl+VPaste (see below)

While you are editing a cell, Enter commits it and moves down, Shift+Enter commits and moves up, Tab and Shift+Tab commit and move sideways, ↑ and ↓ commit and move, and Escape discards the edit. Clicking somewhere else also commits it.

Each committed cell is one step for Undo (Ctrl+Z) and Redo. So is each row or column operation and each paste. Any of them marks the tab as unsaved. The table is saved inside the .fbrep file.

Pasting from a spreadsheet

Families are often laid out in a spreadsheet first. Copy a block of cells there, select a cell here and press Ctrl+V:

The whole paste is one undo step. Copy table puts the whole table on the clipboard as tab-separated text with a header row, ready for a spreadsheet. Pasting that text back gives the same table.

Previewing a row on the model

Each row starts with an eye. Click it to see that member on the model: the displayed part rebuilds with the row's values, worked out exactly as Generate would write that member.

Previewing BOLT-30: the row is highlighted, and the card over the view says so

A row that does not evaluate: the display is kept, and the card says why

Measurements and exports taken while previewing are of what is shown: the previewed row. The card says so, the Export dialog warns in orange (Previewing BOLT-20: STEP, IGES, meshes, drawings and flat patterns export BOLT-20…), and an export raises a notice naming the row. The .nbrep recipe export is the document, so it keeps the family's own values.

Problems, as you type

A cell with a problem is tinted red and flagged in its corner. Hover it for the reason. The count of problems is under the table.

Two rows with the same part number: both cells say so

These checks are the same ones Generate makes. They check expressions only. A row can evaluate cleanly and still make geometry that fails, for example a head too large for the sketch it sits on. The member then shows that feature error when you open it.

Generate

Generate writes every row as its own part, <part number>.nbrep, in the family file's folder. A cell you are still typing in is committed first. The family must have been saved, so that it has a folder.

Afterwards the table gains a Result column, left of the part number, with one outcome per row (hover it for the reason):

The counts are under the table (Last Generate: … written, … skipped (unchanged), … failed), and the rows that were skipped or failed are listed in full below them, failures first. One failed row does not stop the others. The / marks update to show which members now exist.

The table after Generate

Members are not released by Generate. You release each one separately.

Automation

The pane publishes its state as __brepFamily (the table, selection, problems, member marks, last report, and preview: the row previewed, whether its values are applied, what the view shows, and the message for a row that does not evaluate) and its widget rects under family: (listed by brep://widgets). A script pastes a block with the paste command, which delivers the text the way Ctrl+V does.