Expresiones y rutas
Bernard no guarda la ruta de un archivo tal cual: guarda una expresión, un texto en el que algunas partes se sustituyen por valores de Bernard. Así, un mismo archivo puede tener la ruta correcta en un puesto Windows, en un puesto Linux o en un servidor remoto.
Esta página explica el lenguaje de las expresiones, la herramienta Path Edit, que permite controlarlas y corregirlas, y las variaciones de ruta por sistema operativo y por sede. Para crear un archivo y gestionar sus versiones, consulta Gestión de archivos.
Qué es una expresión
Una expresión es un texto normal en el que algunas partes se escriben entre < y >. Bernard sustituye cada una de esas
partes por un valor.
Las rutas de archivo son expresiones. Cualquier propiedad de tipo texto que el administrador haya marcado como Is Interpreted también lo es (consulta Root Settings).
Ejemplo, para un archivo de un plano:
D:\prod\<Parent.Name>\<Name>
Si el plano se llama sh010 y su padre SEQ010, la ruta obtenida es D:\prod\SEQ010\sh010.
Una ruta se construye paso a paso: la expresión de un archivo puede citar un archivo del padre, cuya expresión cita a su vez un archivo del abuelo, desde la carpeta del proyecto hasta el archivo.
Los nombres usados entre < y > no distinguen mayúsculas de minúsculas: <Name> y <name> son idénticos.
La sintaxis
| Para obtener | Escribe | Ejemplo | Da |
|---|---|---|---|
| una propiedad del objeto | <Propiedad> |
<Name> |
sh010 |
| una propiedad de un padre | <Parent.Propiedad> |
<Parent.Name> |
SEQ010 |
| un elemento de una lista, por su posición | <Lista[n]> |
<Files[0]> |
el primer archivo de la lista |
| un elemento de una lista, por su nombre | <Lista[nombre]> |
<Files[env_bg]> |
el archivo llamado « env_bg » |
| un texto en mayúsculas o minúsculas | .upper() o .lower() |
<Name.upper()> |
SH010 |
| una parte de un texto | <Propiedad[inicio:fin]> |
<Envelope[0:3]>, con el valor « letter » |
let |
| la versión del archivo, con ceros | <self.version[##]> |
versión actual 5 | 05 |
| una secuencia de imágenes | <Start Frame:End Frame[###]> |
imágenes 1 a 100 | un número por imagen, con 3 cifras |
| un cálculo | +, - |
<1 + 5> |
6 |
| una repetición | <for x in Lista [cuerpo]> |
<for f in Files [<f.Name>;]> |
plate;env_bg; |
| una variable de entorno del puesto | <env.NOMBRE> o <ENV.NOMBRE> |
<ENV.PROD_ROOT>\<Name> |
D:\prod\sh010 |
| un objeto concreto | <root>, <item>, <compound>, <children>, <user>, <computer>, <datetime>, <id> |
<compound> |
el compound de la tarea |
Algunas precisiones:
- Los ceros de la versión. El número de
#fija el ancho:[##]da05,[####]da0005. - Las secuencias de imágenes.
<Start Frame:End Frame[####]>toma la primera y la última imagen del objeto. Para mostrar el rango en lugar del primer archivo, Bernard escribe[inicio:fin (cantidad)], por ejemploSH0010.[1001:1100 (100)].exr. - Las variables de entorno.
envdebe ser la primera palabra. Un archivo que se llama « env_bg » (<Files[env_bg]>) no se confunde con una variable. - Las repeticiones. La lista citada después de
indebe ser una lista de objetos de Bernard, comoFiles. El cuerpo entre corchetes se interpreta para cada uno, y los resultados se ponen uno a continuación del otro. Dentro,<context.Propiedad>da una propiedad del objeto que lleva la expresión:<for f in Files [<f.Name>@<context.Name>;]>daplate@sh010;env_bg@sh010;.
Un ejemplo completo
Un archivo « Model » de un plano, cuya versión actual es la 5. Su expresión, en Windows:
<Parent.Files[0]>\Model_v<self.version[##]>.obj
<Parent.Files[0]> es el primer archivo del padre (aquí, la carpeta del plano). Según la variación de ruta y la versión,
Bernard da:
| Caso | Ruta obtenida |
|---|---|
| variación Local, versión actual | P:\demo\SH0010\Model_v05.obj |
| variación Local, versión 2 solicitada | P:\demo\SH0010\Model_v02.obj |
| una variación de recurso compartido de red | \\nas01\demo\SH0010\Model_v05.obj |
(Los nombres de unidad y de recurso compartido son ficticios.)
Los mensajes de error
Cuando una expresión no se puede interpretar, Bernard muestra un mensaje entre asteriscos en lugar del valor, y Path Edit subraya en rojo el nombre en cuestión.
| Mensaje | Causa | Qué hacer |
|---|---|---|
* Error: '…' not found on … * |
la propiedad o el nombre no existe en el objeto | corregir la ortografía, o añadir la propiedad al objeto |
* Variable (…) is not set in your environment * |
la variable de entorno no existe en este puesto | definirla en el puesto y reiniciar Bernard |
* Error: Unable to interpret '…' * |
la expresión está mal formada | comprobar los < y > y los corchetes |
* Recursion Error: '…' * |
una propiedad se cita a sí misma | quitar la cita circular |
* Error: Only one value expected from list for '…' * |
se usa una lista sin elegir un elemento | añadir [n], o [nombre] |
* Error: '…' not found in the list for '…' * |
el nombre citado entre corchetes no está en la lista | corregir el nombre |
* Error: Context Node Not Found (possibly deleted) * |
el objeto de partida se ha eliminado | restaurar el objeto, o corregir la expresión |
El editor de expresiones
Cuando modificas una expresión (en una propiedad interpretada, en Path Edit o en la pestaña Paths Variation), el editor:
- colorea la sintaxis;
- propone los nombres disponibles:
Ctrl+Spacemuestra las propuestas,Esclas cierra; - subraya en rojo un nombre que no encuentra.

Path Edit
Para qué sirve: controlar y corregir las rutas de todos los archivos de una selección. Para una variación y un sistema dados, la vista muestra la expresión de cada archivo y la ruta que da.
Dónde abrirlo: Windows › Path Edit, y luego selecciona un elemento (o una carpeta, o un proyecto).

Lo que puedes hacer
- Elegir la variación (Variation) y el sistema (OS) que se muestran.
- Filtrar: los campos Filter expressions y Filter paths filtran por texto, con el botón ≠ para invertir; otros filtros se aplican al tipo de padre, al departamento o a las etiquetas. Clear the filters of the columns los borra.
- Mostrar: Expand all y Collapse all; Edited expressions only (for the variation and the OS shown) conserva solo los archivos cuya expresión se ha modificado; Show the file's parent with its name.
- Buscar con
Ctrl+F(Search in the expressions) y reemplazar conCtrl+H.F3yShift+F3pasan al resultado siguiente o anterior. Opciones: Match case, Whole words, Regular expression, Show the replacements (vista previa de la nueva ruta), Also replace in the expressions inherited, Matching files only. Replace y Replace all actúan sobre los archivos marcados. - Editar una expresión directamente en su celda, con el editor de expresiones.
- Clic derecho en un archivo: Copy the path, Copy the expression, Use the inherited expression.
- Exportar las rutas (Export the paths), o las expresiones en formato JSON (Export the expressions (json)).
Un ejemplo de uso: el disco del proyecto cambia de letra, de D: a P:. Marca los archivos afectados, busca D:\prod con
Ctrl+H, reemplaza por P:\prod, comprueba la vista previa con Show the replacements y haz clic en Replace all.
Lo que puede bloquear: modificar las rutas de una variación requiere el permiso Can modify file paths for specific Path Variations (consulta Roles Setting).
Variaciones de ruta por sistema y por sede
Un mismo archivo no tiene la misma ruta en todas partes: en un puesto Windows del estudio, en un puesto Linux, en un recurso compartido de red, en un proveedor externo. Bernard lo resuelve con las variaciones de ruta.
Cómo funciona
- Las variaciones son categorías del estudio. Local existe por defecto. El administrador añade otras: un almacenamiento compartido, otra sede, un servidor SFTP (la variación lleva entonces la casilla Is SFTP).
- Cada archivo lleva una expresión por variación y por sistema: Windows, Linux, macOS.
- Cada puesto tiene su variación actual, Current Path Variation, Local por defecto. Su sistema se detecta automáticamente.
- Bernard elige la expresión de la variación del puesto y de su sistema, la interpreta y guarda el resultado en memoria.
- Las copias se hacen de una variación a otra: descargar copia hacia la variación del puesto, enviar copia desde ella (consulta Gestión de archivos).
Si falta la expresión, Bernard no se detiene:
- si el archivo no tiene expresión para la variación del puesto, Bernard toma la primera variación que tenga una;
- si el archivo no tiene ninguna para el sistema del puesto, Bernard toma la de otro sistema y convierte los separadores (barra invertida o barra);
- en una variación SFTP, los separadores son siempre barras
/.
Dónde verlas y ajustarlas
- En un archivo: la pestaña Paths Variation del panel Propiedades (consulta Property View) muestra la expresión del archivo para cada variación y cada sistema, y la modificas.
- En un puesto: un objeto Computer lleva la propiedad Current Path Variation, así como Local Path Variation y Remote Path Variation, y la pestaña Path Variation Settings de su ficha ajusta sus variaciones.
- En toda una selección: la vista Path Edit.
Un ejemplo: un puesto de oficina y un puesto remoto
El estudio tiene dos variaciones, Local y NAS. Un archivo tiene dos expresiones:
| Variación | 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 artista en Windows, cuya variación actual es Local, abre P:\demo\SEQ010\sh010. Cuando descarga el archivo desde el
servidor remoto, Bernard lo copia a esa ruta. Un puesto Linux que también usa la variación Local obtiene
/mnt/demo/SEQ010/sh010.
(Las rutas y los nombres de recurso compartido son ficticios.)
Lo que puede bloquear: modificar las rutas de una variación requiere el permiso Can modify file paths for specific Path Variations.
Para ir más lejos
- Gestión de archivos: crear un archivo, añadir una versión, copiar, abrir.
- Interfaz: el lugar de Path Edit entre las vistas.
- La documentación de la API de Python (menú Help › API Documentation): leer una ruta interpretada desde un script con
GetPathValue.