Expressions et chemins
Bernard ne retient pas un chemin de fichier tel quel : il retient une expression, un texte où des parties sont remplacées par des valeurs de Bernard. Le même fichier peut ainsi avoir le bon chemin sur un poste Windows, un poste Linux ou un serveur distant.
Cette page explique le langage des expressions, l'outil Path Edit qui permet de les contrôler et de les corriger, et les variations de chemins par système d'exploitation et par site. Pour créer un fichier et gérer ses versions, voir Gestion des fichiers.
Ce qu'est une expression
Une expression est un texte ordinaire dont certaines parties sont écrites entre < et >. Bernard remplace chacune de ces
parties par une valeur.
Les chemins de fichiers sont des expressions. Toute propriété de type texte que l'administrateur a marquée Is Interpreted en est une aussi (voir Root Settings).
Exemple, pour un fichier d'un plan :
D:\prod\<Parent.Name>\<Name>
Si le plan s'appelle sh010 et son parent SEQ010, le chemin obtenu est D:\prod\SEQ010\sh010.
Un chemin se construit de proche en proche : l'expression d'un fichier peut citer un fichier du parent, dont l'expression cite à son tour un fichier du grand-parent, du dossier du projet jusqu'au fichier.
Les noms utilisés entre < et > ne tiennent pas compte des majuscules : <Name> et <name> sont identiques.
La syntaxe
| Pour obtenir | Écrivez | Exemple | Donne |
|---|---|---|---|
| une propriété de l'objet | <Propriété> |
<Name> |
sh010 |
| une propriété d'un parent | <Parent.Propriété> |
<Parent.Name> |
SEQ010 |
| un élément d'une liste, par son rang | <Liste[n]> |
<Files[0]> |
le premier fichier de la liste |
| un élément d'une liste, par son nom | <Liste[nom]> |
<Files[env_bg]> |
le fichier nommé « env_bg » |
| un texte en majuscules ou minuscules | .upper() ou .lower() |
<Name.upper()> |
SH010 |
| une partie d'un texte | <Propriété[début:fin]> |
<Envelope[0:3]>, avec la valeur « letter » |
let |
| la version du fichier, avec des zéros | <self.version[##]> |
version courante 5 | 05 |
| une séquence d'images | <Start Frame:End Frame[###]> |
images 1 à 100 | un numéro par image, sur 3 chiffres |
| un calcul | +, - |
<1 + 5> |
6 |
| une répétition | <for x in Liste [corps]> |
<for f in Files [<f.Name>;]> |
plate;env_bg; |
| une variable d'environnement du poste | <env.NOM> ou <ENV.NOM> |
<ENV.PROD_ROOT>\<Name> |
D:\prod\sh010 |
| un objet particulier | <root>, <item>, <compound>, <children>, <user>, <computer>, <datetime>, <id> |
<compound> |
le compound de la tâche |
Quelques précisions :
- Les zéros de la version. Le nombre de
#fixe la largeur :[##]donne05,[####]donne0005. - Les séquences d'images.
<Start Frame:End Frame[####]>prend la première et la dernière image de l'objet. Pour afficher la plage plutôt que le premier fichier, Bernard écrit[début:fin (nombre)], par exempleSH0010.[1001:1100 (100)].exr. - Les variables d'environnement.
envdoit être le premier mot. Un fichier qui s'appelle « env_bg » (<Files[env_bg]>) n'est pas confondu avec une variable. - Les répétitions. La liste citée après
indoit être une liste d'objets de Bernard, commeFiles. Le corps entre crochets est interprété pour chacun, et les résultats sont mis bout à bout. À l'intérieur,<context.Propriété>donne une propriété de l'objet qui porte l'expression :<for f in Files [<f.Name>@<context.Name>;]>donneplate@sh010;env_bg@sh010;.
Un exemple complet
Un fichier « Model » d'un plan, dont la version courante est la 5. Son expression, sous Windows :
<Parent.Files[0]>\Model_v<self.version[##]>.obj
<Parent.Files[0]> est le premier fichier du parent (ici, le dossier du plan). Selon la variation de chemins et la version,
Bernard donne :
| Cas | Chemin obtenu |
|---|---|
| variation Local, version courante | P:\demo\SH0010\Model_v05.obj |
| variation Local, version 2 demandée | P:\demo\SH0010\Model_v02.obj |
| une variation de partage réseau | \\nas01\demo\SH0010\Model_v05.obj |
(Les noms de lecteur et de partage sont fictifs.)
Les messages d'erreur
Quand une expression ne peut pas être interprétée, Bernard affiche un message entre astérisques à la place de la valeur, et Path Edit souligne en rouge le nom en cause.
| Message | Cause | Que faire |
|---|---|---|
* Error: '…' not found on … * |
la propriété ou le nom n'existe pas sur l'objet | corriger l'orthographe, ou ajouter la propriété à l'objet |
* Variable (…) is not set in your environment * |
la variable d'environnement n'existe pas sur ce poste | la définir sur le poste, puis redémarrer Bernard |
* Error: Unable to interpret '…' * |
l'expression est mal formée | vérifier les < et > et les crochets |
* Recursion Error: '…' * |
une propriété se cite elle-même | retirer la citation circulaire |
* Error: Only one value expected from list for '…' * |
une liste est utilisée sans choisir un élément | ajouter [n], ou [nom] |
* Error: '…' not found in the list for '…' * |
le nom cité entre crochets n'est pas dans la liste | corriger le nom |
* Error: Context Node Not Found (possibly deleted) * |
l'objet de départ a été supprimé | restaurer l'objet, ou corriger l'expression |
L'éditeur d'expressions
Quand vous modifiez une expression (dans une propriété interprétée, dans Path Edit ou dans l'onglet Paths Variation), l'éditeur :
- colore la syntaxe ;
- propose les noms disponibles :
Ctrl+Espaceaffiche les propositions,Échaples ferme ; - souligne en rouge un nom introuvable.

Path Edit
À quoi il sert : contrôler et corriger les chemins de tous les fichiers d'une sélection. Pour une variation et un système donnés, la vue montre l'expression de chaque fichier et le chemin qu'elle donne.
Où l'ouvrir : Windows › Path Edit, puis sélectionnez un élément (ou un dossier, ou un projet).

Ce que vous pouvez faire
- Choisir la variation (Variation) et le système (OS) affichés.
- Filtrer : les champs Filter expressions et Filter paths filtrent par texte, avec le bouton ≠ pour inverser ; d'autres filtres portent sur le type de parent, le département ou les tags. Clear the filters of the columns les efface.
- Afficher : Expand all et Collapse all ; Edited expressions only (for the variation and the OS shown) ne garde que les fichiers dont l'expression a été modifiée ; Show the file's parent with its name.
- Rechercher avec
Ctrl+F(Search in the expressions) et remplacer avecCtrl+H.F3etMaj+F3passent au résultat suivant ou précédent. Options : Match case, Whole words, Regular expression, Show the replacements (aperçu du nouveau chemin), Also replace in the expressions inherited, Matching files only. Replace et Replace all agissent sur les fichiers cochés. - Éditer une expression directement dans sa cellule, avec l'éditeur d'expressions.
- Clic droit sur un fichier : Copy the path, Copy the expression, Use the inherited expression.
- Exporter les chemins (Export the paths), ou les expressions au format JSON (Export the expressions (json)).
Un exemple d'usage : le disque du projet change de lettre, de D: à P:. Cochez les fichiers concernés, cherchez D:\prod
avec Ctrl+H, remplacez par P:\prod, vérifiez l'aperçu avec Show the replacements, puis cliquez sur Replace all.
Ce qui peut bloquer : modifier les chemins d'une variation demande le droit Can modify file paths for specific Path Variations (voir Roles Setting).
Variations de chemins par système et par site
Un même fichier n'a pas le même chemin partout : sur un poste Windows du studio, sur un poste Linux, sur un partage réseau, chez un prestataire. Bernard le résout avec les variations de chemins.
Comment ça marche
- Les variations sont des catégories du studio. Local existe par défaut. L'administrateur en ajoute d'autres : un stockage partagé, un autre site, un serveur SFTP (la variation porte alors la case Is SFTP).
- Chaque fichier porte une expression par variation et par système : Windows, Linux, macOS.
- Chaque poste a sa variation courante, Current Path Variation, Local par défaut. Son système est détecté automatiquement.
- Bernard choisit l'expression de la variation du poste et de son système, l'interprète et garde le résultat en mémoire.
- Les copies se font d'une variation à une autre : télécharger copie vers la variation du poste, envoyer copie depuis elle (voir Gestion des fichiers).
Si l'expression manque, Bernard ne s'arrête pas :
- si le fichier n'a pas d'expression pour la variation du poste, Bernard prend la première variation qui en a une ;
- si le fichier n'en a pas pour le système du poste, Bernard prend celle d'un autre système et convertit les séparateurs (barre oblique inverse ou barre oblique) ;
- sur une variation SFTP, les séparateurs sont toujours des barres obliques
/.
Où les voir et les régler
- Sur un fichier : l'onglet Paths Variation du panneau Propriétés (voir Property View) montre l'expression du fichier pour chaque variation et chaque système, et vous la modifiez.
- Sur un poste : un objet Computer porte la propriété Current Path Variation, ainsi que Local Path Variation et Remote Path Variation, et l'onglet Path Variation Settings de sa fiche règle ses variations.
- Sur toute une sélection : la vue Path Edit.
Un exemple : un poste de bureau et un poste distant
Le studio a deux variations, Local et NAS. Un fichier a deux expressions :
| Variation | Windows | Linux |
|---|---|---|
| Local | P:\demo\<Parent.Name>\<Name> |
/mnt/demo/<Parent.Name>/<Name> |
| NAS | \\nas01\demo\<Parent.Name>\<Name> |
/nas/demo/<Parent.Name>/<Name> |
Un artiste sous Windows, dont la variation courante est Local, ouvre P:\demo\SEQ010\sh010. Quand il télécharge le fichier
depuis le serveur distant, Bernard le copie vers ce chemin. Un poste Linux qui utilise aussi la variation Local obtient
/mnt/demo/SEQ010/sh010.
(Les chemins et noms de partage sont fictifs.)
Ce qui peut bloquer : modifier les chemins d'une variation demande le droit Can modify file paths for specific Path Variations.
Pour aller plus loin
- Gestion des fichiers : créer un fichier, ajouter une version, copier, ouvrir.
- Interface : la place de Path Edit parmi les vues.
- La documentation de l'API Python (menu Help › API Documentation) : lire un chemin interprété depuis un script avec
GetPathValue.