Designing and outputting lists
Every plug-in with lists works with the same three building blocks – what you learn here applies in Piping 3D just as in Floor Heating or the Block Library:
| Building block | What it defines | Where |
|---|---|---|
| List template | What the list contains: columns, sort order, totals, filter, an Excel template. Every plug-in comes with default templates; your own ones are made in the list layout dialog box. | List options › Design list … |
| List options | Where the list goes: table in the drawing, CSV or Excel file, file name, text height. | "…" next to the button of the list |
| Button of the list | Which parts are read: the whole drawing, one network, the project or the xrefs. | Output page of the plug-in |
Each button (for example Parts list and Bill of materials) has its own options and its own template; both apply to all drawings.
The default lists of the plug-ins
Which parts a plug-in counts and what goes into a row is explained on the page of the plug-in. Here is the overview: the button on the palette and the name of the default template as it appears in the list layout dialog box.
| Plug-in | Button | Default template | One row is … |
|---|---|---|---|
| Piping 3D | Parts list | parts list of the pipes | one part, with item number, sorted by network |
| Piping 3D | Bill of materials | bill of materials of the pipes | one article; pipes with their total length in m, without a count |
| Piping 2D | Bill of materials | bill of materials of Piping 2D | one description per size: pipe lengths, counted elbows, tees, symbols |
| Ventilation 3D | Parts list | parts list of the ductwork | one part, with surface area and weight |
| Ventilation 3D | Bill of materials | bill of materials of the ductwork, also selectable: order list for the duct fabricator | equal parts with count, surface area and weight |
| Drainage 3D | Parts list, bill of materials | parts list and bill of materials of the drainage, also selectable: "… with welds, cuts and protective caps" | one part or equal parts; pipes in meters |
| Openings | Legend, Opening schedule | legend of the openings, opening schedule | equal openings with a number range, or one opening |
| Floor Heating | Loop schedule, Bill of materials | loop schedule, bill of materials of the floor heating | one loop (grouped per manifold) or one material |
| Block Library | Block extract | block extract | equal blocks with count and property fields |
The default templates are named after the plug-in (for example the parts list and the bill of materials of Piping 3D and of Drainage 3D). If your own versions still carry an earlier name, LuaCAD renames them once to the current name when it first reads them (they keep replacing the default template), and so does a button that was assigned one of them.
- Parts list = one row per part. Bill of materials = equal parts in one row, counted or with their lengths added up.
- By default no parts list or bill of materials has the columns row, installation type or status; you can add them in the list layout dialog box.
- By default bills of materials are combined without the system; the check box Separate per system in the list options separates them (Piping 3D, Piping 2D, Ventilation 3D).
- The lists on the isometric sheet are lists of their own: The lists on the sheet.
Outputting a list
Goal: write a list as a file for ordering – here the bill of materials of Piping 3D as an Excel file.
- Output page › "…" next to Bill of materials – the list options open.
- Output: "As a file (CSV or Excel)". File › Format: "Excel workbook (.xlsx)". The file name stays "From the drawing name, with suffix", suffix
_ml, folder empty. OK. - Click Bill of materials (or Per network and click a pipe).
- If a required field is empty on a part, LuaCAD asks first: Output anyway or Show parts.
- LuaCAD writes the file next to the drawing and opens it in Excel.
What else can happen
| Situation | What LuaCAD does |
|---|---|
| Output "Ask every time" (default) | The window "<list>: n row(s) – where to?" with Into the drawing (Enter), Into a file, Cancel (Esc). |
| Output "As a table in the drawing" | The table hangs at the cursor – see The table in the drawing. |
| The drawing has not been saved yet | Instead of the name from the drawing, "Save list as" opens. |
| The file already exists | With the check box "Ask before overwriting a file" (default on) a question. |
| No parts | The command line says so; no file is written. |
The list options
Goal: set once where a list goes and under which name – after that one click on the button is enough.

- Click "…" next to the button of the list (in Piping 3D, Ventilation 3D and Drainage 3D also via gear menu › Options).
- Set the areas from top to bottom.
- OK – the values apply to this button in all drawings.
| Area | What you set | Default |
|---|---|---|
| List | Design list … opens the list layout dialog box; next to it "Template: …". | the default template of the button |
| Combine | Only if the template has switches: for example Separate per system (System column). | off |
| Quantities across several plans | Across the project, across xrefs: combined · per plan · per level (the same choice as in the Select plans dialog box). Not in Openings. | combined |
| Output | As a table in the drawing · As a file (CSV or Excel) · Ask every time. | Ask every time |
| Table in the drawing | Text height in the units of the drawing. | 100 mm |
| File | Format, file name (from the drawing name with suffix and folder · fixed file name · ask every time), delimiter (CSV only), two check boxes. | CSV, from the drawing name, suffix _sl (parts list) or _ml (bill of materials), folder empty = next to the drawing, semicolon, both check boxes on |
Every field in detail: Reference › List options.
The table in the drawing
Goal: place the list as a GstarCAD table in the plan – it stays linked to the parts.

- In the list options set Output to "As a table in the drawing" (or with "Ask every time" choose Into the drawing).
- The table hangs at the cursor – grid, title, header and the first 40 rows at their real size.
- Click the upper left corner. Esc places nothing.
| What the table looks like | |
|---|---|
| Layout | Title row across the full width, header row, the rows; numbers right-aligned. |
| Column width | According to the longest text of the column. |
| Size | The text height of the list options; the title 1.2 times as large. In a drawing in cm or m LuaCAD converts. |
| Layer | "LuaCAD_BES_Listen" (color 7). If it already exists, it stays as you set it up. |
A large table shows a progress window while it is placed; Esc cancels without leaving anything in the drawing.
Out of date and updating lists
Every table remembers which plug-in, which button and which scope it comes from (whole drawing, one network, plans).
- Out of date: if you change parts of the plug-in, LuaCAD recalculates the list after the command and compares it with the table. If it no longer matches, "(out of date – update list)" follows the title; if it matches again (for example after U), the note disappears. The table itself does not change.
- Update: page Output › Update lists (in every plug-in with lists; Openings: Update legend) recalculates the preselected tables – without a preselection all linked tables of the drawing, including those of other plug-ins. Position, layer and text height stay; columns and contents come from the template of now.
- If the recalculated list is empty, the table stays. Update legend of Openings updates its own tables only.
Quantities across several plans
Goal: one list across several drawings – the plans of the project or the xrefs of the open drawing – without opening the plans.

- Output page › Bill of materials across the project … (in a project drawing only) or Bill of materials across xrefs … (Block Library: Extract across …).
- Check the plans in the dialog box. Checked by default: across the project the plans of your own discipline, across xrefs the loaded and hidden xrefs; LuaCAD remembers the selection per drawing.
- Choose the quantities and click Next … (Enter).
- LuaCAD reads the plans (with a progress window, Esc cancels) and outputs the list according to the list options.
| Quantities | Result |
|---|---|
| combined | One row per article across all plans. |
| per plan | In addition the column Plan, one block per plan with a subtotal, the total at the end. |
| per level | In addition the column Level, one block per level with a subtotal, the total at the end. |
How the plans are read
- A plan is never opened in the editor, never saved and never locked. An open plan counts with its state in memory (including unsaved changes), a locked one with its saved state.
- The xrefs of a plan never count – so no level is counted twice. Across xrefs every insertion counts (column Count "×2"), nested ones too; a nested overlay is missing, just as GstarCAD does not show it; the same file in a second place is not checked by default.
- A plan that is missing or cannot be found is gray. If a checked plan cannot be read, Plans not read asks – with Output list a row "Not read: …" follows at the end.
- The title names the scope (project name and number of plans), the command line the result (plans read, number of parts). In a CSV file and in the Excel standard sheet "Read: …" follows below; in your own Excel template the placeholders
{Projekt},{Plaene}and{Fehlende}. - As a table it is out of date as soon as a plan that was read has been saved since (checked when the drawing is opened or switched) or – if the open drawing counts – a part in it changes. The note stays until Update lists, which reads the same plans without the dialog box.
How a project with levels and disciplines is created: Creating a project.
Designing your own list
Goal: set the columns, the order and the totals of a list the way your office needs them – with a preview from the parts of the open drawing.

- List options › Design list ….
- Choose the list at the top. For your own: Copy a default template (or New) and give it a name.
- Search for a property on the left and add it with Add column → (or a double-click); on the right set heading, format and combine, order with the arrows, remove with the trash can.
- In the tabs set groups, totals, sort order, filter and an Excel template. The preview at the bottom recalculates after every change.
- OK – LuaCAD checks and saves; from now on the button uses this list.
Choosing and managing the list
At the top the list box for the button shows all lists of this plug-in; "(default)" marks the ones supplied.
- A default template is never overwritten: if you change one, saving turns it into your own template with the same name that replaces it. Delete on this version brings the default template back (with a question). A default template keeps its name and cannot be deleted.
- New starts with the title
{Liste}and the column Description (bill of materials: plus Count), Copy takes over everything. Both ask for a name. - Export writes the selected list into a
.luacadlistefile, Import reads such a file – this is how you pass a list on in the office. Import still reads a file with the earlier extension.hvliste; it is not renamed. If an imported list has the name of a default template, it replaces it; otherwise a duplicate name gets "(2)". Example: Export of "Material per catalog" suggests the fileMaterial per catalog.luacadliste; a colleague reads it in with Import and has the same list.
Columns
On the left are all properties that the parts of this plug-in have, in groups: parts of all plug-ins (DN, system, length, level, network … – the same in every plug-in), the properties of the plug-in, the property fields, GstarCAD (layer, color …), further fields of the drawing (foreign attributes and data, collected from the open drawing) and Count (sequence number, count). Gray = already in the list. Calculated column … builds a column that calculates (for example Laenge/1000).
| Column of the table | Effect |
|---|---|
| Property, heading | What the column shows and what it is called. |
| Format | For numbers, separated by a colon: a unit (mm, m, m2, kg …), a digit = exactly this many decimals, ~2 = at most two, ohne0 = a zero stays empty. Empty = at most two decimals in the unit of the property. Example m:2: 24350 mm → 24.35. |
| Combine | Only in a combined list: group (equal value = same row), sum, count, first value, minimum, maximum, all values, all values with sequences as ranges ("1-4, 7"). |
| Sum, total text | The sum of this column in the total row, or a fixed text there ({Anzahl} = number of parts). |
| Visible | Off = the column only serves to combine and is not output. |
| Only with values | The column appears only if at least one part has a value. |
| Only when checked | The column applies only with a switch of the list options (see below); "(always)" = always. |
Rows, groups and totals
Tab General:
- Title – with
{Liste}(name of the template),{Zeichnung}(drawing),{Datum}(date). - Rows – "one row per part (parts list)" or "equal parts in one row (bill of materials)". A combined list needs at least one column to group by.
- Content – only if the plug-in supplies more than parts (Piping 3D: welds; Drainage 3D: welds, cuts, protective caps; Ventilation 3D: connectors; Piping 2D: nodes): what goes into the list.
- Total row at the end – the sums of the columns with Sum checked.
- Group by with Subtotals – with every new value of the property a row "<property>: <value>", the subtotal at the end of the group. With a total row, subtotals appear only from two groups on.
Sorting and filtering
- Sort: per row the property, the type (text, natural – "3-2" before "3-10" –, number, character, number or text), descending, empty last, only when checked. The first row counts first; "+" adds one.
- Filter: per row property, condition (is, is not, contains, less than, greater than, is empty, is not empty) and value; with "is" and "is not" several values separated by semicolons, for example
KW;WW. A part goes into the list only if all filter rows apply.
Switches in the list options
A switch of a template is a check box in the list options that turns on columns and sort rows with the same name under Only when checked. That way it stays ONE template: without the check box the list is exactly the one without these columns. The default bills of materials of Piping 3D, Piping 2D and Ventilation 3D have the switch Separate per system (System column): when checked, the system is a column, part of the combination and sorted first.
Excel template
Tab Excel: an Excel file of your own (.xlsx or .xltx) with company header, logo and formulas. LuaCAD copies it; it is never overwritten.
- Template – the file; empty = standard sheet.
.xlsand.xlsmare rejected (they can carry macros). - Sheet – empty = the first one. Start cell – the first data row, for example
B8; empty = below the last used row. - The row of the start cell is the template row: its format and its formulas in columns the list does not fill (
=E8*F8) apply to every row; whatever is below it (totals, signature) moves down, a sum=SUM(E8:E8)grows with it. - Write header row (default on) – off if the template already has the headings.
- Placeholders in any cells:
{Titel},{Liste},{Zeichnung},{Datum},{Uhrzeit},{Anzahl}(parts),{Zeilen},{Bearbeiter}; across several plans also{Projekt},{Plaene},{Fehlende}.
The Excel template takes effect when the list is written as an Excel file; Preview in Excel opens the preview that way right away.
Preview and saving
- The preview shows the list with the parts of the open drawing (up to 300 rows) and above it the title with the number of parts and rows – if the drawing has no parts of the plug-in, it says so; an error of the template is shown there too.
- OK checks (name, one visible column, every column with a property, start cell, Excel template), saves all your own lists and sets the selected one for this button. Cancel discards everything.