Skip to content
ispyisail edited this page Oct 2, 2026 · 3 revisions

Variables et formules

Plusieurs champs de QElectroTech acceptent une formule — du texte contenant des variables % que QET remplace au moment du dessin. %f-%l%c sur une étiquette d'élément devient 3-B7. %id/%total dans le champ folio devient 3/12.

Le piège est qu'il n'existe pas un seul langage de variables. Cinq endroits différents acceptent des formules, chacun résout un jeu différent, et une variable qui fonctionne à un endroit est silencieusement laissée telle quelle ailleurs. C'est l'objet de cette page.

Sources : sources/autoNum/assignvariables.cpp (AssignVariables, replaceVariable), sources/bordertitleblock.cpp, sources/titleblocktemplate.cpp (interpreteVariables).


1. Où les formules sont acceptées

Endroit Réglé dans Résout
Étiquette d'élément informations de l'élément, ou Propriétés du projet → numérotation des éléments position, folio, séquences, %{…}
Texte de conducteur propriétés du conducteur → formule, ou numérotation des conducteurs position, folio, séquences, propriétés du fil
Champ folio propriétés du folio → Folio uniquement %autonum, %id, %total
Cellules de cartouche le modèle .titleblock ce que contient le contexte du cartouche
Étiquettes de renvoi Propriétés du projet → renvois comme les étiquettes d'élément

2. Variables de folio et de position

Elles se résolvent sur les étiquettes d'éléments, les textes de conducteurs et les étiquettes de renvoi.

Variable Devient
%f l'indice du folio, à partir de 1
%id le même indice de folio — %f et %id sont ici identiques
%F le champ folio, c'est-à-dire ce que rend le réglage Folio du folio
%total nombre total de folios du projet
%M installation (plant) du folio
%LM localisation / machine (locmach) du folio
%l la lettre de ligne de la position de l'élément dans le cadre
%c le numéro de colonne de la position de l'élément
%prefix le préfixe de l'élément

%f et %F ne sont pas interchangeables

%f est l'indice du folio — un simple nombre. %F insère le champ folio, qui est lui-même une formule. La valeur par défaut de ce champ est %id/%total ; donc sur le folio 3 sur 12 :

%f  →  3
%F  →  3/12

Les deux se lisent naturellement dans une étiquette, ce qui explique que la différence passe inaperçue — jusqu'au jour où quelqu'un modifie le champ folio et où toutes les étiquettes changent de forme avec lui. Si vous voulez le numéro, utilisez %f.

%c compte à partir de 0 ou de 1 selon une préférence

Le numéro de colonne sort diminué de un lorsque la préférence les colonnes commencent à 0 est active. Le même projet ouvert par deux personnes aux réglages différents produit des étiquettes différentes. Si les étiquettes doivent être stables au sein d'une équipe, accordez-vous d'abord sur ce réglage.


3. Variables de conducteur

Uniquement dans les formules de conducteurs :

Variable Devient
%wf fonction du conducteur
%wv tension / protocole
%wc couleur du fil
%ws section du fil

4. Variables de séquence

La numérotation automatique fournit des séquences numérotées. Chacune existe en version projet et en version folio, et prend un indice final — _1 est la première séquence définie dans ce schéma de numérotation, _2 la deuxième, etc.

Famille Par projet Par folio
Unité %sequ_1 %sequf_1
Dizaine %seqt_1 %seqtf_1
Centaine %seqh_1 %seqhf_1
Alphabétique %seqa_1 —
Bouclage %seqw_1 —

Une variable de séquence dont l'indice n'existe pas dans le schéma courant est laissée telle quelle dans le texte. Voir un %sequ_2 littéral sur un folio signifie que le schéma ne définit qu'une séquence, non que la numérotation a échoué.


5. Variables d'information d'élément — %{…}

Les variables entre accolades puisent dans les champs d'information de l'élément :

%{label} %{manufacturer_reference}

Les plus courantes : %{label}, %{plant}, %{location}, %{function}, %{comment}, %{description}, %{designation}, %{manufacturer}, %{manufacturer_reference}, %{machine_manufacturer_reference}, %{supplier}, %{quantity}, %{unity}.

Également disponibles : %{auxiliary1} … %{auxiliary4} et leurs variantes description_, designation_, manufacturer_, manufacturer_reference_, machine_manufacturer_reference_, supplier_, quantity_ et unity_ ; les champs API %{plc_type}, %{plc_address}, %{plc_function}, %{plc_comment}, %{plc_crossref}, %{plc_t1} … %{plc_t4}, %{plc_tc} ; les champs de conducteur %{conductor_color}, %{conductor_section}, %{tension_protocol} ; et %{void}, qui se résout en rien.

La liste est codée en dur, et huit champs y manquent

La substitution %{…} est une liste fixe dans AssignVariables::replaceVariable(), non une recherche parmi tous les champs d'information. QETInformation::elementInfoKeys() recense 64 clés d'information ; 63 variables entre accolades sont reconnues, et les deux ensembles ne se recouvrent pas entièrement.

Deux clés sont absentes à dessein : formula (c'est elle, la formule) et xref. Huit autres n'ont aucune variable entre accolades :

%{category}  %{model}  %{notes}  %{voltage_rating}  %{current_rating}
%{width}  %{height}  %{depth}

Vous pouvez renseigner n'importe lequel de ces champs sur un élément, mais aucune des huit ne figure dans la liste de substitution : elles restent donc sur le dessin sous forme de texte littéral. Utilisez un autre champ en attendant la correction.

Les cinq premières sont arrivées avec les champs de métadonnées « smart device », et width, height et depth (les dimensions de l'appareil en mm) avec les champs de dimensions des éléments ; aucune n'a été ajoutée à replaceVariable().

Les quatre variables %{machine_manufacturer_reference_auxiliary1} … 4 manquaient aussi, jusqu'à la PR #1236 (fusionnée le 2 octobre 2026). Dans les versions compilées depuis, elles se résolvent comme les autres ; dans les versions plus anciennes, elles restent sur le dessin sous forme de texte littéral.

Mesuré sur master b48525842. Les révisions précédentes de cette page indiquaient 57, puis 61 clés : chaque chiffre était exact au moment de la rédaction, et cette dérive est la raison pour laquelle il faut compter dans le code source.


6. Variables du champ folio

Le champ folio est l'exception de cette page : il est résolu par une autre fonction et ne comprend que trois variables.

Variable Devient
%id l'indice de ce folio
%total le nombre de folios
%autonum la valeur de numérotation automatique du folio

La valeur par défaut est %id/%total. %f, %l, %c, %M, %LM et %{…} n'y font rien — ils restent dans le champ tels quels et seront imprimés sur chaque folio exactement comme saisis. C'est la déception la plus fréquente au sujet des variables dans QET.


7. Variables de cartouche

Les cellules des modèles de cartouche utilisent leur propre mécanisme : toute clé du contexte du cartouche est substituée, sous les deux formes — %{author} et %author fonctionnent l'un comme l'autre.

Les clés standard sont les champs d'information du folio : title, author, filename, folio, plant, locmach, indexrev, date, display_folio. Les propriétés du projet et tout champ personnalisé ajouté au folio sont également substitués.

Deux détails utiles :

  • Les clés sont substituées de la plus longue à la plus courte, délibérément. Sans cela, une clé nommée plant mangerait le début de %plantcode en laissant code orphelin.
  • Seule la forme entre accolades %{nom} peut être découverte : la liste des variables utilisées, dans l'éditeur de modèles, est construite en cherchant %{…}. Un %nom nu se résout quand même, mais rien ne peut l'énumérer ; préférez donc la forme entre accolades dans les modèles.

8. Une seule passe, dans un ordre fixe

Les formules ne sont pas évaluées récursivement. QET enchaîne de simples remplacements de texte, dans un ordre fixe :

  1. %F, %f, %id, %total, %M, %LM
  2. %c, %l, %prefix (éléments) ou %wf, %wv, %wc, %ws (conducteurs)
  3. les champs du cartouche, puis les propriétés du projet, sous les deux formes %{nom} et %nom
  4. les séquences

Deux conséquences :

  • %F fonctionne parce qu'il est développé en premier. Il insère le champ folio, qui peut lui-même contenir %id et %total — substitués dans la même étape, juste après. Tout ce que ce champ contient et que l'étape 1 ignore survivra jusqu'au dessin sous forme de texte littéral.
  • Une variable inconnue n'est jamais une erreur. Elle n'est simplement pas remplacée. Une étiquette affichant %seqh_3 ou %{category} est la façon dont QET vous dit que cette variable n'est pas résoluble ici.

9. Aide-mémoire

Je veux… Utiliser Où cela marche
le numéro de folio %f étiquettes d'élément / conducteur / renvoi
le numéro de folio dans le champ folio %id champ folio uniquement
numéro de folio et total, p. ex. 3/12 %F étiquettes d'élément / conducteur / renvoi
la position dans le cadre %l%c étiquettes d'élément
un numéro incrémenté %sequ_1 étiquettes d'élément / conducteur
la référence d'un élément sur le dessin %{manufacturer_reference} textes dynamiques, étiquettes
l'installation sur un cartouche %{plant} ou %plant modèles de cartouche

Voir aussi : Lier des éléments · La base de données du projet · Project XML

Getting Started

Home

🌐 Languages — English · Français · Deutsch

Downloads

Windows without admin rights — the portable archive, no installer

Quick Start Guide

User Manual

FAQ

Tips & Tricks

Guides

Conductors — wire properties, what feeds which export, cables, and hops where wires cross

Wires per terminal — limit the wires on a terminal, chain wiring instead of stars

Printing and exporting — paper, PDF, images, and what each path does differently

Linking elements — master, slave, terminal

PLC modules — I/O tables and linking a wire to a specific point

Using the element editor — drawing tools, saving, checks

Grid size and element size — why symbols aren't all the same scale, and scaling one without leaving the grid

Preferences reference — what each settings page does

Saving and loading settings — your whole setup in one file, to copy or keep

Keyboard-only control — mouseless QET, and what still needs a mouse

Mouse modifiers — what Shift, Ctrl and Alt change while you drag

3D mouse — SpaceMouse pan, zoom and buttons

Aligning items — snap symbols back to the grid, or line them up

Pictures on a sheet — labels, crop, transparency, what they cost in the file

Arcs and curved wires — the Arc tool, pulling an arc in or out, rounding a corner with a fillet, dashed arcs for lighting layouts

Grouping items — select, move and copy several items as one

Finding your place on a sheet — go to a cell like B13 or 4-B7, keep the headers in sight, show the cell limits, zoom and pan

Showing and hiding kinds of items — hide texts, wire numbers, shapes, pictures, tables or cross-references on every sheet

Drawing faster — place without dragging, the S shortcut bar, command search, gestures

Customising QElectroTech — keys, toolbar size and contents, the gesture ring (partly pending)

Managing collections — folders, writability, building your own shortlist

Templates — reusable multi-element blocks, placed by double-click or drag

Search & Replace — bulk property changes

Building a nomenclature query — the BOM/summary table builder

Linking wires across pages — sheet reports

Variables & formulas — %f, %{label}, sequences

Auto-numbering — schemes, sequences, freezing

Terminal strips — strips, levels, bridges

Title block templates — the .titleblock format

Importing EPLAN parts (.edz) — EPLAN Data Portal

DXF import & export — two unrelated features, one format; command-line export and layers

The project database — the in-memory SQLite cache

File formats
Elements XML
Project XML
Development

Building from Source

Contributing Code

Automating QET — CLI, XML formats, external tools

CLI Reference — command line usage

JavaScript Scripting — --run, geometry editing, undo

MCP server — let an AI assistant read, verify and edit projects

Connecting an AI assistant — setup for Claude, Copilot, Gemini, Codex, Cursor, LM Studio

Script buttons — stored scripts with an icon, by hand or by an assistant

Live mode — an assistant working in the open project while you watch

Macro recorder — record a task by hand, for an assistant to script

Development Roadmap

Vision — proposal, under discussion

Developer Tools

About

Features

History

Community

License

Contributing to this Wiki

Clone this wiki locally