-
Notifications
You must be signed in to change notification settings - Fork 0
Calcul de Propriete
Calcule automatiquement la valeur d'une propriété personnalisée et l'écrit sur les éléments qui portent cette propriété — par exemple, tout le texte d'une cellule étiquette du groupe, les coordonnées de l'élément, ou une valeur fixe. Le Calcul de propriété est un moteur de valeur : il ne fait que remplir des valeurs, il n'attache jamais les propriétés lui-même (l'attache est le rôle des Propriétés personnalisées — il n'écrit que là où la propriété est déjà attachée). Il réutilise les propriétés personnalisées (Item Types) du DGNLib ARES partagé.
La valeur de chaque propriété provient d'une règle de calcul dans ARES_Calc_Rules. Une règle s'écrit :
Prop[nom] [& condition]* = Source
-
Prop[nom]— la propriété cible (un seul nom, pas de joker). ARES écrit la valeur de cette propriété partout où elle est attachée. -
& condition(optionnel) — les mêmes conditions que les règles d'attache :Lvl[niveau],Cell[nom],Type[type], combinées par&(ET), niées par!, avec les jokers*/?(voir Propriétés personnalisées). La règle ne s'applique qu'aux éléments satisfaisant toutes les conditions. -
= Source— d'où vient la valeur. L'une de :
Il existe deux familles de source : une source groupe (Cell* et GroupLength) parcourt le groupe graphique de l'élément — lui-même inclus — à la recherche d'un membre correspondant et lit la valeur sur ce membre ; une source propre lit l'attribut de l'élément lui-même.
| Source | Valeur |
|---|---|
CellText[motif] |
Tout le texte d'une cellule du groupe graphique de l'élément dont le nom correspond à motif (jokers autorisés ; motif peut lister plusieurs alternatives séparées par |, ex. ASUF*|SP0*). Inclut l'élément lui-même — une cellule étiquette qui porte la propriété reçoit son propre texte ; une cellule correspondante non groupée reçoit aussi son propre texte. |
CellCoord[motif] |
Les coordonnées "X;Y" de cette même cellule correspondante — la position de la cellule TAGUEUSE, pas celle de l'élément. |
CellId[motif] |
L'identifiant de cette même cellule correspondante. |
CellLvl[motif] |
Le nom de niveau de cette même cellule correspondante. |
CellColor[motif] |
L'indice de couleur de cette même cellule correspondante. |
CellStyle[motif] |
Le nom du style de trait de cette même cellule correspondante. |
CellWeight[motif] |
L'épaisseur de trait de cette même cellule correspondante. |
Value[texte] |
Une valeur littérale fixe (ex. Value[Type-A]). |
Coord ou Coord[n]
|
Les coordonnées "X;Y" PROPRES de l'élément (n = nombre de décimales ; défaut = ARES_Round). Recalculées quand l'élément est déplacé. |
Id |
L'identifiant PROPRE de l'élément. |
Lvl |
Le nom de niveau PROPRE de l'élément. |
Color |
L'indice de couleur PROPRE de l'élément. |
Style |
Le nom du style de trait PROPRE de l'élément. |
Weight |
L'épaisseur de trait PROPRE de l'élément. |
Length ou Length[n]
|
La longueur géométrique PROPRE de l'élément (n = décimales ; défaut = ARES_Length_Round) — seulement si l'élément est lui-même une ligne/arc/forme/forme complexe/chaîne complexe ; vide sinon. |
GroupLength ou GroupLength[n]
|
La longueur de la première ligne/arc/forme trouvée dans le groupe graphique de l'élément (lui-même inclus) — le cas courant : la propriété est sur un texte/une cellule, et la longueur vient de la géométrie liée, comme Auto Lengths (Longueurs Auto). |
Chaque source Cell* utilise la même grammaire de motif que CellText ; utilisez la famille Cell* quand une propriété doit porter un attribut de la cellule qui a groupé l'élément, pas le sien.
Plusieurs règles pour la même propriété : la première qui correspond gagne. Les règles sont essayées dans l'ordre, donc placez les règles spécifiques avant les générales. Exemple :
Prop[Repere]&Cell[ETIREF]=Value[REF] ; Prop[Repere]=CellText[ETI*] ; Prop[XY]=Coord ; Prop[Coordonnee]=CellCoord[ASUF*|SP0*] ; Prop[Longueur]=GroupLength[1]
Ici Repere vaut REF sur la cellule ETIREF (la première règle gagne), et le texte de la cellule ETI* du groupe ailleurs ; XY vaut les coordonnées propres de chaque élément ; Coordonnee vaut la position de la cellule ASUF*/SP0* qui a tagué le groupe ; Longueur vaut la longueur de la géométrie liée du groupe, arrondie à 1 décimale.
Le moteur réagit en direct : il remplit une propriété quand elle est attachée, recalcule une source propre (Coord, Length, …) quand l'élément concerné change lui-même, suit un attribut d'une cellule correspondante (texte, coordonnées, niveau, couleur, style, épaisseur) quand il est modifié, suit la longueur de la géométrie liée pour GroupLength, et vide une valeur quand sa source disparaît (ou, avec ARES_Calc_Detach_Empty activé, détache la propriété). CellId n'a jamais besoin d'être recalculé après le remplissage initial — l'identifiant d'un élément ne change jamais.
La boîte d'options édite les règles de calcul une à la fois, exactement comme l'éditeur de règles d'attache des Propriétés personnalisées : une liste déroulante éditable (choisir une règle → éditer → valider remplace ; saisie libre + valider ajoute ; vide + valider supprime), avec un aperçu de syntaxe coloré en dessous (mots-clefs en gras, & bleu, ! orange, * / ? vert, une combinaison de conditions impossible en rouge). Une règle mal formée est refusée (un message dans la barre d'état, rien n'est enregistré). Les éditions en masse passent toujours par l'import/export .cfg.
macro vba run [ARES]EditPropertyCalculationOptions
Ouvre les options du Calcul de propriété (l'interrupteur principal, l'option détacher-si-vide, et l'éditeur de règles de calcul). L'édition est en write-through — la config reste synchronisée, sans redémarrage.
| Variable | Défaut | Rôle |
|---|---|---|
ARES_Property_Calc |
False | Interrupteur principal de la fonctionnalité (désactivée par défaut). |
ARES_Calc_Rules |
(vide) | Les règles de calcul : Prop[nom][&conditions]=Source ; … (Source = CellText|CellCoord|CellId|CellLvl|CellColor|CellStyle|CellWeight[motif] / Value[texte] / Coord|Length|GroupLength[n] / Id|Lvl|Color|Style|Weight ; un motif peut lister plusieurs alternatives séparées par |). La première règle qui correspond par propriété gagne. |
ARES_Calc_Detach_Empty |
False | Si active, une propriété dont la valeur calculée finit vide est détachée (le tagueur la retire) au lieu d'être conservée vide ; une règle qui l'impose encore la ré-attache (vide). |
ARES Wiki
🇬🇧 English
- Home
- Auto Lengths
- Zoning
- Zone Export
- Region Split
- Custom Properties
- Property Calculation
- System & Config
- Configuration Variables
🇫🇷 Français