Clone
2
variables FR
ispyisail edited this page 2026-09-14 20:36:22 +12:00

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_, 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 quatre champs y manquent

La substitution %{…} est une liste fixe dans AssignVariables::replaceVariable(), non une recherche parmi tous les champs d'information. QETInformation::elementInfoKeys() recense 61 clés d'information ; 59 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. Neuf autres n'ont aucune variable entre accolades :

%{machine_manufacturer_reference_auxiliary1}
%{machine_manufacturer_reference_auxiliary2}
%{machine_manufacturer_reference_auxiliary3}
%{machine_manufacturer_reference_auxiliary4}
%{category}  %{model}  %{notes}  %{voltage_rating}  %{current_rating}

Vous pouvez renseigner n'importe lequel de ces champs sur un élément, et le %{machine_manufacturer_reference} simple se résout normalement — mais aucune des neuf ne figure dans la liste de substitution et elles restent donc sur le dessin sous forme de texte littéral. Utilisez un autre champ en attendant la correction.

Les cinq dernières sont arrivées avec les champs de métadonnées « smart device » et n'ont jamais été ajoutées à replaceVariable() ; les quatre variantes auxiliaires manquent depuis plus longtemps.

Mesuré sur master 3cbb93075. Les révisions précédentes de cette page indiquaient 57 clés, trois absentes à dessein et quatre inexpliquées : c'était exact au moment de la rédaction, et cette dérive est la raison pour laquelle il faut compter depuis 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 %{machine_manufacturer_reference_auxiliary1} 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