Call a folio a sheet, as the English interface now does (PR #1216)

Prose only: page URLs (folio_links, navigating_folios), image names, code,
XML tag and variable names, and French menu names are unchanged. Readers
arriving from older forum posts are told a sheet used to be called a folio.
Generated by qelectrotech-docker tools/wiki-folio-sheet/rename.py.
ispyisail
2026-10-02 08:06:59 +13:00
parent b4d37b94bc
commit 369484cb02
53 changed files with 456 additions and 452 deletions
+4 -4
@@ -1,7 +1,7 @@
# 3D mouse (SpaceMouse)
A 3Dconnexion 3D mouse — SpaceMouse, SpacePilot, SpaceNavigator and the like —
can pan and zoom QElectroTech's folios and the element editor with one hand,
can pan and zoom QElectroTech's sheets and the element editor with one hand,
leaving the other on the ordinary mouse for drawing. Its buttons can run any
QElectroTech command that has a keyboard shortcut.
@@ -20,7 +20,7 @@ Reports from real devices are welcome there: see §6.
| Tilt | nothing |
| A button | the command you bound to it, if any |
It acts on whichever window is in front: the current folio of the schematic
It acts on whichever window is in front: the current sheet of the schematic
editor, or the element editor's drawing. Zoom stops at the same limits as the
mouse wheel.
@@ -173,7 +173,7 @@ for a line like `QET_ENABLE_SPACEMOUSE ON (backend: hidapi 0.14.0)`.
| Limitation | Detail |
|---|---|
| Pan and zoom only | tilting the cap does nothing; there is no rotation of the folio |
| Pan and zoom only | tilting the cap does nothing; there is no rotation of the sheet |
| Button numbers are raw | there is no "press the button to bind it"; find the number by trying |
| 3DxWare app events | on macOS, only raw button presses are read, not the named actions newer 3DxWare versions send |
| Hardware coverage | tested on the devices reported in discussion #599; other models may need a recording (§6) |
@@ -183,6 +183,6 @@ for a line like `QET_ENABLE_SPACEMOUSE ON (backend: hidapi 0.14.0)`.
## See also
- **[Preferences reference](preferences)** — the other preference pages
- **[Finding your place on a folio](navigating_folios)** — going to a cell, keeping the headers in sight
- **[Finding your place on a sheet](navigating_folios)** — going to a cell, keeping the headers in sight
- **[Keyboard-only control](keyboard_control)** — the commands a button can be bound to
- **[Building from Source](building)** — the full build instructions
+3 -3
@@ -44,13 +44,13 @@
**[Aligning items](aligning_items)** — snap symbols back to the grid, or line them up
**[Pictures on a folio](pictures)** — labels, crop, transparency, what they cost in the file
**[Pictures on a sheet](pictures)** — labels, crop, transparency, what they cost in the file
**[Arcs and curved wires](drawing_arcs)** — the Arc tool, pulling an arc in or out, rounding a corner with a fillet, dashed arcs for lighting layouts
**[Grouping items](grouping_items)** — select, move and copy several items as one
**[Finding your place on a folio](navigating_folios)** — go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan
**[Finding your place on a sheet](navigating_folios)** — go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan
**[Drawing faster](drawing_faster)** — place without dragging, the S shortcut bar, command search, gestures
@@ -62,7 +62,7 @@
**[Building a nomenclature query](nomenclature_query)** — the BOM/summary table builder
**[Linking wires across pages](folio_links)** — folio reports
**[Linking wires across pages](folio_links)** — sheet reports
**[Variables & formulas](variables)** — `%f`, `%{label}`, sequences
+1 -1
@@ -54,7 +54,7 @@ the examples say `python3`.
| Setting | Tools the assistant gets |
|---|---|
| nothing extra | read projects and symbols, compare two versions of a project (`qet_diff`), search the symbol collection, export to PDF/PNG/SVG/DXF and lists |
| `QET_ENABLE_SCRIPTING=1` | also **edit**: place symbols, draw wires, set labels, add folios, check design rules, query the project database |
| `QET_ENABLE_SCRIPTING=1` | also **edit**: place symbols, draw wires, set labels, add sheets, check design rules, query the project database |
Leave `QET_ENABLE_SCRIPTING` out if you only want the assistant to read.
Edits are never saved over an existing file unless the assistant asks for it
+8 -8
@@ -40,7 +40,7 @@ still to come.
### Using it
1. Select the items to fix. **Ctrl+A** selects everything on the folio,
1. Select the items to fix. **Ctrl+A** selects everything on the sheet,
which is the quickest way to tidy a whole page.
2. Choose **Édition ▸ Aligner ▸ Aligner sur la grille** (*Edit ▸ Align ▸
Snap to grid*). The same command is in the right-click menu of the
@@ -61,10 +61,10 @@ what happened:
| Item | Snaps to |
|---|---|
| Symbols | the folio grid, by the symbol's origin point: exactly where dragging it would have dropped it |
| Pictures | the folio grid |
| Free texts | the text grid, the finer step set under **Affichage ▸ Grille des textes** (*View ▸ Text grid*), so a text you placed on a finer step is not pulled onto the coarser folio grid |
| Shapes (lines, rectangles, ellipses, polygons) | the folio grid, by the **top-left corner of the shape as drawn**: a rectangle's corner, the corner of an ellipse's box. The line thickness does not count |
| Symbols | the sheet grid, by the symbol's origin point: exactly where dragging it would have dropped it |
| Pictures | the sheet grid |
| Free texts | the text grid, the finer step set under **Affichage ▸ Grille des textes** (*View ▸ Text grid*), so a text you placed on a finer step is not pulled onto the coarser sheet grid |
| Shapes (lines, rectangles, ellipses, polygons) | the sheet grid, by the **top-left corner of the shape as drawn**: a rectangle's corner, the corner of an ellipse's box. The line thickness does not count |
| Locked items | not moved |
| Wires | follow their symbols, as they do when you drag |
@@ -81,7 +81,7 @@ Items already on the grid stay exactly where they are.
- **No default shortcut.** You can assign one under **Configurer
QElectroTech ▸ Raccourcis** (*Settings ▸ Shortcuts*); the command is listed
in the *Éditeur de schémas* group.
- **The grid is the folio's own grid.** If you changed the grid size in the
- **The grid is the sheet's own grid.** If you changed the grid size in the
preferences, symbols snap to that size.
- **A symbol whose terminals are off the grid inside the symbol itself**
still gives bent wires after snapping. That is a problem in the symbol, not
@@ -148,7 +148,7 @@ the group keeps its shape.
or right, never up or down; *Aligner en haut* never moves anything
sideways.
- **The grid wins.** Every item lands on the grid its drag would have used:
symbols, pictures and shapes on the folio grid, free texts on the text grid. So
symbols, pictures and shapes on the sheet grid, free texts on the text grid. So
aligning never takes a symbol off the grid. The price: two symbols whose
left edges are at different distances from their origin points cannot
both sit on the grid *and* on the same left edge, so one can end up as
@@ -165,7 +165,7 @@ the group keeps its shape.
## See also
- **[Grid size and element size](grid_and_element_size)** — the folio grid,
- **[Grid size and element size](grid_and_element_size)** — the sheet grid,
and why symbols are drawn to it
- **[Mouse modifiers](mouse_modifiers)** — what Ctrl, Shift and Alt change
while you drag or nudge
+9 -9
@@ -45,16 +45,16 @@ qelectrotech --export-pdf myproject.qet out.pdf
| Flag | Output | Notes |
|---|---|---|
| `--export-pdf` | one PDF | all folios, one page each |
| `--export-png` | a directory | one `NN_Title.png` per folio |
| `--export-svg` | a directory | one `NN_Title.svg` per folio |
| `--export-pdf` | one PDF | all sheets, one page each |
| `--export-png` | a directory | one `NN_Title.png` per sheet |
| `--export-svg` | a directory | one `NN_Title.svg` per sheet |
| `--export-bom` | CSV | bill of materials, from the project database — same source as the GUI export |
| `--export-wiring` | CSV | from-to wiring list, one row per conductor — same as menu *Project → Wiring list (database)* / *Export the wiring plan* |
| `--export-cables` | CSV | the same logical list, built from the document XML instead |
| `--export-wires` | CSV | conductor numbers — same as menu *Project → Export the list of conductor names* |
| `--export-nets` | CSV | electrical nets — terminals grouped into potentials |
| `--export-links` | CSV | cross-references, flagging masters and slaves with no link |
| `--info` | JSON | structural dump: per-folio element and conductor counts, unconnected terminals. Writes to **stdout** if no output path is given |
| `--info` | JSON | structural dump: per-sheet element and conductor counts, unconnected terminals. Writes to **stdout** if no output path is given |
| `--resave` | `.qet` | loads and writes the XML back out |
| `--set-titleblock` | `.qet` | stamps title-block fields, then saves |
| `--check-elements` | report | validates `.elmt` files — takes **a file or directory**, not a project |
@@ -156,11 +156,11 @@ than inside it.
Points that trip people up:
- **There is no `<diagrams>` wrapper.** `<diagram>` elements are direct
children of `<project>`, one per folio, ordered by their `order` attribute.
children of `<project>`, one per sheet, ordered by their `order` attribute.
- **`<element>` has no `id`.** It is identified by `uuid`, and its `type`
attribute is a *location*, usually `embed://…` for an element copied into the
project's own collection.
- **`<newdiagrams>` holds the defaults for new folios**, not the folios
- **`<newdiagrams>` holds the defaults for new sheets**, not the sheets
themselves.
- Project-wide element definitions live under `<collection>`, so a project is
usually self-contained.
@@ -216,7 +216,7 @@ exits non-zero on any failure. Put it in CI if you generate `.elmt` files.
It also checks terminal names, with the same rule the element editor applies
on save (see **[Using the element editor](element_editor)** §5): two terminals
of one element sharing a name is a **FAIL**, and terminals without a name are
a **WARN** (folio reports, conductor definitions and thumbnails excepted).
a **WARN** (sheet reports, conductor definitions and thumbnails excepted).
The element editor's setting to turn the check off does not apply here.
```text
@@ -276,8 +276,8 @@ Orientation points, all in `sources/`:
| Class | File | Role |
|---|---|---|
| `QETProject` | `qetproject.cpp` | a project: folios, collection, load and save |
| `Diagram` | `diagram.cpp` | one folio (a `QGraphicsScene`) |
| `QETProject` | `qetproject.cpp` | a project: sheets, collection, load and save |
| `Diagram` | `diagram.cpp` | one sheet (a `QGraphicsScene`) |
| `Element` | `qetgraphicsitem/element.cpp` | a placed symbol |
| `Conductor` | `qetgraphicsitem/conductor.cpp` | a wire |
| `Terminal` | `qetgraphicsitem/terminal.cpp` | a connection point |
+25 -25
@@ -1,6 +1,6 @@
# Auto-numbering
QElectroTech can number elements, conductors and folios for you. There are
QElectroTech can number elements, conductors and sheets for you. There are
**three independent numbering systems**, plus terminal numbering, which is a
fourth thing entirely and works differently.
@@ -8,10 +8,10 @@ fourth thing entirely and works differently.
|---|---|---|
| Element | element labels (`K1`, `Q55`) | Project properties → element auto-numbering |
| Conductor | conductor texts (wire numbers) | Project properties → conductor auto-numbering |
| Folio | the folio field's `%autonum` | Project properties → folio auto-numbering |
| Sheet | the sheet field's `%autonum` | Project properties → sheet auto-numbering |
| Terminal | terminal strip numbering | its own dialog — see §8 |
Each project can hold **several named schemes** per system, and each folio
Each project can hold **several named schemes** per system, and each sheet
chooses which scheme it uses. That is how one project can number power wiring
one way and control wiring another.
@@ -24,7 +24,7 @@ editors; `sources/conductorautonumerotation.cpp` for conductors.
## 1. A scheme is an ordered list of parts
A numbering scheme (a *numerotation context* in the code) is a list of **parts**
joined together in order. `K` + a unit counter gives `K1`, `K2`, `K3`. Folio
joined together in order. `K` + a unit counter gives `K1`, `K2`, `K3`. Sheet
number + `-` + a counter gives `3-1`, `3-2`.
Each part has a type, and sixteen types exist:
@@ -38,9 +38,9 @@ These hold a number and advance. Seven types:
| `unit` | none | plain counter: 1, 2, 3 |
| `ten` | to 2 digits | 01, 02 … 10, 11 |
| `hundred` | to 3 digits | 001, 002 … 010 … 100 |
| `unitfolio` | none | as `unit`, but restarts on each folio |
| `tenfolio` | to 2 digits | as `ten`, per folio |
| `hundredfolio` | to 3 digits | as `hundred`, per folio |
| `unitfolio` | none | as `unit`, but restarts on each sheet |
| `tenfolio` | to 2 digits | as `ten`, per sheet |
| `hundredfolio` | to 3 digits | as `hundred`, per sheet |
| `wrap` | none | wraps back to 0 every *modulus* values |
The `folio` variants are the useful ones for drawings where numbering should
@@ -52,10 +52,10 @@ These take their value from where the element is, not from a counter:
| Type | Becomes |
|---|---|
| `idfolio` | the folio index (`%id`) |
| `folio` | the folio field (`%F`) |
| `plant` | the folio's installation (`%M`) |
| `locmach` | the folio's location/machine (`%LM`) |
| `idfolio` | the sheet index (`%id`) |
| `folio` | the sheet field (`%F`) |
| `plant` | the sheet's installation (`%M`) |
| `locmach` | the sheet's location/machine (`%LM`) |
| `elementline` | the element's row letter (`%l`) |
| `elementcolumn` | the element's column number (`%c`) |
| `elementprefix` | the element's prefix |
@@ -105,7 +105,7 @@ in the order they are defined.
So a scheme with one `string` part (`K`) and one `unit` part, with formula
`K%sequ_1`, produces `K1`, `K2`, `K3`. Changing the formula to
`%f-K%sequ_1` produces `3-K1` on folio 3, without touching the scheme.
`%f-K%sequ_1` produces `3-K1` on sheet 3, without touching the scheme.
A sequence variable whose index the scheme does not define is **left in the text
verbatim**. A label reading `%sequ_2` means the scheme has only one unit part —
@@ -115,7 +115,7 @@ it is not a numbering failure, and nothing warns you.
## 4. When numbering runs
**Elements** are numbered when placed, if the folio has an element scheme
**Elements** are numbered when placed, if the sheet has an element scheme
selected and new elements are not frozen.
**Conductors** are more involved, because a wire number belongs to a *potential*
@@ -131,10 +131,10 @@ selected and new elements are not frozen.
That is why adding one wire sometimes renumbers nothing, and sometimes asks a
question.
> A related subtlety worth knowing: folio variables in a conductor formula
> resolve **per conductor**, not per potential. A potential spanning two folios
> therefore does not get one folio number for the whole potential — each
> conductor resolves against the folio it is drawn on.
> A related subtlety worth knowing: sheet variables in a conductor formula
> resolve **per conductor**, not per potential. A potential spanning two sheets
> therefore does not get one sheet number for the whole potential — each
> conductor resolves against the sheet it is drawn on.
---
@@ -146,24 +146,24 @@ and they are easy to confuse:
| Scope | What it does |
|---|---|
| **Project** — freeze new elements / new conductors | newly placed items are created with their label frozen |
| **Folio** — `freezeNewElement`, `freezeNewConductor` | the same, per folio |
| **Sheet** — `freezeNewElement`, `freezeNewConductor` | the same, per sheet |
| **Item** — freeze label | this one element or conductor keeps its current text |
A frozen label is no longer recomputed. Insert a folio ahead of it, and a frozen
A frozen label is no longer recomputed. Insert a sheet ahead of it, and a frozen
`3-K1` stays `3-K1` while its unfrozen neighbours become `4-K1`. That is the
point of the feature — an issued drawing should not renumber itself — but it is
also why a project can end up with numbers that disagree with their own formula.
---
## 6. Folio auto-numbering
## 6. Sheet auto-numbering
Folio numbering is the odd one out: it feeds a single variable, `%autonum`,
which is only meaningful in the **folio field**. Set the folio field to
`%autonum` (instead of the default `%id/%total`) and the folio scheme decides
Sheet numbering is the odd one out: it feeds a single variable, `%autonum`,
which is only meaningful in the **sheet field**. Set the sheet field to
`%autonum` (instead of the default `%id/%total`) and the sheet scheme decides
what appears.
Note the consequence: `%f`, `%l`, `%c` and `%{…}` do **nothing** in the folio
Note the consequence: `%f`, `%l`, `%c` and `%{…}` do **nothing** in the sheet
field — it understands only `%autonum`, `%id` and `%total`. See
**[Variables & formulas](variables)** §6.
@@ -198,7 +198,7 @@ zero.
empty formula is **not written at all** — so a half-configured scheme silently
disappears on save.
Per folio, `<diagram>` carries `freezeNewElement` and `freezeNewConductor`.
Per sheet, `<diagram>` carries `freezeNewElement` and `freezeNewConductor`.
---
+3 -3
@@ -184,9 +184,9 @@ Arguments are **positional**, not `--flag=value`. The shape is always
| Flag | Output |
|---|---|
| `--export-pdf` | one PDF, all folios |
| `--export-png` / `--export-svg` | a directory, one image per folio |
| `--export-dxf` | a directory, one DXF per folio; see **[DXF import & export](dxf)** |
| `--export-pdf` | one PDF, all sheets |
| `--export-png` / `--export-svg` | a directory, one image per sheet |
| `--export-dxf` | a directory, one DXF per sheet; see **[DXF import & export](dxf)** |
| `--export-bom` | CSV bill of materials |
| `--export-wiring` | CSV from-to wiring list |
| `--export-cables` | CSV wiring list, built from the document XML |
+7 -7
@@ -20,11 +20,11 @@ The Elements panel has two tabs:
| Tab | Shows |
|---|---|
| **Collections** | the element tree — common, custom, company, and anything embedded in the current project |
| **Templates** | reusable diagram fragments ("macros") you drag onto a folio, separate from single elements — see **[Templates](templates)** |
| **Templates** | reusable diagram fragments ("macros") you drag onto a sheet, separate from single elements — see **[Templates](templates)** |
A macro is a saved chunk of diagram content — elements, conductors, whatever
was selected — dropped back in as a group. It is placed by **dragging it onto
the folio**: clicking or double-clicking its name does nothing, which catches
the sheet**: clicking or double-clicking its name does nothing, which catches
people out. It is a distinct mechanism from an element and is covered on its
own page, **[Templates](templates)**; the browsing and folder-management rules
on this page apply equally to both tabs.
@@ -33,7 +33,7 @@ The **search box** at the top filters the current tab as you type.
A search shows one flat list, best match first, instead of the filtered
tree, and **double-clicking** a symbol (or pressing **Enter** on it) places it
on the folio instead of opening the element editor; a preference restores the
on the sheet instead of opening the element editor; a preference restores the
old behaviour. See **[Drawing faster](drawing_faster)**.
---
@@ -157,7 +157,7 @@ select all, invert selection) rather than finding one to place? That's
## 6. Cleaning a project's embedded collection
A project accumulates embedded copies: every element you place is stored inside
the `.qet` file, and deleting the element from a folio does not remove the
the `.qet` file, and deleting the element from a sheet does not remove the
stored definition. Over a long project that adds up.
**Project → Nettoyer le projet** offers three checkboxes, **all ticked by
@@ -165,11 +165,11 @@ default**:
| Option | Removes |
|---|---|
| Unused title block templates | embedded title block templates no folio uses |
| Unused elements | embedded element definitions that no folio places |
| Unused title block templates | embedded title block templates no sheet uses |
| Unused elements | embedded element definitions that no sheet places |
| Empty categories | embedded folders left with nothing in them |
"Unused" is decided by looking at what the folios actually place, so an element
"Unused" is decided by looking at what the sheets actually place, so an element
you deleted from the drawing yesterday counts as unused today.
> **This cannot be undone.** Cleaning does not go through the undo stack — there
+15 -15
@@ -29,13 +29,13 @@ only the relevant half is drawn.
## 2. Where a conductor's settings come from
There are three levels, and they are separate places in the interface. A new
conductor takes the folio default; changing that default does not rewrite
conductor takes the sheet default; changing that default does not rewrite
conductors already drawn.
| Level | Where | Applies to |
|---|---|---|
| Application default | **Preferences → New project** | conductors in projects you create from now on |
| Folio default | the folio's properties dialog | conductors drawn on that folio from now on |
| Sheet default | the sheet's properties dialog | conductors drawn on that sheet from now on |
| One conductor | double-click the conductor, or the **Selection properties** panel (below) | that conductor only |
To change many existing conductors at once, select them and use
@@ -104,7 +104,7 @@ What the fields show:
in Section gives both 1.5 mm².
- A text field they all agree on shows that value.
- Every other field (colours, sizes, checkboxes, alignment) shows the value of
the **first wire**: the one highest on the folio, and of those the leftmost.
the **first wire**: the one highest on the sheet, and of those the leftmost.
- **Texte** (the wire number) is locked while several wires are selected,
since the same number on all of them would make duplicates. To give a whole
potential one number, select one of its wires and tick *Apply to all
@@ -168,14 +168,14 @@ named in the last column.
| Field | What it does | XML attribute |
|---|---|---|
| **Show text** | draw the number, or hide it | `displaytext` |
| **One text per folio** | show the number **once per potential per folio**, on the longest conductor of that potential, and hide it on the rest | `onetextperfolio` |
| **One text per sheet** | show the number **once per potential per sheet**, on the longest conductor of that potential, and hide it on the rest | `onetextperfolio` |
| **Size** | text size, default 9 | `numsize` |
| **Text colour** | — | `text_color` |
| **Rotation** | angle for the label on horizontal and on vertical runs, default 0° and 270° | `horizrotatetext`, `vertirotatetext` |
| **Alignment** | where the label sits relative to the line | `horizontal-alignment`, `vertical-alignment` |
Conductors joined through elements form a **potential** — an equipotential net.
"One text per folio" is what stops the same wire number being repeated a dozen
"One text per sheet" is what stops the same wire number being repeated a dozen
times along one potential.
### Single-line mode
@@ -202,7 +202,7 @@ diagram*) writes the same CSV file.
| Column | Comes from |
|---|---|
| Page | the folio the conductor is on, as its number is shown on the folio |
| Page | the sheet the conductor is on, as its number is shown on the sheet |
| Component 1 / Terminal 1 | the element and terminal at one end |
| Component 2 / Terminal 2 | the element and terminal at the other end |
| Tension / Protocol | **Tension / protocol** |
@@ -211,7 +211,7 @@ diagram*) writes the same CSV file.
| Function | **Function** |
| Cable | **cable** — last column, in the nightly builds from 1 October 2026 onwards ([#1197](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1197)); release 0.100 does not have it |
A wire drawn through a folio report (an arrow to another folio) is one row,
A wire drawn through a sheet report (an arrow to another sheet) is one row,
not two. Its fields are taken from both halves: written once when the halves
agree, both values separated by a comma when they do not.
@@ -237,9 +237,9 @@ a window, one row per conductor:
| **Fil** | the wire number |
| **Composant 1 / Borne 1** | the element and terminal at one end |
| **Composant 2 / Borne 2** | the element and terminal at the other end |
| **Folio** | where the conductor is |
| **Sheet** | where the conductor is |
Rows are ordered by folio, then by wire number — numeric wire numbers first in
Rows are ordered by sheet, then by wire number — numeric wire numbers first in
numeric order, so `9` comes before `10`, then anything non-numeric as text.
Two things this window tells you that the CSV does not:
@@ -249,7 +249,7 @@ Two things this window tells you that the CSV does not:
- It **counts what it left out**. A conductor whose end is not attached to any
element cannot appear in a from-to list, and the window says how many were
excluded rather than presenting a short list as if it were complete. If that
number is not zero, something on a folio is not connected to what you think.
number is not zero, something on a sheet is not connected to what you think.
Being database-backed, it carries the same limitation as `--export-wiring`: no
tension, wire colour, section or function columns, because the database does
@@ -333,7 +333,7 @@ the file saves normally from then on. The storage format is described in
The **Couleur de conducteur** (*Conductor colour*) swatch on the **Schéma**
toolbar colours every selected conductor in one click:
1. Select the conductors: one, several, or **Ctrl+A** for the whole folio.
1. Select the conductors: one, several, or **Ctrl+A** for the whole sheet.
2. Open the swatch and pick a colour.
The menu lists the colours electricians name — Noir, Marron, Gris, Bleu,
@@ -352,10 +352,10 @@ What it does:
- **Nothing is saved as a setting.** The colour lives on the conductors it was
applied to; the recent list is forgotten when QET closes.
The swatch is greyed out when no folio is open or the project is read-only.
The swatch is greyed out when no sheet is open or the project is read-only.
**F2** still opens the colour picker for exactly one selected conductor, and
does nothing with several selected or none. For bulk changes across folios by
does nothing with several selected or none. For bulk changes across sheets by
some other criterion, use **[Search & Replace](search_and_replace)**.
There are **no named conductor presets**. A project has a single default set of
@@ -405,7 +405,7 @@ the **Croisements de conducteurs** (*wire crossings*) list at the bottom:
You choose the orientation rather than "whichever wire was drawn last", so
the whole project looks consistent. The setting belongs to the project: it
is saved in the `.qet` file and every folio follows it, on any computer.
is saved in the `.qet` file and every sheet follows it, on any computer.
### Which crossings hop
@@ -435,7 +435,7 @@ is saved in the `.qet` file and every folio follows it, on any computer.
- **[User manual](user_manual)** — the walkthrough for drawing wires
- **[Auto-numbering](autonumbering)** — how wire numbers are generated and frozen
- **[Linking wires across pages](folio_links)** — folio reports
- **[Linking wires across pages](folio_links)** — sheet reports
- **[Terminal strips](terminal_strips)** — where conductors land on real terminals
- **[Search & Replace](search_and_replace)** — changing many conductors at once
- **[CLI reference](cli_reference)** — the export commands above
@@ -1,6 +1,6 @@
# dynamic_text
Text whose value can be taken from the element or the project rather than typed
in, and which the user can reposition on the folio. Compare the static
in, and which the user can reposition on the sheet. Compare the static
[text](elements_description_child_text).
Example:
+1 -1
@@ -18,7 +18,7 @@ attribute :
* displaycols
* auto_page_num
* title
* folio
* sheet
* version
* displayAt
* author
+1 -1
@@ -1,5 +1,5 @@
# conductors
Container for every conductor (wire) on the folio. Written only when the folio
Container for every conductor (wire) on the sheet. Written only when the sheet
has at least one conductor.
parent : [diagram](project_child_diagram)
+1 -1
@@ -1,5 +1,5 @@
# defaultconductor
The conductor properties a newly drawn conductor on this folio starts from.
The conductor properties a newly drawn conductor on this sheet starts from.
Same attribute vocabulary as an individual
[conductor](project_diagram_child_conductors).
@@ -1,6 +1,6 @@
# elementautonumfoliosequentials
Per-folio counters for element auto-numbering: the highest sequential value
reached on this folio, so numbering survives a save/reload.
Per-sheet counters for element auto-numbering: the highest sequential value
reached on this sheet, so numbering survives a save/reload.
parent : [diagram](project_child_diagram)
+1 -1
@@ -1,5 +1,5 @@
# elements
Container for every element placed on the folio. Written only when the folio
Container for every element placed on the sheet. Written only when the sheet
has at least one element.
Example:
+3 -3
@@ -1,5 +1,5 @@
# images
Container for bitmap images dropped onto the folio.
Container for bitmap images dropped onto the sheet.
parent : [diagram](project_child_diagram)
@@ -23,6 +23,6 @@ Optional children, each written only when it carries something:
* `<crop>` -- x, y, w, h of the kept region
* `<image_base>` -- the untouched original, PNG base64, when cropped or keyed
See **[Pictures on a folio](pictures)** for what each does.
See **[Pictures on a sheet](pictures)** for what each does.
Written only when the folio has at least one image, by `Diagram::toXml()`.
Written only when the sheet has at least one image, by `Diagram::toXml()`.
+2 -2
@@ -1,5 +1,5 @@
# inputs
Container for free-standing text on the folio -- text not attached to any
Container for free-standing text on the sheet -- text not attached to any
element. In the code these are *independent texts*.
parent : [diagram](project_child_diagram)
@@ -17,7 +17,7 @@ attribute : none
* userx, usery -- user-moved offset
* tagg -- free-form tag
Written only when the folio has at least one such text, by `Diagram::toXml()`.
Written only when the sheet has at least one such text, by `Diagram::toXml()`.
Note: `<inputs>` also appears **inside** each `<element>`, where it holds that
element's own texts. Same tag, different parent.
+1 -1
@@ -1,5 +1,5 @@
# properties
Custom title-block fields for this folio: the user-defined variables a title
Custom title-block fields for this sheet: the user-defined variables a title
block template can display, over and above the fixed ones (author, title, date,
...) that live as attributes on [diagram](project_child_diagram) itself.
+2 -2
@@ -1,5 +1,5 @@
# shapes
Container for free drawing on the folio -- lines, rectangles, ellipses and
Container for free drawing on the sheet -- lines, rectangles, ellipses and
polygons drawn directly on the diagram rather than belonging to an element.
parent : [diagram](project_child_diagram)
@@ -26,4 +26,4 @@ These are diagram shapes and are **not** the same as the element drawing
primitives documented under [description](elements_child_description), even
though they draw similar figures.
Written only when the folio has at least one shape, by `Diagram::toXml()`.
Written only when the sheet has at least one shape, by `Diagram::toXml()`.
@@ -1,5 +1,5 @@
# elementhundredfolioseq
The hundreds counter for element auto-numbering on this folio.
The hundreds counter for element auto-numbering on this sheet.
parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials)
@@ -1,5 +1,5 @@
# elementtenfolioseq
The tens counter for element auto-numbering on this folio.
The tens counter for element auto-numbering on this sheet.
parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials)
@@ -1,5 +1,5 @@
# elementunitfolioseq
The units counter for element auto-numbering on this folio.
The units counter for element auto-numbering on this sheet.
parent : [elementautonumfoliosequentials](project_diagram_child_elementautonumfoliosequentials)
+1 -1
@@ -10,7 +10,7 @@ attribute :
* date
* author
* indexrev
* folio
* sheet
* displayAt
* filename
* version
+4 -4
@@ -49,7 +49,7 @@ QET 2.0 cannot begin until these features are complete:
- Better compatibility with external tools
**Project Files (.qet → Structured Zip):**
- **Main .qet file:** Simplified manifest with folios and element coordinates
- **Main .qet file:** Simplified manifest with sheets and element coordinates
- **SQLite database:** Comprehensive project metadata
- **Organized folder structure:**
```
@@ -104,7 +104,7 @@ QET 2.0 cannot begin until these features are complete:
**Cross-Reference (Xref) Expansion:**
- Increased flexibility in display options
- Better positioning and sizing control
- More intuitive multi-folio linking
- More intuitive multi-sheet linking
- Improved link visualization
**Text Rendering Modernization:**
@@ -170,7 +170,7 @@ Contributors can work on these areas:
### UI/UX Issues
- **#735:** Folio report link picker displays valid candidates as blank rows
- **#735:** Sheet report link picker displays valid candidates as blank rows
- Impact: Users cannot see available links
- Fix: Fix link picker rendering logic
@@ -201,7 +201,7 @@ Contributors can work on these areas:
### User Interface
**Planned:**
- Better folio navigation
- Better sheet navigation
- Improved element picker
- Terminal strip visual improvements
- Conductor rendering enhancements
+1 -1
@@ -3,7 +3,7 @@
Lighting and house-wiring layouts often draw the wire from a switch to a lamp
as a curve rather than a straight line, so it stands apart from walls and
furniture on the plan. QElectroTech draws these as **arcs**: free drawing on
the folio, like lines and rectangles, not conductors. An arc is not connected
the sheet, like lines and rectangles, not conductors. An arc is not connected
to anything — it does not appear in the wiring list, the parts list or any
export that follows wires.
+26 -26
@@ -1,7 +1,7 @@
# Drawing faster: placing symbols and running commands without hunting for them
Drawing a schematic is mostly two things repeated hundreds of times: **put a
symbol on the folio**, and **run a command on what you just drew** — rotate
symbol on the sheet**, and **run a command on what you just drew** — rotate
it, wire it, delete it, draw a line. Traditionally QElectroTech made you drag
every symbol from the Collections panel and fetch every command from a menu
or toolbar at the edge of the window, far from where you are working.
@@ -22,14 +22,14 @@ and were built as a series of small pull requests, one per feature.
| § | Feature | How you reach it | Pull request |
|---|---|---|---|
| 1 | [Place a symbol without dragging](#1-placing-a-symbol-without-dragging), and place the last one again | Double-click or Enter in Collections; **A** | [#1042](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1042) |
| 2 | [Placing from the right-click menu](#2-the-folios-right-click-menu) | Right-click an empty spot | [#1041](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1041), [#1050](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1050) |
| 2 | [Placing from the right-click menu](#2-the-sheets-right-click-menu) | Right-click an empty spot | [#1041](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1041), [#1050](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1050) |
| 3 | [Ranked collection search](#3-searching-the-collection-best-match-first) | The Collections search box | [#1051](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1051) |
| 4 | [Element picker at the cursor](#4-the-element-picker-insert) | **Insert** | [#1052](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1052) |
| 5 | [Shortcut bar](#5-the-shortcut-bar-s) | **S** | [#1053](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1053) |
| 6 | [Customising the shortcut bar in place](#6-customising-the-shortcut-bar) | "…" on the bar | [#1054](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1054) |
| 6 | [Your own symbols on the bar, and its width](#putting-your-own-symbols-on-the-bar) | *Éléments* in the edit window; the bar's corner grip | [#1060](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1060) |
| 7 | [Commands beside the selection](#7-commands-beside-the-selection) | Click something | [#1055](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1055) |
| 8 | [Repeat the last command](#8-enter-repeats-the-last-command) | **Enter** on the folio | [#1056](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1056) |
| 8 | [Repeat the last command](#8-enter-repeats-the-last-command) | **Enter** on the sheet | [#1056](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1056) |
| 9 | [Command search](#9-command-search-ctrlshiftm) | **Ctrl+Shift+M** | [#1049](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1049) |
| 10 | [Mouse gestures](#10-mouse-gestures-right-drag) | Right-drag | [#1057](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1057) |
@@ -41,7 +41,7 @@ until the translations are updated, with an English gloss in italics.
## 1. Placing a symbol without dragging
In the **Collections** panel, **double-click** a symbol, or select it and
press **Enter**. The symbol attaches to the cursor; click on the folio to put
press **Enter**. The symbol attaches to the cursor; click on the sheet to put
it down. You stay in placing mode, so each further click places another copy.
**Escape** or a right-click stops.
@@ -62,38 +62,38 @@ right-click menu, and a preference brings the old behaviour back:
la collection ouvre l'éditeur d'élément au lieu de l'insérer** (*double-click
in the collection opens the element editor instead of inserting*).
With no folio open, or on a read-only project, double-click still opens the
With no sheet open, or on a read-only project, double-click still opens the
editor, since there is nowhere to place.
---
## 2. The folio's right-click menu
## 2. The sheet's right-click menu
Right-click an empty spot on a folio. The menu puts drawing first:
Right-click an empty spot on a sheet. The menu puts drawing first:
| Entry | Does | Since |
|---|---|---|
| **Renvoi de folio ▸** (*folio reference*) | places a folio report arrow where you right-clicked | [#1050](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1050) |
| **Renvoi de folio ▸** (*sheet reference*) | places a sheet report arrow where you right-clicked | [#1050](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1050) |
| **Insérer le dernier élément** (*insert last element*) | starts placing the last symbol again, as **A** does; shown once something has been placed | [#1050](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1050) |
| **Ajouter ▸** (*add*) | text, image, PDF, line, rectangle, ellipse, arc, polyline, curve, terminal strip | merged ([#1041](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1041)) |
| **Propriétés du folio** (*folio properties*) | the folio's properties dialog | merged |
| **Propriétés du folio** (*sheet properties*) | the sheet's properties dialog | merged |
| **Lignes et colonnes ▸** (*rows and columns*) | add or remove a row or a column | merged — moved one level down by #1041 |
![The folio's right-click menu with the Renvoi de folio submenu open: Coming arrow, Going arrow, Next folio](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-folio-menu.png)
![The sheet's right-click menu with the Renvoi de folio submenu open: Coming arrow, Going arrow, Next sheet](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-folio-menu.png)
### Which arrows "Renvoi de folio" lists
It lists **the folio report symbols your project already uses**, read from
It lists **the sheet report symbols your project already uses**, read from
the project's embedded collection — typically two to seven per project, with
dated copies of the same symbol shown once. That keeps the list to the
arrows your drawings actually use rather than the 48 folio-referencing
arrows your drawings actually use rather than the 48 sheet-referencing
symbols in the shipped collection.
A project that has none yet gets the common collection's **Coming arrow** and
**Going arrow**. If the common collection isn't available either, the
submenu is hidden. It is also hidden on a read-only folio.
submenu is hidden. It is also hidden on a read-only sheet.
For what a folio report does once placed, see
For what a sheet report does once placed, see
**[Linking wires across pages](folio_links)**.
---
@@ -123,7 +123,7 @@ symbols' **displayed names** in your language, not their file names.
## 4. The element picker (Insert)
Press **Insert** with the mouse over the folio (*Édition → Insérer un
Press **Insert** with the mouse over the sheet (*Édition → Insérer un
élément…*). A small window opens at the cursor:
- With the search box empty it shows your **palette**: a grid of the symbols
@@ -150,15 +150,15 @@ same way as any collection, and there is nothing extra to back up.
## 5. The shortcut bar (S)
Press **S** with the mouse over the folio (*Édition → Barre de raccourcis*).
Press **S** with the mouse over the sheet (*Édition → Barre de raccourcis*).
The element picker opens at the cursor with **a row of command buttons on
top**, chosen for what is selected — the same idea as SolidWorks' S key.
![The shortcut bar with nothing selected: insert last, picker, text, line, rectangle, terminal strip, paste, folio properties above the palette](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-shortcut-bar.png)
![The shortcut bar with nothing selected: insert last, picker, text, line, rectangle, terminal strip, paste, sheet properties above the palette](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-shortcut-bar.png)
| What is selected | Default commands |
|---|---|
| Nothing | Insert last element, element picker, text, line, rectangle, terminal strip, paste, folio properties |
| Nothing | Insert last element, element picker, text, line, rectangle, terminal strip, paste, sheet properties |
| Only wires | Reset the wire's path, edit, delete |
| Anything else | Rotate, orient texts, edit, copy, cut, delete |
@@ -299,7 +299,7 @@ Hover a button for what it does, as on the shortcut bar (§5).
It fades as the mouse moves away and disappears beyond about 200 pixels, or
at the next key press. It does **not** appear after dragging something, while
placing a symbol or running a drawing tool, or on a read-only folio.
placing a symbol or running a drawing tool, or on a read-only sheet.
**It is on by default.** Turn it off with *Configuration → Configurer
QElectroTech → Général → Apparence →* **Afficher les commandes près de la sélection**
@@ -309,7 +309,7 @@ QElectroTech → Général → Apparence →* **Afficher les commandes près de
## 8. Enter repeats the last command
Press **Enter** on the folio to start the last drawing or placing command
Press **Enter** on the sheet to start the last drawing or placing command
again. Draw a line, press Escape, press Enter — you are drawing another.
Place a fuse, Escape, Enter — you are placing another fuse.
@@ -340,7 +340,7 @@ any command's name, and press **Enter** to run it — like SolidWorks' *Search
Commands* or the command palette of many editors. Useful for the command you
know exists but can't find in the menus.
![Typing "ajout" lists every Ajouter command: text field, folio, PDF, terminal strip, rectangle, curve, ellipse, image, line, polyline](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-command-search.png)
![Typing "ajout" lists every Ajouter command: text field, sheet, PDF, terminal strip, rectangle, curve, ellipse, image, line, polyline](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/drawing-command-search.png)
- It searches **every command of this window** that has a shortcut entry —
the same list as the Shortcuts preferences page — by the name shown in
@@ -373,7 +373,7 @@ Drag back to the middle before releasing to run nothing.
The eight commands are the first eight of the shortcut bar's list for the
current selection (§5), clockwise from the top, so a gesture becomes muscle
memory: with the default list, *right-drag right* adds a text field on an
empty folio and *right-drag up* rotates a selected symbol.
empty sheet and *right-drag up* rotates a selected symbol.
A **plain right-click still opens the menu** — it opens when you release the
button rather than when you press it. A right-click while placing a symbol
@@ -392,13 +392,13 @@ QElectroTech → Général → Apparence →* **Gestes de la souris avec le bout
| **A** | place the last symbol again | 1 |
| **Insert** | element picker | 4 |
| **S** | shortcut bar | 5 |
| **Enter** (on the folio) | repeat the last drawing or placing command | 8 |
| **Enter** (on the sheet) | repeat the last drawing or placing command | 8 |
| **Ctrl+Shift+M** | command search | 9 |
| Right-drag | gesture ring | 10 |
Every key can be changed in *Configuration → Configurer QElectroTech →
Raccourcis* (*shortcuts*) (see **[Preferences reference](preferences)**). None of these keys
did anything on the folio before; the element editor and title block editor
did anything on the sheet before; the element editor and title block editor
are separate windows with their own keys.
## Limitations
@@ -422,8 +422,8 @@ are separate windows with their own keys.
- **[Managing collections](collection_browser)** — folders, and building the
shortlist that becomes your palette
- **[Mouse modifiers](mouse_modifiers)** — Shift, Ctrl and Alt while you drag
- **[Linking wires across pages](folio_links)** — what a folio reference
- **[Linking wires across pages](folio_links)** — what a sheet reference
arrow does
- **[Finding your place on a folio](navigating_folios)** — go to a cell,
- **[Finding your place on a sheet](navigating_folios)** — go to a cell,
keep the headers in sight
- **[Preferences reference](preferences)** — every settings page
+14 -14
@@ -5,11 +5,11 @@ format:
| | Direction | Where | How |
|---|---|---|---|
| **Export** | folio → `.dxf` | *File → Export*, alongside PDF/PNG/SVG | in-process, QET's own code |
| **Export** | sheet → `.dxf` | *File → Export*, alongside PDF/PNG/SVG | in-process, QET's own code |
| **Import** | `.dxf` → element geometry | the **element editor**'s *Import a DXF file* | shells out to a separate third-party program |
They don't round-trip each other and aren't part of the same code path. If
you're looking for "import a DXF drawing as a folio", that isn't what either
you're looking for "import a DXF drawing as a sheet", that isn't what either
of these does — see §3.
Source: `sources/createdxf.{cpp,h}`, `sources/dxfpaintdevice.{cpp,h}`,
@@ -18,10 +18,10 @@ Source: `sources/createdxf.{cpp,h}`, `sources/dxfpaintdevice.{cpp,h}`,
---
## 1. Exporting a folio to DXF
## 1. Exporting a sheet to DXF
*File → Export*, same dialog as PDF/PNG/SVG, one `.dxf` file per folio. The
border, title block and every diagram item on that folio are included.
*File → Export*, same dialog as PDF/PNG/SVG, one `.dxf` file per sheet. The
border, title block and every diagram item on that sheet are included.
It also runs from the command line, like the PDF, PNG and SVG exports.
@@ -32,7 +32,7 @@ qelectrotech --export-dxf myproject.qet out/
qelectrotech --export-dxf myproject.qet out/ --show-terminals
```
- **One file per folio**, named like the PNG and SVG exports: the folio
- **One file per sheet**, named like the PNG and SVG exports: the sheet
number on two digits, then its title — `01_General.dxf`,
`02_Macro 3.dxf`. The output folder is created if it does not exist.
- **The same file the Export dialog writes**, with the dialog's default
@@ -51,7 +51,7 @@ qelectrotech --export-dxf myproject.qet out/ --show-terminals
Exit codes are the same as the other exports: `0` success, `1` the export
failed (for example, the output folder cannot be written), `2` called wrongly.
**Two exports of the same folio give identical files**, so a DXF can be
**Two exports of the same sheet give identical files**, so a DXF can be
compared with an earlier one to see what changed. (Before
[PR #1075](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1075),
every export wrote its entities in a different order.)
@@ -65,7 +65,7 @@ everything sat on **layer 0**.)
| Layer | What is on it |
|---|---|
| `QET_BORDER` | the folio frame, with its column and row headers |
| `QET_BORDER` | the sheet frame, with its column and row headers |
| `QET_TITLEBLOCK` | the title block |
| `QET_SYMBOLS` | the drawing of each symbol |
| `QET_SYMBOL_TEXTS` | texts belonging to symbols: labels and the like |
@@ -75,7 +75,7 @@ everything sat on **layer 0**.)
| `QET_JUNCTIONS` | junction dots |
| `QET_TEXTS` | free texts |
| `QET_XREFS` | cross-references: contact tables beside a master, labels beside a slave |
| `QET_SHAPES` | lines, rectangles, ellipses and polygons drawn on the folio |
| `QET_SHAPES` | lines, rectangles, ellipses and polygons drawn on the sheet |
| `QET_TABLES` | tables such as the parts list |
| `QET_IMAGES` | the outline boxes that stand in for pictures |
@@ -84,16 +84,16 @@ a CAD user's layer filters and scripts keep working. The `QET_` prefix keeps
them together in the layer list and apart from the receiving drawing's own
layers.
![Left: a folio as exported. Middle: the same file with the border, title block and tables layers switched off. Right: the wires layer recoloured red and the symbols layer blue](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/dxf-layers.png)
![Left: a sheet as exported. Middle: the same file with the border, title block and tables layers switched off. Right: the wires layer recoloured red and the symbols layer blue](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/dxf-layers.png)
*`2612_ats_singlephase.qet`, folio 1, exported with this change and rendered
*`2612_ats_singlephase.qet`, sheet 1, exported with this change and rendered
with ezdxf. Only layer settings in the viewer differ between the three.*
**Colours.** Where QElectroTech sets no colour of its own, entities take
their layer's colour (*BYLAYER*), so recolouring a layer in the CAD program
recolours everything on it. The file still looks the same when opened, since
every layer starts white on black, black on white. Wires keep the colour they
have on the folio: until this change every wire was exported in the default
have on the sheet: until this change every wire was exported in the default
colour, and 723 of the 3,190 wires in the example projects lost theirs. A
two-colour wire gets its main colour.
@@ -145,7 +145,7 @@ surviving into DXF, they won't — plan around outlines and text.
## 2. Importing a DXF into an element
This is a **symbol-authoring** tool, found in the **element editor**
(*File → Import a DXF file*), not the diagram/folio editor. It reads
(*File → Import a DXF file*), not the diagram/sheet editor. It reads
geometry out of a `.dxf` and adds it as drawing primitives to the element you
currently have open — a way to trace or reuse CAD line art when drawing a new
symbol, not a way to bring a DXF schematic into a project.
@@ -174,7 +174,7 @@ project, not with QET.
## 3. What neither of these is
- **Not a way to place a DXF drawing on a folio as-is.** Import only feeds
- **Not a way to place a DXF drawing on a sheet as-is.** Import only feeds
the element editor.
- **Not round-trip safe.** Export's outline-only, no-image limitations (§1)
mean a `.dxf` written by QET is not a faithful source to import back,
+3 -3
@@ -113,8 +113,8 @@ proceeds) or an **error** (save is blocked):
| Condition | Severity |
|---|---|
| No terminals at all | **warning** — unless the element is a folio report, a conductor definition, or a thumbnail, which are allowed to have none |
| A folio report element has anything other than **exactly one** terminal | **error** |
| No terminals at all | **warning** — unless the element is a sheet report, a conductor definition, or a thumbnail, which are allowed to have none |
| A sheet report element has anything other than **exactly one** terminal | **error** |
| A conductor definition element has anything other than **exactly one** terminal | **error** |
An element with zero terminals still saves — you'll just get a dialog telling
@@ -134,7 +134,7 @@ itself."*
| Condition | Severity |
|---|---|
| Two or more terminals share a name | **error** — the save is blocked, and the terminals involved are selected so you can find them |
| One or more terminals have no name | **warning** — the save goes ahead. Folio reports, conductor definitions and thumbnails are not checked |
| One or more terminals have no name | **warning** — the save goes ahead. Sheet reports, conductor definitions and thumbnails are not checked |
![The error dialog when saving a Shelly Pro 2PM with three terminals named N: "Plusieurs bornes portent le même nom : N ×3", with the fix "Donner un nom unique à chaque borne, par exemple N.1 et N.2"](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/element-editor-duplicate-terminal-names.png)
+4 -4
@@ -31,8 +31,8 @@ rely on today.
| `simple` | Simple | Ordinary element. **The default** — an unknown or missing value falls back to this. |
| `master` | Maître | Owns a cross-reference: coils, protections, switches, PLC modules. |
| `slave` | Esclave | A contact that attaches to a master and is listed in its cross-reference. |
| `next_report` | Renvoi de folio suivant | Folio report, forward. |
| `previous_report` | Renvoi de folio précédent | Folio report, backward. |
| `next_report` | Renvoi de folio suivant | Sheet report, forward. |
| `previous_report` | Renvoi de folio précédent | Sheet report, backward. |
| `terminal` | Bornier | A terminal-strip terminal. |
| `thumbnail` | Vignette | Thumbnail element. |
| `conductor_definition` | Définition de conducteur | Conductor definition. |
@@ -127,7 +127,7 @@ change the contact count again.
By default a master's contact comb (the cross-reference drawn as contacts under
a coil) shows only the slaves actually linked to it, in their order on the
folios. When the master declares contact groups, it can show **all** of them
sheets. When the master declares contact groups, it can show **all** of them
instead, before any slave is placed, so you can see which contacts are still
free.
@@ -145,7 +145,7 @@ With it on:
|---|---|
| Linked to a slave | as before: the slave's position, hover and double-click to jump to it |
| Free | the contact symbol and the terminal numbers from the group, with no position and no hover or double-click |
| A linked slave with no group assigned | added after the declared groups, in folio order |
| A linked slave with no group assigned | added after the declared groups, in sheet order |
A master that declares no contact groups draws exactly as before, with or
without the option. It is saved in the project as the `showallconfiguredslaves`
+8 -8
@@ -130,7 +130,7 @@ See **[User Manual → Export & Printing](user_manual#export--printing)** for ex
### Q: How do I export my diagram?
**A:**
1. **File → Export** (or right-click project/folio)
1. **File → Export** (or right-click project/sheet)
2. Choose format:
- **PDF** — Best for sharing/printing
- **PNG** — Image format for web/documents
@@ -148,7 +148,7 @@ See **[User Manual → Export & Printing](user_manual#export--printing)** for ex
- Page size and orientation
- Scaling (fit to page, actual size, etc.)
3. Print to printer or PDF
4. For multi-page: Set up folio (page) layout first
4. For multi-page: Set up sheet (page) layout first
### Q: How do I save my project?
@@ -166,21 +166,21 @@ See **[User Manual → Export & Printing](user_manual#export--printing)** for ex
**A:**
1. **Right-click in Project panel** (left side)
2. **New Folio** (a folio = one page/diagram)
3. Choose folio type (Single-line, Multiline, etc.)
2. **New Sheet** (a sheet = one page/diagram)
3. Choose sheet type (Single-line, Multiline, etc.)
4. Enter title
5. New diagram ready to edit
**Organize:**
- Drag folios to reorder them
- Right-click folio for rename/properties
- Drag sheets to reorder them
- Right-click sheet for rename/properties
### Q: How do I organize a large project?
**A:** Best practices:
- **Group by function:** Power, Control, Safety, etc.
- **Name clearly:** "Main Power", "Control Logic", "Outputs", etc.
- **Use multiple folios:** One per major section
- **Use multiple sheets:** One per major section
- **Consistent labeling:** Use reference designators (S1, R1, etc.)
See **[Tips & Tricks](tips_and_tricks)** for advanced organization strategies.
@@ -254,7 +254,7 @@ See **[Tips & Tricks](tips_and_tricks)** for advanced organization strategies.
1. **Reduce zoom level** if viewing entire diagram
2. **Disable grid display** (View → Grid)
3. **Close unused panels** (View → Panels)
4. **Split into multiple folios** if diagram is very large (100+ elements)
4. **Split into multiple sheets** if diagram is very large (100+ elements)
5. **Turn off selection handles** when not editing
For very large projects (1000+ elements), performance may be limited.
+6 -6
@@ -50,7 +50,7 @@ Beyond electrical diagrams, QET handles:
- **Manual control** — Full control over wire paths when needed
- **Point-to-point connectivity** — Precise terminal-to-terminal connections
- **Automatic alignment** — Elements snap to grid for neat organization
- **Multi-folio projects** — Organize work across multiple pages/diagrams
- **Multi-sheet projects** — Organize work across multiple pages/diagrams
### Text & Annotations
@@ -93,7 +93,7 @@ Beyond electrical diagrams, QET handles:
### Configurable Pages & Title Blocks
- **Customizable folios** — Set headers, columns, rows per page
- **Customizable sheets** — Set headers, columns, rows per page
- **Embedded titleblock editor** — Add project info, author, date
- **Custom variables** — Store project metadata
- **Page styles** — Define look and feel
@@ -144,7 +144,7 @@ Beyond electrical diagrams, QET handles:
### Professional Printing
- **Print preview** — See output before printing
- **Selective export** — Print specific folios or all pages
- **Selective export** — Print specific sheets or all pages
- **Scale control** — Fit to page or print at actual size
- **Multi-page support** — Automatically split large diagrams
- **Color & B&W options** — Control output appearance
@@ -155,9 +155,9 @@ Beyond electrical diagrams, QET handles:
### Multi-Page Projects
- **Folios (pages)** — Create multiple diagrams in one project
- **Sheets (pages)** — Create multiple diagrams in one project
- **Types** — Single-line, multiline, control diagrams
- **Organization** — Reorder, rename, delete folios easily
- **Organization** — Reorder, rename, delete sheets easily
- **Cross-references** — Link between pages automatically
### Workspace Customization
@@ -173,7 +173,7 @@ Beyond electrical diagrams, QET handles:
- **Version control integration** — Works with Git, SVN
- **File sharing** — Network drives, cloud storage compatible
- **Import/merge** — Combine work from multiple contributors
- **Concurrent editing** — Multiple users on different folios
- **Concurrent editing** — Multiple users on different sheets
---
+14 -13
@@ -1,12 +1,13 @@
# Linking wires across pages
A wire that runs off the edge of one page and continues on another is drawn in
QElectroTech as a pair of **folio reports** — one arrow saying "continues on
QElectroTech as a pair of **sheet reports** — one arrow saying "continues on
page 4", another on page 4 saying "comes from page 2", and a link between them.
> **Vocabulary.** The interface and this page say *page* and *wire*; the code
> and some dialogs say **folio** and **conductor**. A folio report is also
> called a *renvoi de folio*. They are the same things —
> **Vocabulary.** This page says *page* and *wire*; the interface says
> **sheet** and **conductor** (earlier versions and many forum posts
> say *folio*). A sheet report is also called a *folio report*, or a
> *renvoi de folio* in French. They are the same things —
> see the **[glossary](#7-vocabulary)** at the end.
Source: `sources/qetgraphicsitem/reportelement.cpp`,
@@ -16,7 +17,7 @@ Source: `sources/qetgraphicsitem/reportelement.cpp`,
## 1. The two halves
A folio report is an ordinary element whose `link_type` is one of two values:
A sheet report is an ordinary element whose `link_type` is one of two values:
| `link_type` | Editor label | Meaning |
|---|---|---|
@@ -35,7 +36,7 @@ step.
Select a report element and open its properties. It offers *Link the element*,
with a list of the **free** reports of the opposite kind elsewhere in the
project — free meaning "not already linked to something". The list shows each
candidate's wire number, function, tension/protocol, position and folio title,
candidate's wire number, function, tension/protocol, position and sheet title,
so you can tell two similar arrows apart.
Pick one, and the pair is linked. The operation is undoable.
@@ -58,13 +59,13 @@ When deciding whether two elements may be linked, QET checks **two things**:
That is the whole contract. QET does **not** check:
- that the two reports are on **different pages** — you can link two reports on
the same folio;
the same sheet;
- that either one has a **wire connected** at all;
- that the wires at the two ends belong to the same **potential**, or carry the
same number, or are electrically related in any way;
- that the arrows **point** in sensible directions.
A folio report link is therefore a statement *you* make about your drawing, and
A sheet report link is therefore a statement *you* make about your drawing, and
QET renders it faithfully without verifying it. Two arrows can claim continuity
between wires that have nothing to do with each other, and nothing will object.
@@ -91,7 +92,7 @@ changes with it. The variables are the ordinary label variables — see
Typing a report's label such as `4-B7` into **Ctrl+G** jumps
to that page and zooms onto the cell — see
**[Finding your place on a folio](navigating_folios)**.
**[Finding your place on a sheet](navigating_folios)**.
Because the text is generated from the partner's position, it **follows the
partner**. Move the other arrow to a different column, insert a page ahead of
@@ -111,7 +112,7 @@ ordinary element's:
| `%{conductor_section}` | wire section |
Anything else you put in a report's composite text is stripped. If you expected
`%{comment}` or a manufacturer field to appear on a folio report, this is why it
`%{comment}` or a manufacturer field to appear on a sheet report, this is why it
does not.
---
@@ -163,18 +164,18 @@ with no partner is a wire that goes nowhere.
|---|---|---|
| page | diagram | folio |
| wire | conductor | conducteur |
| link between pages | folio report | renvoi de folio |
| link between pages | sheet report | renvoi de folio |
| onward arrow | `next_report` | renvoi de folio suivant |
| return arrow | `previous_report` | renvoi de folio précédent |
| cross-reference | master / slave | référence croisée |
---
## 8. Folio reports are not cross-references
## 8. Sheet reports are not cross-references
The two mechanisms look alike and are often confused:
| | Folio report | Cross-reference |
| | Sheet report | Cross-reference |
|---|---|---|
| Links | a wire to its continuation | a coil to its contacts |
| Types | `next_report` ↔ `previous_report` | `master` ↔ `slave` |
+7 -7
@@ -1,7 +1,7 @@
# Grid size and element size
Elements from different sub-collections — or different authors — can look
very different in size next to each other on the same folio, even though
very different in size next to each other on the same sheet, even though
they all snap correctly to the same grid. New users sometimes read this the
way model railway modellers read gauges: N, HO, and O scale are all "the
same kind of thing" (a train) drawn at deliberately different, named
@@ -17,7 +17,7 @@ Source: `sources/diagram.cpp`, `sources/diagram.h`, `sources/editor/elementscene
## 1. The diagram grid
The folio grid is a set of dots at regular intervals, purely for visual
The sheet grid is a set of dots at regular intervals, purely for visual
alignment and mouse-snap — it carries no unit of measurement (not mm, not
inches). Seven settings control it, all under `QSettings` key prefix
`diagrameditor/`:
@@ -45,9 +45,9 @@ how visible the dots are at a given zoom level.
**Mouse-drag movement snaps to `Xgrid`/`Ygrid`**, independent of the
keyboard-nudge settings above; Ctrl while dragging bypasses the snap. Texts
are the exception: they snap to the *text grid*, the folio grid divided by
are the exception: they snap to the *text grid*, the sheet grid divided by
`text_grid_divisor`, so a label can sit between two grid points and still
line up with the labels of other symbols. The default of 1 is the folio grid
line up with the labels of other symbols. The default of 1 is the sheet grid
itself. See **[Mouse modifiers](mouse_modifiers)** §2 for where to change it
and for the full modifier table.
@@ -75,12 +75,12 @@ as a margin, and the whole element is written to `.elmt` with `width` and
`height` attributes that are always multiples of 10 — the same 10 that is
the diagram grid's default spacing. That is why an element's hotspot and its
terminals always land on a diagram grid intersection once it's placed on a
folio, regardless of how finely you drew it: the file format itself only
sheet, regardless of how finely you drew it: the file format itself only
ever stores multiples of the diagram's grid unit.
If you've changed `Xgrid`/`Ygrid` away from 10, note that the element
editor's own rounding is still hard-coded to 10 — an element built on a
folio with a 12-unit grid, say, will not necessarily land back on that
sheet with a 12-unit grid, say, will not necessarily land back on that
grid's intersections.
## 3. Why element *size* still varies so much
@@ -105,7 +105,7 @@ manufacturer footprint traced from a datasheet). There's no schema field,
naming convention, or `qet-lint` rule (checked in `tools/qet-lint/`) that
enforces or even flags a consistent size *within* a symbol family — the
mechanical-lock-sized problem is a purely visual one you only notice once
two mismatched elements sit on the same folio.
two mismatched elements sit on the same sheet.
**Practical takeaway:** don't expect elements from different sub-collections
— or the same sub-collection at different manufacturer generations — to
+3 -3
@@ -1,6 +1,6 @@
# Grouping items on a folio
# Grouping items on a sheet
Some things on a folio belong together: a picture and its caption, a symbol
Some things on a sheet belong together: a picture and its caption, a symbol
with a frame drawn round it, a block of symbols with the notes that explain
them. Without groups they have to be selected piece by piece every time they
move or are copied, and it is easy to leave one behind.
@@ -48,7 +48,7 @@ follow their symbols when the group moves, exactly as they do today.
| **Shift+Space**, **Pivoter le groupe** (*rotate as group*) | the whole group turns 90° round its centre, keeping its layout |
| **Space**, **Pivoter** (*rotate*) | each member turns where it stands, as for any selection |
| Paste | the copy is a new group of its own, separate from the original |
| Duplicate a folio | each group on it becomes a new group on the copy |
| Duplicate a sheet | each group on it becomes a new group on the copy |
Clicking a member of a group that is already selected keeps the whole group
selected.
+6 -6
@@ -13,7 +13,7 @@ see [Changing a shortcut](#changing-a-shortcut) below.
## Placing a new element from the keyboard
Placing a symbol used to be the one thing that needed a mouse: the only way
to put a catalog symbol on a folio was to drag it from the Collections panel.
to put a catalog symbol on a sheet was to drag it from the Collections panel.
It no longer is:
| To | Do |
@@ -90,7 +90,7 @@ canvas focused (click into it once, or Tab to it from another widget):
| Undo | Ctrl+Z |
| Redo | your platform's standard "redo" key (`QKeySequence::Redo` — Ctrl+Y on Windows, Ctrl+Shift+Z on most Linux desktops) |
| Find / Search & Replace | Ctrl+F |
| Jump to an element on the current folio: type part of its label or information, Enter selects it and scrolls to it. The same popup also goes to a cell such as `B13` or `4-B7` — see **[Finding your place on a folio](navigating_folios)** | Ctrl+G |
| Jump to an element on the current sheet: type part of its label or information, Enter selects it and scrolls to it. The same popup also goes to a cell such as `B13` or `4-B7` — see **[Finding your place on a sheet](navigating_folios)** | Ctrl+G |
**Grid step size is configurable** — *Configuration → Configurer
QElectroTech → Général* has both the normal arrow-key step and the
@@ -108,7 +108,7 @@ the selection rather than the middle of nowhere. It used to fall back to a
generic, mostly-greyed-out Undo/Redo/Cut/Copy/Paste/Delete/Select-All menu
regardless of what was selected, which made most of this page's own
per-item actions unreachable without a mouse. Fixed at the source: a
keyboard-raised event now builds the folio's own menu directly instead of
keyboard-raised event now builds the sheet's own menu directly instead of
asking whichever item has focus for its default one.
## Adding shapes and text to a diagram
@@ -184,8 +184,8 @@ sits.
| Close project | your platform's standard "close" key (`QKeySequence::Close` — usually Ctrl+W) |
| Print | Ctrl+P |
| Quit | Ctrl+Q |
| Add a folio | Ctrl+T |
| Folio properties | Ctrl+L |
| Add a sheet | Ctrl+T |
| Sheet properties | Ctrl+L |
| Export as images | Ctrl+Shift+X |
| Next / previous project window | your platform's standard window-switch keys (`QKeySequence::NextChild`/`PreviousChild`) |
| Toggle full screen | Ctrl+Shift+F |
@@ -243,7 +243,7 @@ The full description is on **[Drawing faster](drawing_faster)**.
| Place the last symbol again | A | [PR #1042](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1042) |
| Element picker at the cursor: type a name, Enter places it | Insert | [PR #1052](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1052) |
| Shortcut bar: commands for the selection, plus the picker | S | [PR #1053](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1053) |
| Repeat the last drawing or placing command | Enter (on the folio) | [PR #1056](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1056) |
| Repeat the last drawing or placing command | Enter (on the sheet) | [PR #1056](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1056) |
| Search every command by name and run it | Ctrl+Shift+M | [PR #1049](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1049) |
Command search makes every command reachable without knowing its menu, and
+16 -16
@@ -227,19 +227,19 @@ from before the setting existed need nothing.
| Tool | What it answers | Launches QET? |
|---|---|---|
| `qet_project_info` | Title, format version, folios, element/conductor counts per folio | No |
| `qet_elements` | Placed elements: uuid, type, position, label, information bag; filter by folio or name | No |
| `qet_project_info` | Title, format version, sheets, element/conductor counts per sheet | No |
| `qet_elements` | Placed elements: uuid, type, position, label, information bag; filter by sheet or name | No |
| `qet_conductors` | Conductors and their documentation fields (`num`, `formula`, `cable`, `bus`, `function`, `colour`, `section`); filter by attribute | No |
| `qet_diff` | **What an edit actually changed** — element moves/adds/removes/relabels, conductor field changes, folio fields/texts/shapes/images/symbol text fields/terminal strips | No |
| `qet_diff` | **What an edit actually changed** — element moves/adds/removes/relabels, conductor field changes, sheet fields/texts/shapes/images/symbol text fields/terminal strips | No |
| `qet_scan` | Sweep a directory of projects, counting nodes carrying an attribute, with distinct values found | No |
| `qet_element_info` | Introspect a `.elmt`: translated names, terminals, dynamic-text info fields, part counts | No |
| `qet_export` | Headless export: pdf, png, svg, bom, cables, wires, wiring, nets, links, info | Yes |
| `qet_edit` | **Change a project** — place, move, rotate, label, wire, number, cross-reference, add text/shapes/images, restyle a symbol's text fields, delete; returns a `qet_diff` of the result | Yes |
| `qet_query` | Read-only SQL `SELECT`/`WITH` against the project's SQLite database; omit `sql` to list queryable views/tables | Yes* |
| `qet_continuity` | ERC-style checks against the live Terminal/Conductor graph: unconnected terminals, potential mismatches, folio-report link mismatches | Yes* |
| `qet_project_new` | Start from nothing: an empty project with a title and folios, written and read back by QElectroTech itself | Yes* |
| `qet_continuity` | ERC-style checks against the live Terminal/Conductor graph: unconnected terminals, potential mismatches, sheet-report link mismatches | Yes* |
| `qet_project_new` | Start from nothing: an empty project with a title and sheets, written and read back by QElectroTech itself | Yes* |
| `qet_element_search` | Find a symbol in a collection by name (any language), link type, kind or terminal count; results carry the `common://` path and terminal index order `qet_edit` needs | No |
| `qet_check` | Design-rule checks: duplicate labels, unlabelled masters, unnumbered conductors, empty folios, masters missing a manufacturer reference | Yes* |
| `qet_check` | Design-rule checks: duplicate labels, unlabelled masters, unnumbered conductors, empty sheets, masters missing a manufacturer reference | Yes* |
| `qet_element_build` | Author a new `.elmt`: draw from lines/rects/ellipses/circles/arcs/polygons/text, with terminals to wire it by; computes and checks the size header | No |
\* Needs `QET_ENABLE_SCRIPTING=1`.
@@ -362,8 +362,8 @@ Across the shipped examples: 3190 conductors, not one with a cable value.
hangs. The tool uses the positional form.
- **Conductor identity is the hard part of `qet_diff`.** Conductors are keyed
by owning element uuid plus terminal, which is stable across a save — the
file's own folio-scoped integer ids are renumbered on every save and
would make every conductor of an untouched folio read as removed and
file's own sheet-scoped integer ids are renumbered on every save and
would make every conductor of an untouched sheet read as removed and
re-added. Where an element predates persisted uuids the end cannot be
resolved and keeps a `#`-marked unstable key; the diff then reports
`unstable_keys` instead of pretending to be comparable.
@@ -388,24 +388,24 @@ Across the shipped examples: 3190 conductors, not one with a cable value.
take `"conductor": "{uuid}"` (as `qet_conductors` reports it) in place of
`element` + `terminal`, which works where two conductors meet at a
terminal, as long as one of the conductor's two terminals carries only it.
- **A folio's wire defaults: `set_conductor_default`.**
- **A sheet's wire defaults: `set_conductor_default`.**
> **Status: pending.** This item describes
> [PR #1214](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1214),
> not yet merged. It does not work until that lands.
Sets one of the defaults in *Propriétés du folio* (*Folio properties*).
Sets one of the defaults in *Propriétés du folio* (*Sheet properties*).
`onetextperfolio` is the option *activer l'option un texte par potentiel*:
`"true"` draws one wire number per potential on that folio instead of one
`"true"` draws one wire number per potential on that sheet instead of one
per wire. Any `set_conductor` property is accepted too, as the starting
value for wires drawn later on that folio.
value for wires drawn later on that sheet.
```json
{"op": "set_conductor_default", "folio": 0, "property": "onetextperfolio", "value": "true"}
```
`"folio": -1` sets the project's defaults instead. Folios added
afterwards copy them; existing folios keep their own, so set each one.
`"folio": -1` sets the project's defaults instead. Sheets added
afterwards copy them; existing sheets keep their own, so set each one.
Like the dialogs, this has no undo.
- **A terminal can be given by its uuid**
([PR #1126](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1126)):
@@ -414,8 +414,8 @@ Across the shipped examples: 3190 conductors, not one with a cable value.
the op's own element — for `add_conductor`, each end's own. Unlike the
index, it tells apart two terminals at the same point. A uuid the element
does not have stops the run, with a note naming the argument.
- **`link_elements` takes a folio for each end**, because a master and its
slave are normally on different folios. Whether a pair may be linked is
- **`link_elements` takes a sheet for each end**, because a master and its
slave are normally on different sheets. Whether a pair may be linked is
decided by QElectroTech's own `isLinkable()`, so a script cannot make a
link the GUI would refuse.
- **An element must live inside a collection to be placeable.** An absolute
+11 -11
@@ -28,7 +28,7 @@ Two things follow that are easy to trip over:
- Ctrl also **toggles selection** when you *click* an item. A Ctrl+click adds
or removes that item from the selection; Ctrl held during a *drag* frees it
from the grid. Same key, two jobs, decided by whether you moved.
- **Ctrl+Shift is not available** as a modifier of your own. The folio view
- **Ctrl+Shift is not available** as a modifier of your own. The sheet view
reserves that combination for its own mode switch, so a Ctrl+Shift drag does
not behave like "Ctrl and Shift at once" everywhere.
@@ -50,25 +50,25 @@ Hold **Shift** as you press, and the label moves on its own.
While you drag an element's text, the status bar names the text grid in use
and repeats the hint: *release Shift, hold Ctrl to place freely*. Ctrl and
Shift together are reserved by the folio view (§1).
Shift together are reserved by the sheet view (§1).
### The text grid
Texts do not have to snap to the full folio grid. **Affichage ▸ Grille des
Texts do not have to snap to the full sheet grid. **Affichage ▸ Grille des
textes** (*View ▸ Text grid*), the **Textes 1:1** button on the **Affichage**
(*View*) toolbar, and *Preferences ▸ General ▸ Grille + Clavier* all set the same
choice:
| Choice | A dragged text snaps to |
|---|---|
| **1:1** (default) | the folio grid, as symbols do |
| **1:1** (default) | the sheet grid, as symbols do |
| **1:2**, **1:5**, **1:10** | a half, a fifth or a tenth of a grid step |
| **Désactivée** (*Off*) | the nearest unit, as with Ctrl |
Every step divides the folio grid exactly, so texts on different symbols still
Every step divides the sheet grid exactly, so texts on different symbols still
line up with each other. The choice is a preference of your installation, not
of the project: nothing in a saved file changes. The finer grid is not drawn on
the folio.
the sheet.
Before September 2026 an element's own text did not snap at all, so most labels
in older projects sit off the grid. The first drag of such a label pulls it
@@ -158,10 +158,10 @@ puts it back.
| **Ctrl**+mouse wheel | scroll up and down (default mouse mode); zoom in and out (trackpad/gesture mode) |
| **Ctrl**+**+** / **Ctrl**+**−** | zoom in and out |
| middle button drag | pan |
| **Ctrl**+wheel over the folio tabs | switch folio |
| **Ctrl**+wheel over the sheet tabs | switch sheet |
The zoom commands, trackpad mode and the *Centre on cursor* key are in
**[Finding your place on a folio](navigating_folios)** §4.
**[Finding your place on a sheet](navigating_folios)** §4.
---
@@ -173,7 +173,7 @@ placement is in progress and follows your pointer until you finish it.
| Key | Result |
|---|---|
| **Left click** | place it |
| **Right click** | cancel. The folio's own context menu is suppressed while a placement runs, which is why right-click cancels rather than opening a menu |
| **Right click** | cancel. The sheet's own context menu is suppressed while a placement runs, which is why right-click cancels rather than opening a menu |
| **Escape** | cancel, from the moment the placement starts |
> The **text** tool is the exception: neither Escape nor right-click cancels
@@ -194,7 +194,7 @@ rotating. It keeps its own grid settings, separate from the diagram's.
## 10. Things that catch people out
- **Ctrl+click versus Ctrl+drag** do different jobs, as above.
- **Ctrl+Shift is reserved** by the folio view; do not expect it to combine
- **Ctrl+Shift is reserved** by the sheet view; do not expect it to combine
freely.
- **Shift on an element's text** is the only way to move a label without its
element — there is no menu item for it.
@@ -211,6 +211,6 @@ rotating. It keeps its own grid settings, separate from the diagram's.
- **[Templates](templates)** — which are placed by dragging, and nothing else
- **[Aligning items](aligning_items)** — snap a selection back to the grid
- **[Grouping items](grouping_items)** — select and move several items as one
- **[Pictures on a folio](pictures)** — the handles for resizing, rotating and skewing a picture
- **[Pictures on a sheet](pictures)** — the handles for resizing, rotating and skewing a picture
- **[3D mouse](3d_mouse)** — panning and zooming with a SpaceMouse
- **[Tips & Tricks](tips_and_tricks)** — faster drawing generally
+39 -39
@@ -1,12 +1,12 @@
# Finding your place on a folio: go to a cell, keep the headers in sight
# Finding your place on a sheet: go to a cell, keep the headers in sight
Every folio has a grid border: numbered columns along the top, lettered rows
Every sheet has a grid border: numbered columns along the top, lettered rows
down the side. People use it to talk about a drawing — "the contactor in
B13", "the report to 4-B7" — and QElectroTech uses it too, in cross-reference
and folio-report labels.
and sheet-report labels.
This page covers three ways of using that grid while you work, and then the
zoom and pan controls for getting around a folio:
zoom and pan controls for getting around a sheet:
1. **[Going to a cell](#1-going-to-a-cell)** — type `B13`, or `4-B7` for a
cell on another page, and the view zooms there.
@@ -15,7 +15,7 @@ zoom and pan controls for getting around a folio:
the view instead of scrolling away.
3. **[Showing the cell limits](#3-showing-the-cell-limits-across-the-drawing)**
— faint dashed lines across the drawing where each column and row ends.
4. **[Moving around a zoomed-in folio](#4-moving-around-a-zoomed-in-folio)**
4. **[Moving around a zoomed-in sheet](#4-moving-around-a-zoomed-in-sheet)**
— the zoom commands, the mouse wheel and middle button, and a key that
brings the point under the mouse to the middle of the window.
@@ -31,7 +31,7 @@ an element by its label also understands cell references:
1. Type the cell, for example `B13`.
2. The list offers **Case B13** — or, for a cell on another page,
**Folio 4 (*that page's title*), case B7**.
**Sheet 4 (*that page's title*), case B7**.
3. Press **Enter**. The view zooms onto that cell, with one cell of margin on
every side, so you see the cell and its neighbours.
@@ -46,9 +46,9 @@ Case does not matter, and spaces are ignored.
| `B13` | row B, column 13, on the page you are on |
| `4-B7` | row B, column 7, on page 4 |
| `4B7`, `4 B7`, `p4b7`, `P4-B7`, `4/B7` | the same as `4-B7` |
| `AA3` | row AA — folios with more than 26 rows continue AA, AB, … |
| `AA3` | row AA — sheets with more than 26 rows continue AA, AB, … |
**`4-B7` is exactly what a cross-reference or a folio report prints** with the
**`4-B7` is exactly what a cross-reference or a sheet report prints** with the
default label `%f-%l%c` (see **[Linking wires across pages](folio_links)**).
So when a report arrow says `4-B7`, you can type those four characters into
Ctrl+G and land on its partner. If you changed the label format in your
@@ -56,12 +56,12 @@ project, type the page number and the cell in this order anyway.
### How the page number is counted
The page number is the folio's **position in the project**: the first tab is
The page number is the sheet's **position in the project**: the first tab is
1, the second is 2, and so on — the same number `%f` prints. It is not the
folio's own label from the title block (`%F`), which you may have set to
sheet's own label from the title block (`%F`), which you may have set to
something like `=A1` or `12a`.
Move a folio, and its number changes — exactly as the cross-references in the
Move a sheet, and its number changes — exactly as the cross-references in the
project renumber when you do.
### Columns that start at 0
@@ -75,9 +75,9 @@ always reads cells the way your border draws them.
| You typed | Why nothing is offered |
|---|---|
| `B40` on a folio with 17 columns | the cell is outside that folio's border |
| `9-B4` in a project with 3 folios | there is no page 9 |
| `P3` | this is **row P, column 3** on the current page. If the folio has no row P, nothing is offered. A page number always needs a cell after it — there is no "go to page 3" on its own |
| `B40` on a sheet with 17 columns | the cell is outside that sheet's border |
| `9-B4` in a project with 3 sheets | there is no page 9 |
| `P3` | this is **row P, column 3** on the current page. If the sheet has no row P, nothing is offered. A page number always needs a cell after it — there is no "go to page 3" on its own |
### When a label and a cell look the same
@@ -93,7 +93,7 @@ exactly, so typing `F1` lists the cell first and `-F1` after it.
## 2. Keeping the row and column headers visible
Zoom in on a large folio and the border's column numbers and row letters
Zoom in on a large sheet and the border's column numbers and row letters
scroll off the screen, so you can no longer tell which cell you are looking
at. Turn on **Affichage → Garder les en-têtes visibles** (*View → Keep headers
visible*) and two bars appear along the top and the left of the drawing area:
@@ -104,20 +104,20 @@ visible*) and two bars appear along the top and the left of the drawing area:
They follow every scroll and zoom, so the labels always sit over the cells
you are looking at.
![Zoomed in on a folio: the bars show columns 8–14 and rows D–F, with the cell limits dashed across the drawing](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/folio-cells-zoomed-in.png)
![Zoomed in on a sheet: the bars show columns 8–14 and rows D–F, with the cell limits dashed across the drawing](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/folio-cells-zoomed-in.png)
### Only when you need them
Each bar hides itself while the folio's **own** column (or row) header is
Each bar hides itself while the sheet's **own** column (or row) header is
fully on screen, and appears once zooming or scrolling pushes that header out
of sight. Zoomed out on a whole folio you therefore see only the folio's
of sight. Zoomed out on a whole sheet you therefore see only the sheet's
border, not the same numbers twice. The two bars work separately: scroll
sideways and the side bar comes on while the top one stays hidden.
When a bar comes or goes the drawing does not jump: the bar simply covers
or uncovers the edge of the view.
![Zoomed out: the folio's own border numbers and letters are visible, so neither bar is shown](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/folio-cells-zoomed-out.png)
![Zoomed out: the sheet's own border numbers and letters are visible, so neither bar is shown](https://raw.githubusercontent.com/wiki/qelectrotech/qelectrotech-source-mirror/images/folio-cells-zoomed-out.png)
### How the bars behave
@@ -126,18 +126,18 @@ or uncovers the edge of the view.
| Default | Off. Turning it on is remembered the next time you start QElectroTech |
| Size | Always the same thickness on screen, whatever the zoom — they do not grow as you zoom in |
| Zoomed far out | When the cells get narrower than their numbers, only some labels are written: every 2nd, 5th, 10th… column (0, 5, 10, …) and every 2nd, 5th… row (A, F, K, …) |
| Beyond the folio | The bars are blank past the edge of the border |
| Folios with a header hidden | If a folio's properties hide its row or column header (*Afficher les en-têtes* under *Lignes* or *Colonnes*), the matching bar is hidden on that folio too |
| Beyond the sheet | The bars are blank past the edge of the border |
| Sheets with a header hidden | If a sheet's properties hide its row or column header (*Afficher les en-têtes* under *Lignes* or *Colonnes*), the matching bar is hidden on that sheet too |
| Dark colour scheme | The bars use the application's colours, so they follow a dark scheme |
| Turning it on or off | The drawing area shrinks or grows by the bars' thickness; the drawing keeps its place on screen |
| Windows 11 style | A shadow of the old labels could be left behind when zooming with the wheel. Fixed by [PR #1047](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1047) |
| Folio with its row letters hidden | The top bar was one header width out of line with the columns. Fixed by [PR #1047](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1047) |
| Sheet with its row letters hidden | The top bar was one header width out of line with the columns. Fixed by [PR #1047](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1047) |
### What they are not
The bars are part of the window, not of the drawing. They are **never
printed** and never appear in a PDF, PNG, SVG or DXF export — what prints is
the folio's own border, exactly as before.
the sheet's own border, exactly as before.
### Limitations
@@ -152,7 +152,7 @@ the folio's own border, exactly as before.
## 3. Showing the cell limits across the drawing
The headers tell you *which* cell you are in; zoomed into the middle of a
folio they don't show *where it ends*. Turn on **Affichage → Afficher les
sheet they don't show *where it ends*. Turn on **Affichage → Afficher les
limites des cases** (*View → Show the cell limits*) and a faint dashed line
is drawn across the drawing at every column and row limit — see both
screenshots above.
@@ -162,7 +162,7 @@ screenshots above.
| Default | Off. Turning it on is remembered the next time you start QElectroTech |
| Look | Thin, faint and dashed, always one pixel wide whatever the zoom, so they don't read as wires |
| Stacking | Drawn under everything: symbols, wires and texts always sit on top |
| Folios with a header hidden | If a folio hides its column header, the vertical lines are not drawn on it; the same for its row header and the horizontal lines |
| Sheets with a header hidden | If a sheet hides its column header, the vertical lines are not drawn on it; the same for its row header and the horizontal lines |
| Dark colour scheme | Toned like the grid dots, so they stay faint on a dark background |
| With the header bars | Independent: use either, or both |
@@ -171,7 +171,7 @@ Like the bars, the lines are part of the view, not the drawing: they are
---
## 4. Moving around a zoomed-in folio
## 4. Moving around a zoomed-in sheet
### Zoom commands
@@ -181,14 +181,14 @@ shortcut can be changed in the shortcut editor.
| Command | Default shortcut | What it does |
|---|---|---|
| **Zoom avant** / **Zoom arrière** (*Zoom in / out*) | your platform's standard zoom keys — usually **Ctrl++** / **Ctrl+−**, not the bare + and − keys | one step in or out, about 15 % |
| **Zoom sur le contenu** (*Zoom on content*) | **Ctrl+8** | fits everything drawn on the folio into the window, ignoring the folio border — what other CAD programs call *zoom extents* |
| **Zoom adapté** (*Fit*) | **Ctrl+9** | fits the folio border into the window |
| **Zoom sur le contenu** (*Zoom on content*) | **Ctrl+8** | fits everything drawn on the sheet into the window, ignoring the sheet border — what other CAD programs call *zoom extents* |
| **Zoom adapté** (*Fit*) | **Ctrl+9** | fits the sheet border into the window |
| **Pas de zoom** (*No zoom*) | **Ctrl+0** | back to 100 % |
| **Centrer sur le curseur** (*Centre on cursor*) | none — see below | brings the point under the mouse to the middle of the window, keeping the zoom |
The zoom keys and the mouse wheel zoom **around the mouse pointer**: the
point under the pointer stays where it is while everything else grows or
shrinks. A quick way across a large folio is therefore to zoom out, put the
shrinks. A quick way across a large sheet is therefore to zoom out, put the
pointer on the part you want, and zoom back in.
### Mouse and trackpad
@@ -196,8 +196,8 @@ pointer on the part you want, and zoom back in.
| Action | Result |
|---|---|
| Mouse wheel | zoom in and out |
| **Ctrl**+mouse wheel | scroll the folio up and down, without zooming |
| Middle button held and dragged | pan: the folio follows the mouse |
| **Ctrl**+mouse wheel | scroll the sheet up and down, without zooming |
| Middle button held and dragged | pan: the sheet follows the mouse |
| **Mode Visualisation** (hand icon on the toolbar, or *Affichage → Mode Visualisation*) | the left button pans too; nothing can be selected or edited until you switch back to **Mode Selection** |
A trackpad sends its two-finger scroll as mouse-wheel turns, so with the
@@ -207,16 +207,16 @@ QElectroTech → Général* and it changes to:
| Action | Result |
|---|---|
| Two-finger swipe | scroll the folio in any direction |
| Two-finger swipe | scroll the sheet in any direction |
| **Ctrl**+two-finger swipe | zoom in and out |
The folio stops scrolling at its border. To zoom out further than the whole
folio, tick **Autoriser le dézoom au delà du folio** (*Allow zooming out
beyond the folio*) on the same page.
The sheet stops scrolling at its border. To zoom out further than the whole
sheet, tick **Autoriser le dézoom au delà du folio** (*Allow zooming out
beyond the sheet*) on the same page.
### Centre on cursor
**Affichage → Centrer sur le curseur** scrolls the folio so the point under
**Affichage → Centrer sur le curseur** scrolls the sheet so the point under
the mouse becomes the middle of the window. The zoom does not change. Point
at the part of the drawing you want to look at next, press the key, and it
comes to the middle; press it again somewhere else to keep going. It is the
@@ -235,8 +235,8 @@ used or would get in the way of typing, so it ships without one. To set one:
| Situation | What happens |
|---|---|
| Pointer over the folio | the point under it moves to the middle of the window |
| Pointer near the folio border | the folio scrolls as far as its border allows, so the point ends up as close to the middle as it can get |
| Pointer over the sheet | the point under it moves to the middle of the window |
| Pointer near the sheet border | the sheet scrolls as far as its border allows, so the point ends up as close to the middle as it can get |
| Pointer outside the drawing area — for instance, choosing the command from the menu with the mouse | nothing |
---
@@ -250,4 +250,4 @@ used or would get in the way of typing, so it ships without one. To set one:
- **[Keyboard-only control](keyboard_control)** — every other shortcut,
including Ctrl+G for elements
- **[Preferences reference](preferences)** — the other settings pages
- **[3D mouse](3d_mouse)** — panning and zooming around a folio with a SpaceMouse
- **[3D mouse](3d_mouse)** — panning and zooming around a sheet with a SpaceMouse
+8 -8
@@ -1,13 +1,13 @@
# Building a custom nomenclature or summary table
Nomenclature (BOM) and folio-summary tables aren't fixed layouts — each one
Nomenclature (BOM) and sheet-summary tables aren't fixed layouts — each one
is backed by a query you build interactively, over the same views
**[The project database](project_database)** documents. The same builder
also drives **Projet → Exporter au format CSV**, for a report you want as a
file rather than a table on a folio.
file rather than a table on a sheet.
Source: `sources/dataBase/ui/elementquerywidget.{cpp,h}` (nomenclature),
`sources/dataBase/ui/summaryquerywidget.{cpp,h}` (folio summary) — wired
`sources/dataBase/ui/summaryquerywidget.{cpp,h}` (sheet summary) — wired
into a table's properties via `projectdbmodelpropertieswidget.cpp`, and
into the CSV export dialog via `ui/bomexportdialog.{cpp,h}`.
@@ -18,7 +18,7 @@ into the CSV export dialog via `ui/bomexportdialog.{cpp,h}`.
| Widget | Queries | Table it configures |
|---|---|---|
| `ElementQueryWidget` | `element_nomenclature_view` | nomenclature / BOM |
| `SummaryQueryWidget` | `project_summary_view` | folio summary |
| `SummaryQueryWidget` | `project_summary_view` | sheet summary |
Both work the same way: pick columns, order them, optionally filter and
group, and the widget assembles the `SELECT` for you.
@@ -84,9 +84,9 @@ Whatever you type into "Edit SQL query" has to be a single `SELECT` or
- **As you type**, the field's border turns red and a message appears
underneath explaining why — before you've tried to run or save anything.
- **Whenever the query actually runs** — Preview, CSV export, or inserting
the table onto a folio — as a second, independent check. A query that
the table onto a sheet — as a second, independent check. A query that
reached this widget some other way (loaded from a saved report, or from
a table already placed on a folio) is checked here too, not just the
a table already placed on a sheet) is checked here too, not just the
live typing feedback.
A query is rejected if it isn't a single statement (a trailing `;` is fine,
@@ -103,7 +103,7 @@ from this box, not to be a hard security boundary.
builder inside a dedicated export dialog, with a **Preview** button below
it: run the current query and see the actual result in a table before
deciding to save it as a CSV file. This is the export path specifically —
inserting a table onto a folio (**Projet → Ajouter une nomenclature** /
inserting a table onto a sheet (**Projet → Ajouter une nomenclature** /
**Ajouter un sommaire**) uses the same builder widget but doesn't have a
separate preview step, since the table itself *is* the live result once
placed.
@@ -140,7 +140,7 @@ Both buttons sit next to the existing save/load controls in §5.
- **Not the same as `--export-bom`.** The CLI export reads the same view but
with its own fixed column set — see
**[Automating QElectroTech](api_reference)**. This widget is for a table
rendered *on* a folio, and its column choices don't affect the CLI
rendered *on* a sheet, and its column choices don't affect the CLI
export or vice versa.
---
+11 -11
@@ -1,6 +1,6 @@
# Pictures on a folio
# Pictures on a sheet
A folio can carry pictures alongside the drawing: a photo of the cabinet, a
A sheet can carry pictures alongside the drawing: a photo of the cabinet, a
supplier's logo, a screenshot of an HMI page. QElectroTech copies the picture
**into the project file**, so the project stays complete when it is moved or
sent on; nothing points back to the file you picked.
@@ -15,10 +15,10 @@ picture's own right-click menu, and what it costs in the saved file.
1. Click **Ajouter une image** (*Add a picture*) on the **Ajouter** (*Add*)
toolbar.
2. Pick a file: PNG, JPEG, BMP or SVG.
3. Click on the folio where the picture should go.
3. Click on the sheet where the picture should go.
A picture is an ordinary folio item: it moves, copies, pastes, snaps to the
folio grid and undoes like everything else.
A picture is an ordinary sheet item: it moves, copies, pastes, snaps to the
sheet grid and undoes like everything else.
---
@@ -57,8 +57,8 @@ properties*) panel shows:
Text typed in **Libellé** is drawn centred under the picture. It belongs to
the picture: it moves, copies, rotates and prints with it, and clicking the
label selects the picture. It stays at normal folio text size however large or
small the picture is scaled, using the font set for folio texts in the
label selects the picture. It stays at normal sheet text size however large or
small the picture is scaled, using the font set for sheet texts in the
preferences. Leave the field empty to remove the label.
Before the label existed, the only way to caption a picture was a separate free
@@ -71,12 +71,12 @@ There is no per-label font, colour or position.
## 4. The right-click menu
Right-click a picture for its own commands, above the usual folio ones:
Right-click a picture for its own commands, above the usual sheet ones:
| Command | Does |
|---|---|
| **Remplacer l'image…** (*Replace picture*) | swaps in another file, keeping position, scale and rotation; any crop or transparent colours are cleared |
| **Enregistrer l'image sous…** (*Save picture as*) | writes the picture as it looks on the folio, crop and transparency applied, to PNG, JPEG, BMP or SVG |
| **Enregistrer l'image sous…** (*Save picture as*) | writes the picture as it looks on the sheet, crop and transparency applied, to PNG, JPEG, BMP or SVG |
| **Enregistrer l'image d'origine sous…** (*Save original picture as*) | writes the picture as it was inserted, before any crop or transparency |
| **Couleur transparente…** (*Transparent colour*) | picks one or more colours to make see-through, each with a tolerance — for a logo on a white background, say |
| **Rogner…** (*Crop*) | keeps only a rectangle of the picture |
@@ -92,7 +92,7 @@ saving a see-through picture to one of them.
## 5. In the project file
Each picture is an `<image>` element in its folio's `<images>` block (see
Each picture is an `<image>` element in its sheet's `<images>` block (see
**[Project XML](project_diagram_child_images)**):
| Part | Holds |
@@ -129,7 +129,7 @@ A picture also appears in the project database's `image` table and in
| Limitation | Detail |
|---|---|
| DXF export | pictures become outline boxes: see **[DXF import & export](dxf)** |
| Label styling | the label uses the folio text font; no per-label font, colour or position |
| Label styling | the label uses the sheet text font; no per-label font, colour or position |
| No link to the source file | changing the file on disk does not update the project; use **Remplacer l'image…** |
---
+2 -2
@@ -71,7 +71,7 @@ and disables the ordinary type list, exactly as documented in
## 3. Linking a slave to a specific I/O entry
Both elements need to already be placed somewhere in the project — the
master on any folio, the slave wherever its wire actually is. Then:
master on any sheet, the slave wherever its wire actually is. Then:
1. Select the slave on its diagram and open its properties. Because its
type is PLC, the properties panel shows an **Automate (PLC)** tab
@@ -86,7 +86,7 @@ master on any folio, the slave wherever its wire actually is. Then:
Once linked, the tab changes shape: the tree disappears, replaced by
**Cet élément est déjà lié**, a **Délier** button, and **Voir cet élément**
(jumps to and highlights the master on its folio). Unlink first if you
(jumps to and highlights the master on its sheet). Unlink first if you
need to attach the slave somewhere else — there's no direct re-link.
### Finding the right row in a large project
+13 -13
@@ -5,7 +5,7 @@ Print, Shortcuts. That's the whole list — there is no separate "Display" or
"Grid" category; those live inside General.
A second, related dialog — **Project Properties** — reuses one of these
pages (New project/New folio) to edit the *current project's* defaults
pages (New project/New sheet) to edit the *current project's* defaults
instead of the application's. See §2.
Source: `sources/configdialog.cpp` (the dialog shell),
@@ -34,7 +34,7 @@ title-block templates, custom title-block templates, and custom macros.
- Use system colours
- Use trackpad gestures
- Allow zooming out beyond the folio edge
- Allow zooming out beyond the sheet edge
- HDPI scaling rounding policy (round up at .5, always ceil, always floor,
round up at .75, or no rounding) — matters on fractional-scale displays
- Language
@@ -65,7 +65,7 @@ Three more options in this group come with the features on
### Element texts, independent texts, other texts
Default font size and behaviour for each of these three separately — an
element's own dynamic text fields, free-standing text on a folio, and
element's own dynamic text fields, free-standing text on a sheet, and
everything else, respectively.
### Grid and keyboard movement
@@ -74,28 +74,28 @@ everything else, respectively.
- Keyboard-nudge step (1–30) — how far arrow keys move a selection
- Keyboard-nudge step with **Alt** held (1–9) — the fine-movement modifier
- *Grille des textes déplacés à la souris* (text grid for dragged texts): 1:1,
1:2, 1:5, 1:10 of the folio grid, or off — see
1:2, 1:5, 1:10 of the sheet grid, or off — see
**[Mouse modifiers](mouse_modifiers)** §2
---
## 2. New project / New folio
## 2. New project / New sheet
**The same page, two names**, depending on where you open it:
| Opened from | Title | Edits |
|---|---|---|
| *Edit → Preferences* | **New project** | the defaults every future new project starts with |
| A project's own *Properties* dialog | **New folio** | that one project's defaults |
| A project's own *Properties* dialog | **New sheet** | that one project's defaults |
Five tabs, and this is the page behind everything documented in
**[Project XML](project_XML)**'s `newdiagrams` block:
| Tab | Sets |
|---|---|
| **Folio** | border (rows/columns/size) and title block template |
| **Sheet** | border (rows/columns/size) and title block template |
| **Conductor** | the default conductor properties every new wire starts with |
| **Folio reports** | the label formula for `next_report`/`previous_report` elements — see **[Linking wires across pages](folio_links)** §4 |
| **Sheet reports** | the label formula for `next_report`/`previous_report` elements — see **[Linking wires across pages](folio_links)** §4 |
| **Cross-references** | master/slave label formulas — see **[Linking elements](element_linking)** |
| **Guides** | default alignment guides |
@@ -113,7 +113,7 @@ expose:
- Output format: PNG, JPG, BMP, SVG or DXF (Print naturally constrains this
further)
- Export the whole folio (border + title block + content) or elements only
- Export the whole sheet (border + title block + content) or elements only
- Draw grid / draw border / draw title block
- Draw terminals / draw terminal names — off by default, since the
interactive editor's terminal markers aren't meant to appear in output
@@ -122,7 +122,7 @@ expose:
These are the same settings the **File → Export** dialog itself exposes —
this page just sets what a *new* export starts with, the same relationship
New project/New folio has to a brand-new project.
New project/New sheet has to a brand-new project.
For the DXF format's own fidelity limits (what does and doesn't survive
export), see **[DXF import & export](dxf)**.
@@ -168,13 +168,13 @@ to commands. See **[3D mouse](3d_mouse)**.
- **No per-diagram auto-save interval.** QET writes a periodic
crash-recovery backup in the background, but its timing isn't a setting
— see the User Manual's note on this.
- **No project-wide "page size" setting** separate from the Folio tab's
- **No project-wide "page size" setting** separate from the Sheet tab's
border configuration above — border rows/columns/size *is* the page
layout.
- **No dark-mode toggle distinct from "use system colours."** Theme follows
the OS unless you opt out of that.
- **The folio background colour is not on any page.** It is the **Couleur de
fond du folio** (*Folio background colour*) button on the **Affichage**
- **The sheet background colour is not on any page.** It is the **Couleur de
fond du folio** (*Sheet background colour*) button on the **Affichage**
(*View*) toolbar: *Couleur système* (follow the system theme, dark on a dark
desktop), a list of fixed colours, recent choices, or *Autre couleur…*. It
applies to every open project and, since September 2026, is remembered
+18 -18
@@ -7,7 +7,7 @@ different defaults.
| You want | Use | What it is |
|---|---|---|
| Paper, or a PDF | **File → Print**, or **File → Export to PDF** | the same window, with the output format switched |
| PNG, JPEG, BMP, SVG or DXF | **File → Export to images** | a per-folio dialog with its own size controls |
| PNG, JPEG, BMP, SVG or DXF | **File → Export to images** | a per-sheet dialog with its own size controls |
| The same thing from a script | `qelectrotech --export-pdf` / `--export-png` / `--export-svg` | see **[CLI reference](cli_reference)** |
---
@@ -17,12 +17,12 @@ different defaults.
**File → Export to PDF** opens the print window with the output format set to
PDF. Everything below applies to both.
You get a folio list with **check all** / **uncheck all**, a live preview, and
You get a sheet list with **check all** / **uncheck all**, a live preview, and
these options:
| Option | Default | Effect |
|---|---|---|
| **Fit in page** | on | scale each folio to the paper. Turn it off to print at true size, which may span several sheets |
| **Fit in page** | on | scale each sheet to the paper. Turn it off to print at true size, which may span several sheets |
| **Use full page** | off | ignore the printer's unprintable margin and use the whole sheet. Only do this if the printer really can |
| **Draw border** | on | the frame with row and column headers |
| **Draw title block** | on | the title block |
@@ -33,17 +33,17 @@ these options:
There is deliberately **no grid option here**: the editor grid is never printed.
### Picking folios by date
### Picking sheets by date
Above the folio list is a date filter — **Toutes les dates**, **À partir de la
Above the sheet list is a date filter — **Toutes les dates**, **À partir de la
date du**, **À la date du**. It does not filter the printout; it **ticks and
unticks the folio list for you**, using each folio's title-block date:
unticks the sheet list for you**, using each sheet's title-block date:
| Choice | Ticks |
|---|---|
| All dates | every folio |
| From the date | folios dated on or after the date you pick |
| On the date | folios dated exactly that date |
| All dates | every sheet |
| From the date | sheets dated on or after the date you pick |
| On the date | sheets dated exactly that date |
That makes "print everything revised since the 3rd" one click rather than
forty. You can still tick and untick by hand afterwards.
@@ -53,20 +53,20 @@ export's — changing one does not change the other.
### Two things a QElectroTech PDF does that people do not expect
- **Cross-references become clickable.** Cross-references and folio reports are
- **Cross-references become clickable.** Cross-references and sheet reports are
turned into internal hyperlinks, so clicking a reference in the PDF jumps to
the folio it points at. This happens automatically, on both the GUI and the
the sheet it points at. This happens automatically, on both the GUI and the
command-line path — nothing to switch on.
- **Component information can be attached as pop-up annotations.** Tick
**Component information** (only shown when the output is a PDF) and each
element's information fields are attached to it as a PDF annotation a reader
can open. Folio reports and slave elements are skipped.
can open. Sheet reports and slave elements are skipped.
---
## 2. Exporting images
**File → Export to images** is a different dialog: one row per folio, each with
**File → Export to images** is a different dialog: one row per sheet, each with
its own file name, **width × height**, a **keep ratio** toggle, a **reset
size** button, a **preview**, and a **copy to clipboard** button. Plus select
all / deselect all.
@@ -87,7 +87,7 @@ These apply to image export, and their out-of-the-box values are:
| Option | Default | Notes |
|---|---|---|
| **Exported area** | border | the folio **with** its border and title block. The alternative is elements only — the drawing cropped to its content |
| **Exported area** | border | the sheet **with** its border and title block. The alternative is elements only — the drawing cropped to its content |
| **Draw grid** | off | |
| **Draw border** | on | |
| **Draw title block** | on | |
@@ -110,9 +110,9 @@ documents folder, and falls back to it if the saved folder no longer exists.
| Situation | Path |
|---|---|
| Sending a schematic to someone | PDF — it keeps the clickable cross-references |
| Putting a folio in a document or an email | PNG at a chosen size |
| Putting a sheet in a document or an email | PNG at a chosen size |
| Handing a drawing to another CAD tool | SVG or DXF |
| A folio for the web, over a coloured background | SVG with a transparent background |
| A sheet for the web, over a coloured background | SVG with a transparent background |
| The same export every week | the command line — see **[CLI reference](cli_reference)** |
---
@@ -121,7 +121,7 @@ documents folder, and falls back to it if the saved folder no longer exists.
- **The editor grid is never in the output.** Grid and guides are off by
default for image export and are not offered at all when printing.
- **"Fit in page" is on by default**, so a printed folio is scaled to the
- **"Fit in page" is on by default**, so a printed sheet is scaled to the
paper. If you need true scale, turn it off and expect more sheets.
- **Elements-only area crops to the drawing**, which is usually what you want
for a figure in a document and never what you want for a drawing someone has
@@ -129,7 +129,7 @@ documents folder, and falls back to it if the saved folder no longer exists.
- **Print settings and image-export settings are separate.** Setting up one
does not set up the other.
- **SVG transparency only applies to SVG.** Ticking it for a PNG does nothing.
- **The folio background colour is screen-only for printing.** The background
- **The sheet background colour is screen-only for printing.** The background
chosen with the *Couleur de fond du folio* button on the *Affichage* toolbar
is used by **File → Export to images**, which exports what you see, but
printing and PDF always use white, and so do command-line exports.
+15 -15
@@ -17,7 +17,7 @@ Source: `sources/dataBase/projectdatabase.{h,cpp}`.
## 1. Why it exists
Answering "list every component in this project, with manufacturer references,
grouped by folio" from a graphics scene means walking thousands of
grouped by sheet" from a graphics scene means walking thousands of
`QGraphicsItem`s and comparing strings. Answering it from a table is a `SELECT`.
So QET keeps the *same* information in a second shape, one that is good at
@@ -25,12 +25,12 @@ queries, and uses it for the things that are naturally queries:
| Consumer | What it reads |
|---|---|
| Nomenclature / BOM tables placed on a folio | `element_nomenclature_view`, via `ProjectDBModel` |
| Nomenclature / BOM tables placed on a sheet | `element_nomenclature_view`, via `ProjectDBModel` |
| The nomenclature query builder | any of the views, assembled in `ElementQueryWidget` |
| Wiring list dialog | `wiring_list_view` |
| `--export-bom` (CLI) | `element_nomenclature_view` |
| `--export-wires`, `--export-cables` (CLI) | `wiring_list_view` |
| Folio summary tables | `project_summary_view` |
| Sheet summary tables | `project_summary_view` |
| Scripting's `qet.query()` | any table or view |
None of these are storage. Every one of them is a *report* about data that
@@ -79,25 +79,25 @@ Nine tables:
| Table | Key | Notes |
|---|---|---|
| `diagram` | `uuid` | plus `pos`, the folio order |
| `diagram` | `uuid` | plus `pos`, the sheet order |
| `element` | `uuid` | `diagram_uuid`, `pos`, `type`, `sub_type` |
| `diagram_info` | `diagram_uuid` | one column per `QETInformation::diagramInfoKeys()` — 9 today |
| `element_info` | `element_uuid` | one column per `QETInformation::elementInfoKeys()` — 57 today |
| `terminal` | **(`uuid`, `element_uuid`)** | see §4 |
| `conductor` | `uuid` | both endpoints as (terminal uuid, element uuid) pairs |
| `shape` | `uuid` | lines, rectangles, ellipses, polygons: `type`, `color`, `fill` |
| `independent_text` | `uuid` | free texts on a folio: `text`, `rotation` |
| `independent_text` | `uuid` | free texts on a sheet: `text`, `rotation` |
| `image` | `uuid` | pictures: `pixel_width`, `pixel_height` of the source image |
The last three share their first columns: `uuid`, `diagram_uuid`, `pos` (the
folio cell of the item's top-left corner, as for `element`), and `x`, `y`,
`width`, `height`, the item's bounding box on the folio. They follow edits as
sheet cell of the item's top-left corner, as for `element`), and `x`, `y`,
`width`, `height`, the item's bounding box on the sheet. They follow edits as
they happen, like the element and conductor tables.
Four views: `element_nomenclature_view`, `project_summary_view`,
`wiring_list_view`, and `drawing_item_view`, which lists shapes, texts and
pictures together with a `kind` column (`shape`, `text`, `image`) and the
folio's position in the project as `folio`:
sheet's position in the project as `folio`:
```sql
SELECT kind, folio, pos, description FROM drawing_item_view ORDER BY folio, pos;
@@ -111,7 +111,7 @@ consequence of the cache being derived.
### The filter lives in the view, not the table
`element` holds **every** element type, slaves and folio reports included.
`element` holds **every** element type, slaves and sheet reports included.
Restricting to "things a parts list should mention"
(`type IN ('simple','terminal','master','thumbnail')`) happens inside
`element_nomenclature_view`.
@@ -147,18 +147,18 @@ fine. So do conductors drawn or saved by a recent QElectroTech. Items saved
by an older version, without a `uuid`, get one worked out when the project
opens, the same every time, and saved from then on:
- A symbol gets one from its type, its position on the folio and its
- A symbol gets one from its type, its position on the sheet and its
rotation
([PR #1105](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1105)).
- A wire gets one from **what it connects** — the symbol and terminal at
each end — never from its place in the file or its folio's number, so
inserting or moving a folio does not change it. Once saved, reconnecting
each end — never from its place in the file or its sheet's number, so
inserting or moving a sheet does not change it. Once saved, reconnecting
the wire keeps it
([PR #1107](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1107)).
A worked-out uuid is never one the file already carries.
- Shapes, free texts and pictures on a folio, and the parts drawn inside a
symbol, get one from their folio, their kind and their order in the file.
Paste and folio duplication give the copies new ids. Older versions of
- Shapes, free texts and pictures on a sheet, and the parts drawn inside a
symbol, get one from their sheet, their kind and their order in the file.
Paste and sheet duplication give the copies new ids. Older versions of
QElectroTech open such files and drop the attribute when they save.
### Terminals
+1 -1
@@ -155,7 +155,7 @@ You now have a basic electrical diagram showing:
- Browse **[Features](features)** to see what else QET can do
**Create More:**
- Add more folios (pages) to your project via **Project → New Folio**
- Add more sheets (pages) to your project via **Project → New Sheet**
- Create multi-page electrical schematics
- Export to PDF, PNG, or SVG
+4 -4
@@ -197,7 +197,7 @@ qet.addConductor(0, coil, a2, lamp, qet.terminalIndex(0, lamp, "{77aa…}"));
symbol file's terminals. Every terminal of an opened project has one (see
[the project database](project_database), section 4).
### A folio's wire defaults
### A sheet's wire defaults
> **Status: pending.** This section describes
> [PR #1214](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1214),
@@ -208,12 +208,12 @@ qet.setConductorDefault(folioIndex, property, value) // -> false if refused
qet.conductorDefault(folioIndex, property) // -> "" if unknown
```
The defaults in *Propriétés du folio* (*Folio properties*): what wires drawn
later on the folio start from, and the folio-wide option
The defaults in *Propriétés du folio* (*Sheet properties*): what wires drawn
later on the sheet start from, and the sheet-wide option
*activer l'option un texte par potentiel*, named `onetextperfolio`
(`"true"` / `"false"`). The other property names are the ones
`setConductorProperty()` takes. A `folioIndex` of `-1` means the project's
defaults, which each folio added later copies.
defaults, which each sheet added later copies.
```js
for (var i = 0; i < qet.folioCount(); i++)
+8 -8
@@ -1,6 +1,6 @@
# Search & Replace
Bulk-edit properties across a whole project: folio titles, element labels
Bulk-edit properties across a whole project: sheet titles, element labels
and information, conductor text, independent text. Despite the name,
**this isn't text find/replace** — see §2 for what it actually does.
@@ -14,15 +14,15 @@ logic), `ui/searchandreplacewidget.cpp` (the main scoping tree),
The main dialog is a tree of everything matched, grouped by kind:
- **Folios**
- **Sheets**
- **Text fields** (independent text)
- **Elements**, further split into simple / master / slave / folio-report /
- **Elements**, further split into simple / master / slave / sheet-report /
terminal — the same categories **[Linking elements](element_linking)**
documents
- **Conductors**
Right-click a folio in the tree for **Select the elements/conductors/texts
of this folio** — jumps straight from a search result to a real selection on
Right-click a sheet in the tree for **Select the elements/conductors/texts
of this sheet** — jumps straight from a search result to a real selection on
the canvas, useful for checking a match before you commit to changing it.
---
@@ -30,7 +30,7 @@ the canvas, useful for checking a match before you commit to changing it.
## 2. It sets values, it doesn't find-and-replace text
Each category opens a dialog with one field per property (label, comment,
folio title, conductor colour…). **Leave a field blank and that property is
sheet title, conductor colour…). **Leave a field blank and that property is
left completely untouched** on everything matched. Fill one in, and it
**replaces the value outright** — not a substring swap, the whole field
becomes what you typed.
@@ -59,13 +59,13 @@ Matches `SearchAndReplaceWorker`'s four target types:
| Category | Typical fields |
|---|---|
| Folio | title, author, indexrev, and other title-block fields |
| Sheet | title, author, indexrev, and other title-block fields |
| Element | label and the standard element-information fields |
| Conductor | wire number, formula, function, tension/protocol, wire colour, wire section, drawn colour and second colour, two-colour on/off, dash size, line style, thickness, show-text, text size, text rotation on horizontal and vertical runs, both alignments, and the single-line symbols |
| Independent text | the text content itself |
An **Advanced** mode combines several of these into one operation across
mixed selections, rather than working through folios/elements/conductors
mixed selections, rather than working through sheets/elements/conductors
one dialog at a time.
> **Two conductor fields are missing: Cable and Bus.** They are the only
+15 -15
@@ -1,8 +1,8 @@
# Templates (the "Modèles" tab)
A **template** is a saved chunk of a folio — the elements you had selected,
A **template** is a saved chunk of a sheet — the elements you had selected,
with their own symbol definitions travelling inside the file — that you can
drop back onto any folio, in any project, as a group. QElectroTech calls them
drop back onto any sheet, in any project, as a group. QElectroTech calls them
templates in the interface and *macros* in the source and on disk (`.qetmak`);
the two words mean the same thing.
@@ -14,16 +14,16 @@ symbol; a template is an arrangement of them.
> its name in the list does nothing at all — deliberately, in the code — and
> its right-click menu has no "insert" entry. If you have selected a template
> and waited for something to happen, nothing was broken: drag it onto the
> folio instead. This is the single most common confusion about the feature.
> sheet instead. This is the single most common confusion about the feature.
---
## 1. Creating a template
1. On a folio, select the items you want to keep. Anything you can select
1. On a sheet, select the items you want to keep. Anything you can select
works — elements, conductors, texts, images.
2. **Right-click the selection → "Créer un template"**. The entry only appears
when something is selected; right-clicking empty space gives you the folio
when something is selected; right-clicking empty space gives you the sheet
menu instead (properties, add/remove row or column).
3. A dialog, *"Enregistrer un template"*, asks where to put it. Pick the
collection in the tree, type a name in **"Nom du nouveau template"**, and
@@ -42,16 +42,16 @@ template is listed in the panel.
## 2. Placing a template
Open the **Modèles** tab of the elements panel (beside **Collections**),
then **drag the template onto the folio**.
then **drag the template onto the sheet**.
| Step | What happens |
|---|---|
| You drop it on the folio | A semi-transparent preview of the whole template appears and follows the pointer, snapped to the grid |
| You drop it on the sheet | A semi-transparent preview of the whole template appears and follows the pointer, snapped to the grid |
| **Left click** | The template is placed at the preview's position |
| **Right click** | Placement is cancelled, nothing is added |
| **Escape** | Also cancels — from the moment you drop, not just after the first click |
While a placement is in progress the folio's own right-click menu is switched
While a placement is in progress the sheet's own right-click menu is switched
off, which is why right-click cancels rather than opening a menu.
What does **not** place a template, by design:
@@ -121,7 +121,7 @@ project does not need the elements to be installed already.
| Part | What it holds |
|---|---|
| `<collection>` | one `<element>` per **distinct** symbol used, with its complete definition — a template using six identical relays stores the relay once |
| `<diagram_content>` | the selected content itself, as a normal folio fragment |
| `<diagram_content>` | the selected content itself, as a normal sheet fragment |
| `type` attributes | rewritten to `macro://…` so the placed items resolve against the definitions carried in the file |
A template holding a single lamp is around 3 KB, almost all of it the symbol
@@ -141,7 +141,7 @@ definition.
| Edited after saving | re-create it from a new selection | element editor | n/a |
There is no template editor: to change a template, place it, adjust it on a
folio, and save a new template over the old name.
sheet, and save a new template over the old name.
---
@@ -156,7 +156,7 @@ folio, and save a new template over the old name.
so the names you choose are the only clue to what they contain —
[issue #932](https://github.com/qelectrotech/qelectrotech-source-mirror/issues/932).
- If you are running a development build from before **13 September 2026**,
dragging a template onto a folio does nothing on Qt 6 builds; that was
dragging a template onto a sheet does nothing on Qt 6 builds; that was
fixed in
[PR #853](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/853).
Update before concluding the feature is broken.
@@ -165,13 +165,13 @@ folio, and save a new template over the old name.
## 7. Troubleshooting
**"I select my template in the list and nothing lands on the folio."**
Expected: selecting does nothing. Drag it onto the folio instead. See the note
**"I select my template in the list and nothing lands on the sheet."**
Expected: selecting does nothing. Drag it onto the sheet instead. See the note
at the top of this page.
**"I dragged it and still nothing happened."**
Check the build date — see the Qt 6 note above. Then check you dropped inside
the folio's drawing area rather than the grey surround.
the sheet's drawing area rather than the grey surround.
**"The preview is stuck to my pointer."**
A placement is in progress: left click to place it, or press Escape or right
@@ -191,6 +191,6 @@ path, or copy the `.qetmak` files into the default folder above.
- **[Using the element editor](element_editor)** — for building the single
symbols a template is assembled from
- **[Preferences reference](preferences)** — where the templates folder is set
- **[Grouping items](grouping_items)** — keeping items together on the folio, rather than saving them for reuse
- **[Grouping items](grouping_items)** — keeping items together on the sheet, rather than saving them for reuse
- **[Tips & Tricks](tips_and_tricks)** — other ways to speed up repeated
drawing
+11 -11
@@ -1,9 +1,9 @@
# Terminal strips
A terminal strip in QElectroTech is a **separate object from the terminals
drawn on your folios**. The folio terminals stay where they are; the strip is a
drawn on your sheets**. The sheet terminals stay where they are; the strip is a
list that references them, adds the terminals that exist only in the cabinet,
records levels and bridges, and can be drawn on a folio as a strip plan.
records levels and bridges, and can be drawn on a sheet as a strip plan.
> **Status: marked (DEV).** The menu entry is
> *Project → Terminal strip manager (DEV)*, and that label is in the shipped
@@ -49,7 +49,7 @@ mounting plate door
Level 0 is the back. That ordering is the same one the editor's *Level* column
shows and the same one bridging compares against.
### Real terminals that are not on any folio
### Real terminals that are not on any sheet
A real terminal does **not** have to correspond to a drawn terminal element. A
terminal you have reserved on the rail but not drawn — a spare, a future
@@ -57,10 +57,10 @@ connection, a manufacturer-supplied end block — exists in the strip as a real
terminal with no element behind it.
This is why a strip's terminal count can legitimately exceed the number of
terminal elements in your folios.
terminal elements in your sheets.
Do not confuse these with the editor's **Bornes indépendantes** (*Independent
terminals*) list, which is the opposite case: terminals **drawn on a folio**
terminals*) list, which is the opposite case: terminals **drawn on a sheet**
that are **not in any strip yet**. Moving those into a strip is covered in
§2, *Moving drawn terminals into a strip*.
@@ -74,7 +74,7 @@ table.
A strip carries five pieces of identification: **installation**, **location**,
**name**, **comment** and **description**. Installation and location are the
same concepts as a folio's `plant` and `locmach` — a strip is addressed the same
same concepts as a sheet's `plant` and `locmach` — a strip is addressed the same
way an element is.
Terminals reach a strip by being added to it, either from the drawn terminal
@@ -107,7 +107,7 @@ Type and function come from the terminal element's own definition — see
> [#1199](https://github.com/qelectrotech/qelectrotech-source-mirror/pull/1199)).
> Release 0.100 has the button only.
Every terminal element drawn on a folio that is not yet in a strip is listed in
Every terminal element drawn on a sheet that is not yet in a strip is listed in
the tree under **Bornes indépendantes** (*Independent terminals*). Click any one
of them and the right-hand side shows **all** of them in a table, with the
move controls at the top right.
@@ -205,9 +205,9 @@ reads as documentation.
---
## 5. Drawing a strip on a folio
## 5. Drawing a strip on a sheet
A strip can be placed on a folio as a graphical item. What gets drawn is
A strip can be placed on a sheet as a graphical item. What gets drawn is
governed by a **layout pattern**, a named, reusable set of geometry: header
rectangle and text orientation, spacer, per-level terminal rectangles, terminal
and cross-reference text height, position and orientation, font, and the
@@ -226,7 +226,7 @@ them; the strip plan will not show them all.
## 6. How it is stored
Strips live in the project file, not in the folios:
Strips live in the project file, not in the sheets:
```xml
<project>
@@ -268,7 +268,7 @@ its uuid loses its place in the strip.
- The feature is labelled **(DEV)** in the interface. Its data is saved and
reloaded, but its scope is still moving.
- The strip is a **view over** your terminals plus the ones only it knows about.
It does not renumber your folios and does not create terminal elements.
It does not renumber your sheets and does not create terminal elements.
- Terminal renumbering is a **separate** feature — see `auto_num_locked` in
**[Linking elements](element_linking)** for how to exempt a terminal from it.
- Nothing in the shipped example projects uses terminal strips, so there is no
+26 -26
@@ -90,10 +90,10 @@ faster tool — see the Duplicate Trick below.
### Master Large Projects
**Folio Strategy:**
- **One folio per major section:** Power Supply, Control Logic, Outputs, Safety, etc.
**Sheet Strategy:**
- **One sheet per major section:** Power Supply, Control Logic, Outputs, Safety, etc.
- **Clear naming:** "01-Power Distribution", "02-Motor Control", "03-Safety"
- **Cross-references:** Use automatic xref for inter-folio connections
- **Cross-references:** Use automatic xref for inter-sheet connections
**Naming Conventions** (Best Practice):
@@ -108,9 +108,9 @@ For **Wires:**
- Improves readability and documentation
**Hierarchical Organization:**
- Level 1: Single folio (simple projects)
- Level 2: 3-5 folios (medium projects)
- Level 3: 10+ folios (split into multiple files)
- Level 1: Single sheet (simple projects)
- Level 2: 3-5 sheets (medium projects)
- Level 3: 10+ sheets (split into multiple files)
### Navigate Like a Pro
@@ -118,7 +118,7 @@ For **Wires:**
- Your platform's standard zoom-in/out keys (`QKeySequence::ZoomIn`/`ZoomOut`
— usually Ctrl+Plus/Ctrl+Minus, **not** the bare +/- keys)
- **Ctrl+8:** Zoom on content
- **Ctrl+9:** Fit zoom (adapted to the folio)
- **Ctrl+9:** Fit zoom (adapted to the sheet)
- **Ctrl+0** (Cmd+0 Mac): Reset zoom
- **Mouse wheel:** Zoom in and out around the mouse pointer — zoom out, point
at the next area, zoom back in
@@ -130,12 +130,12 @@ For **Wires:**
- Space rotates the selection; it does not pan
Full reference, trackpad mode and the *Centre on cursor* key:
**[Moving around a zoomed-in folio](navigating_folios#4-moving-around-a-zoomed-in-folio)**.
**[Moving around a zoomed-in sheet](navigating_folios#4-moving-around-a-zoomed-in-sheet)**.
**Quick Navigation:**
- **Project panel** (left): Click folio to jump to it
- **Tab key** doesn't cycle folios — it cycles the *selection* through every
item on the current folio instead (Shift+Tab goes backward). See
- **Project panel** (left): Click sheet to jump to it
- **Tab key** doesn't cycle sheets — it cycles the *selection* through every
item on the current sheet instead (Shift+Tab goes backward). See
**[Keyboard-only control](keyboard_control)** for the full keyboard
picture, including what actually is and isn't reachable without a mouse.
- **Ctrl+G:** Jump to a specific element (finds it in the Collections panel)
@@ -168,7 +168,7 @@ Full reference, trackpad mode and the *Centre on cursor* key:
- Clear signal flow direction
**Good Diagram Habits:**
1. **One function per folio** — Easier to understand
1. **One function per sheet** — Easier to understand
2. **Logical flow** — Left to right, top to bottom
3. **Consistent spacing** — Use grid alignment
4. **Minimal crossing** — Reduce complexity
@@ -204,7 +204,7 @@ Full reference, trackpad mode and the *Centre on cursor* key:
**Numbering Schemes:**
- **Elements:** Auto-number as S1, S2, R1, R2, etc.
- **Conductors:** Auto-number L1, L2, L3, N, PE, etc.
- **Folios:** Use consistent naming: "Sheet 1 of 10"
- **Sheets:** Use consistent naming: "Sheet 1 of 10"
---
@@ -260,7 +260,7 @@ Full reference, trackpad mode and the *Centre on cursor* key:
- **Disable grid display** (View → Grid) if not needed
- **Close unused panels** (View → Panels) to free memory
- **Zoom to working area** rather than whole page
- **Split into multiple folios** if very large
- **Split into multiple sheets** if very large
**For 500+ Elements:**
- **Split into separate .qet files** instead of one massive file
@@ -293,10 +293,10 @@ Full reference, trackpad mode and the *Centre on cursor* key:
### Team Project Management
**Basic Sharing:**
1. Each team member works on **different folios**
1. Each team member works on **different sheets**
2. Save .qet file to **shared network drive**
3. Work in sequence (one at a time) or parallel (different folios)
4. Merge changes manually if editing same folio
3. Work in sequence (one at a time) or parallel (different sheets)
4. Merge changes manually if editing same sheet
**Git Integration:**
1. **Initialize Git** in project directory
@@ -308,7 +308,7 @@ Full reference, trackpad mode and the *Centre on cursor* key:
**Best Practices:**
- **Communicate** who's working on what
- **Save frequently** to avoid conflicts
- **Use meaningful names** for files and folios
- **Use meaningful names** for files and sheets
- **Document changes** in commit messages or notes
### Combining Work from Multiple Contributors
@@ -334,7 +334,7 @@ Full reference, trackpad mode and the *Centre on cursor* key:
### Professional Document Generation
**PDF Workflow (Best for Sharing):**
1. Ensure all folios are complete and labeled
1. Ensure all sheets are complete and labeled
2. **File → Print** or **Export → PDF**
3. Configure: scale, color/B&W, margins
4. Generate PDF
@@ -480,17 +480,17 @@ verified list):
### Industrial Control Systems
**Pattern:**
1. Create power distribution folio
2. Create PLC/controller folio
3. Create I/O terminal folio
4. Create sensor/actuator folio
5. Use cross-references between folios
1. Create power distribution sheet
2. Create PLC/controller sheet
3. Create I/O terminal sheet
4. Create sensor/actuator sheet
5. Use cross-references between sheets
6. Generate wiring list for technicians
### Automotive Wiring
**Pattern:**
1. One folio per major system (engine, lights, climate)
1. One sheet per major system (engine, lights, climate)
2. Label with wire gauge (AWG)
3. Color code per standard
4. Export for manufacturing/assembly instructions
@@ -523,7 +523,7 @@ verified list):
**Build Skills:**
3. Create simple projects (5-10 elements)
4. Try multi-folio projects
4. Try multi-sheet projects
5. Learn export and reports
6. Create custom elements
+8 -8
@@ -1,7 +1,7 @@
# Title block templates
The title block is the framed panel of drawing information in the corner of a
folio. Its layout is not hard-coded — it is a **template**, a `.titleblock`
sheet. Its layout is not hard-coded — it is a **template**, a `.titleblock`
file, and you can edit or write your own.
QElectroTech ships ten templates and includes a dedicated editor for them.
@@ -39,7 +39,7 @@ each with a prefix:
So `cols="t22%;r100%;t22%;"` — the shipped default — is: a column of 22% of the
width, then a column that absorbs everything left over, then another 22%. The
middle column stretches and the outer two stay proportional, whatever the
folio's width.
sheet's width.
**Rows are always absolute**, given as plain pixel heights: `rows="25;25;"`.
There is no relative row height.
@@ -66,7 +66,7 @@ A text cell holds two pieces of text, and **both are translatable**:
- The **label** is the fixed caption — *Author* — and is normally translated
into every language the template supports.
- The **value** is what changes per folio, and normally holds a variable. It
- The **value** is what changes per sheet, and normally holds a variable. It
usually needs only one entry, since `%author` is the same in every language.
- `displaylabel` decides whether the caption is drawn at all. A big title cell
typically sets it `false`.
@@ -79,12 +79,12 @@ A text cell holds two pieces of text, and **both are translatable**:
## 3. Variables
Title block cells use their own substitution, and it is **more permissive than
anywhere else in QET**: every key in the folio's context is replaced, in both
anywhere else in QET**: every key in the sheet's context is replaced, in both
the braced and bare forms. `%{author}` and `%author` both work.
Standard keys are the folio's own fields: `title`, `author`, `filename`,
Standard keys are the sheet's own fields: `title`, `author`, `filename`,
`folio`, `plant`, `locmach`, `indexrev`, `date`, `display_folio`. Project
properties and any custom folio fields are substituted too — which is how a
properties and any custom sheet fields are substituted too — which is how a
template can carry a field QET knows nothing about.
Two details:
@@ -209,8 +209,8 @@ absent `fontsize` means "default". A `logo` cell adds `resource`.
- **Use `%{braced}` variables** so the editor can list them.
- **Keep a template self-contained.** Logos live inside the file; do not rely on
an external path.
- **A custom folio field is enough to add a row.** You do not need to modify
QET to show project-specific information — add the field to the folio and
- **A custom sheet field is enough to add a row.** You do not need to modify
QET to show project-specific information — add the field to the sheet and
reference it as `%{yourfield}`.
---
+30 -27
@@ -6,7 +6,7 @@ Complete reference guide for using QElectroTech to create electrical diagrams, s
1. [Basics](#basics)
2. [Interface Overview](#interface-overview)
3. [Projects & Folios](#projects--folios)
3. [Projects & Sheets](#projects--sheets)
4. [Working with Elements](#working-with-elements)
5. [Drawing Wires & Conductors](#drawing-wires--conductors)
6. [Text, Labels & Annotations](#text-labels--annotations)
@@ -59,7 +59,7 @@ Complete reference guide for using QElectroTech to create electrical diagrams, s
│ Project │ │ Elements Panel │
│ Panel │ DIAGRAM CANVAS │ (Search & Browse)
│ │ (Your drawing area) │ │
│ (Folios)│ │ Properties │
│ (Sheets)│ │ Properties │
│ │ │ (Selected item)│
├─────────┴─────────────────────────────┴─────────────────┤
│ Status Bar (Coordinates, Zoom, Current Mode) │
@@ -75,10 +75,10 @@ Complete reference guide for using QElectroTech to create electrical diagrams, s
- Shows "Master" elements and connections info
**Project Panel (Left Side)**
- Lists all folios (pages) in your project
- Add new folios (diagrams)
- Organize and rename folios
- Right-click for folio properties
- Lists all sheets (pages) in your project
- Add new sheets (diagrams)
- Organize and rename sheets
- Right-click for sheet properties
**Toolbar**
- **Selection Tool** — Select and move objects
@@ -101,33 +101,36 @@ Complete reference guide for using QElectroTech to create electrical diagrams, s
---
## Projects & Folios
## Projects & Sheets
### Creating a New Project
**File → New Project** creates a blank project immediately — there is no
wizard or settings dialog at this step. The new project starts with one
empty folio, using whatever border, conductor and title-block defaults the
empty sheet, using whatever border, conductor and title-block defaults the
project inherited (see **[Project properties](project_XML)** to change page
size, margins and other defaults afterward).
### Understanding Folios
### Understanding Sheets
A **folio** is a single page/diagram within your project. QET does not have
a "folio type" you choose when creating one — a folio is a folio, and what
A **sheet** is a single page/diagram within your project. QET does not have
a "sheet type" you choose when creating one — a sheet is a sheet, and what
it ends up showing (single-line, multiline, control logic…) is purely a
matter of what you draw on it.
To create a new folio, right-click in the Project panel → **Add a folio**.
Earlier versions of QElectroTech called a sheet a **folio**, and so do many
forum posts; it is the same thing. The French interface still says *folio*.
To create a new sheet, right-click in the Project panel → **Add a sheet**.
It's added immediately, using the project's stored default border,
conductor and title-block settings — again, no dialog or type choice.
### Organizing Your Project
- **Rename folios:** Right-click folio → **Rename**
- **Reorder folios:** Drag & drop in Project panel
- **Delete folios:** Right-click → **Delete** (confirm)
- **Folio properties:** Right-click → **Properties**
- **Rename sheets:** Right-click sheet → **Rename**
- **Reorder sheets:** Drag & drop in Project panel
- **Delete sheets:** Right-click → **Delete** (confirm)
- **Sheet properties:** Right-click → **Properties**
- Title block information — see **[Title block templates](title_blocks)**
- Author, date and other title-block fields
@@ -237,7 +240,7 @@ Select the element(s) and press **Space** to rotate 90°, or right-click →
each element individually; **Ctrl+Space** rotates just the labels/text, not
the graphics.
There is no flip/mirror action for elements placed on a folio — flipping a
There is no flip/mirror action for elements placed on a sheet — flipping a
symbol is done once, in the **[element editor](element_editor)**, by
redrawing or mirroring the symbol itself.
@@ -361,9 +364,9 @@ To add element label:
### Dynamic Text Fields
A dynamic text field can show a live value instead of fixed text — an
element's label, a folio number, a manufacturer reference, and more. This
element's label, a sheet number, a manufacturer reference, and more. This
is a whole variable language of its own, with different variables valid in
different places (an element label isn't the same set as a folio field).
different places (an element label isn't the same set as a sheet field).
See **[Variables & formulas](variables)** for the full reference — it's
worth reading before guessing at a variable name, since an unrecognized one
is silently left as literal text rather than flagged as an error.
@@ -440,7 +443,7 @@ is silently left as literal text rather than flagged as an error.
- **Ctrl++ / Ctrl+−** (your platform's standard zoom keys): Magnify or reduce
— the bare + and − keys do nothing
- **Affichage → Zoom sur le contenu** (Ctrl+8): fit everything drawn
- **Affichage → Zoom adapté** (Ctrl+9): fit the folio border
- **Affichage → Zoom adapté** (Ctrl+9): fit the sheet border
- **Affichage → Pas de zoom** (Ctrl+0): back to 100 %
**Pan (Move View):**
@@ -450,7 +453,7 @@ is silently left as literal text rather than flagged as an error.
edited
Arrow keys move the *selection*, not the view. Trackpad settings and the
full list: **[Moving around a zoomed-in folio](navigating_folios#4-moving-around-a-zoomed-in-folio)**.
full list: **[Moving around a zoomed-in sheet](navigating_folios#4-moving-around-a-zoomed-in-sheet)**.
---
@@ -476,13 +479,13 @@ a printer (paper size, duplex, colour vs. grayscale — whatever your driver
offers; these are not QET settings). Confirming there opens a **print
window with a live preview** — the same window used for File → Export to
PDF, which skips the OS dialog and goes straight here. That window lets you
choose which folios to include, whether to keep conductor colours, and set
choose which sheets to include, whether to keep conductor colours, and set
up the page via a separate **Page setup** button (disabled on Windows when
exporting to PDF). There is no separate "Print Preview" menu item and no
manual scale setting — a folio is fit to the page automatically.
manual scale setting — a sheet is fit to the page automatically.
**Wire (conductor) labels are ordinary diagram content, not a separate
print feature.** They print or export as part of the folio like any other
print feature.** They print or export as part of the sheet like any other
item — there's no toggle to include or exclude them specifically (unlike
terminal markers, which do have one — see
**[Preferences reference](preferences)** §3).
@@ -503,7 +506,7 @@ duplicate rows on large jobs.
- **[DXF](dxf)** — CAD format for collaboration (outlines and text only, see limitations)
**Export Process:**
1. Select folio(s) to export
1. Select sheet(s) to export
2. **File → Export**
3. Choose format and location
4. Configure export options
@@ -544,8 +547,8 @@ edited by one instance at a time, the same way any other document is (see
query cache is per-process, not shared). Two practical options if several
people need to work on the same project:
- **Split by folio.** Since a project is folios inside one file, agreeing
who owns which folio avoids collisions entirely.
- **Split by sheet.** Since a project is sheets inside one file, agreeing
who owns which sheet avoids collisions entirely.
- **Version control (Git or similar) on the `.qet` file.** This works for
taking turns, but a genuine **merge conflict is a conflict in raw XML**,
not a structured diagram merge — resolving one means editing the XML by
+30 -30
@@ -2,7 +2,7 @@
Several fields in QElectroTech accept a **formula** — text with `%` variables
that QET substitutes when it draws. `%f-%l%c` on an element label becomes
`3-B7`. `%id/%total` in the folio field becomes `3/12`.
`3-B7`. `%id/%total` in the sheet field becomes `3/12`.
The catch is that **there is no single variable language**. Five different
places accept formulas, each resolves a different set, and a variable that works
@@ -19,35 +19,35 @@ Sources: `sources/autoNum/assignvariables.cpp` (`AssignVariables`,
| Where | Set in | Resolves |
|---|---|---|
| **Element label** | element information, or Project properties → element auto-numbering | position, folio, sequences, `%{…}` info |
| **Conductor text** | conductor properties → formula, or conductor auto-numbering | position, folio, sequences, wire properties |
| **Folio field** | folio properties → *Folio* | **only** `%autonum`, `%id`, `%total` |
| **Element label** | element information, or Project properties → element auto-numbering | position, sheet, sequences, `%{…}` info |
| **Conductor text** | conductor properties → formula, or conductor auto-numbering | position, sheet, sequences, wire properties |
| **Sheet field** | sheet properties → *Sheet* | **only** `%autonum`, `%id`, `%total` |
| **Title block cells** | the `.titleblock` template | whatever is in the title-block context |
| **Cross-reference labels** | Project properties → cross-references | same as element labels |
---
## 2. Folio and position variables
## 2. Sheet and position variables
These resolve on element labels, conductor texts and cross-reference labels.
| Variable | Becomes |
|---|---|
| `%f` | folio **index**, 1-based |
| `%id` | the same folio index — `%f` and `%id` are identical here |
| `%F` | the folio **field**, i.e. whatever the folio's *Folio* setting renders to |
| `%total` | total number of folios in the project |
| `%M` | plant (*installation*) of the folio |
| `%LM` | location / machine (*locmach*) of the folio |
| `%f` | sheet **index**, 1-based |
| `%id` | the same sheet index — `%f` and `%id` are identical here |
| `%F` | the sheet **field**, i.e. whatever the sheet's *Sheet* setting renders to |
| `%total` | total number of sheets in the project |
| `%M` | plant (*installation*) of the sheet |
| `%LM` | location / machine (*locmach*) of the sheet |
| `%l` | the row letter of the element's position in the border |
| `%c` | the column number of the element's position |
| `%prefix` | the element's prefix |
### `%f` and `%F` are not interchangeable
`%f` is the folio's index — a plain number. `%F` inserts the folio *field*,
`%f` is the sheet's index — a plain number. `%F` inserts the sheet *field*,
which is itself a formula. QET's default for that field is `%id/%total`, so on
folio 3 of 12:
sheet 3 of 12:
```
%f → 3
@@ -55,7 +55,7 @@ folio 3 of 12:
```
Both then read naturally in a label, which is why the difference goes unnoticed
until someone changes the folio field and every element label changes shape with
until someone changes the sheet field and every element label changes shape with
it. If you want the number, use `%f`.
### `%c` counts from 0 or 1 depending on a preference
@@ -83,10 +83,10 @@ Only on conductor formulas:
## 4. Sequence variables
Auto-numbering supplies numbered sequences. Each comes in a per-project and a
per-folio flavour, and each takes a trailing index — `_1` is the first sequence
per-sheet flavour, and each takes a trailing index — `_1` is the first sequence
you defined in that numbering scheme, `_2` the second, and so on.
| Family | Per project | Per folio |
| Family | Per project | Per sheet |
|---|---|---|
| Unit | `%sequ_1` | `%sequf_1` |
| Ten | `%seqt_1` | `%seqtf_1` |
@@ -95,7 +95,7 @@ you defined in that numbering scheme, `_2` the second, and so on.
| Wrap | `%seqw_1` | — |
A sequence variable whose index does not exist in the current numbering scheme
is **left in the text as-is**. Seeing a literal `%sequ_2` on a folio means the
is **left in the text as-is**. Seeing a literal `%sequ_2` on a sheet means the
scheme defines only one sequence, not that numbering failed.
---
@@ -154,20 +154,20 @@ written, and the drift is why counting from the source matters.
---
## 6. Folio field variables
## 6. Sheet field variables
The folio field is the exception on this page: it is resolved by a different
The sheet field is the exception on this page: it is resolved by a different
function and understands **three variables only**.
| Variable | Becomes |
|---|---|
| `%id` | this folio's index |
| `%total` | number of folios |
| `%autonum` | the folio auto-numbering value |
| `%id` | this sheet's index |
| `%total` | number of sheets |
| `%autonum` | the sheet auto-numbering value |
The default is `%id/%total`. **`%f`, `%l`, `%c`, `%M`, `%LM` and `%{…}` do
nothing here** — they are left in the field verbatim and will be printed on
every folio exactly as typed. This is the single most common variable
every sheet exactly as typed. This is the single most common variable
disappointment in QET.
---
@@ -178,9 +178,9 @@ Title block template cells use their own mechanism: every key in the title
block's context is substituted, in **both** the braced and bare forms —
`%{author}` and `%author` both work.
The standard keys are the folio's own information fields: `title`, `author`,
The standard keys are the sheet's own information fields: `title`, `author`,
`filename`, `folio`, `plant`, `locmach`, `indexrev`, `date`, `display_folio`.
Project properties and any custom fields you add to the folio are substituted
Project properties and any custom fields you add to the sheet are substituted
too.
Two details worth knowing:
@@ -208,9 +208,9 @@ replacements, and the order is fixed:
Two consequences:
- **`%F` works because it is expanded first.** It inserts the folio field, which
- **`%F` works because it is expanded first.** It inserts the sheet field, which
may itself contain `%id` and `%total` — and those are substituted in the same
step, just after. Anything the folio field contains that step 1 does not know
step, just after. Anything the sheet field contains that step 1 does not know
about will survive to the drawing as literal text.
- **An unknown variable is never an error.** It is simply not replaced. A label
showing `%seqh_3` or `%{machine_manufacturer_reference_auxiliary1}` is QET
@@ -222,9 +222,9 @@ Two consequences:
| I want… | Use | Where it works |
|---|---|---|
| the folio number | `%f` | element / conductor / xref labels |
| the folio number in the folio field | `%id` | folio field only |
| folio number *and* total, e.g. `3/12` | `%F` | element / conductor / xref labels |
| the sheet number | `%f` | element / conductor / xref labels |
| the sheet number in the sheet field | `%id` | sheet field only |
| sheet number *and* total, e.g. `3/12` | `%F` | element / conductor / xref labels |
| the element's grid position | `%l%c` | element labels |
| an incrementing number | `%sequ_1` | element / conductor labels |
| an element's part number on the drawing | `%{manufacturer_reference}` | dynamic texts, labels |