Filtro de elementos
El filtro de elementos es una herramienta para filtrar elementos por categorías y/o parámetros, que consta de algoritmos de filtrado y una interfaz de configuración (en adelante, la "herramienta"). La herramienta se utiliza en muchos complementos, por ejemplo, en Subproyectos, Parametrización, Coloración de elementos y otros.
La herramienta consta de dos filtros: un filtro por categorías y un filtro por parámetros. En algunos complementos es posible utilizar solo uno de ellos. Por ejemplo, el complemento Lado del mundo utiliza únicamente el filtro por parámetros.
En la interfaz del complemento, la herramienta puede tener una disposición horizontal:

o una disposición vertical:

Si se utilizan ambos filtros, entre ellos aparece el operador lógico Y/O. El operador Y significa que un elemento cumple las condiciones de filtrado si satisface las condiciones de ambos filtros. El operador O significa que un elemento cumple las condiciones de filtrado si satisface las condiciones de al menos uno de los dos filtros.
La lista de categorías del filtro por categorías y la lista de condiciones del filtro por parámetros se pueden copiar al portapapeles y pegar desde él mediante el menú contextual que se abre con el botón derecho del ratón.
Filtro por categorías
El filtro por categorías es una lista jerárquica de categorías permitidas. La lista de categorías se edita en un cuadro de diálogo que se abre desde la ventana principal (ventana del complemento):

En la parte superior del cuadro de diálogo se encuentra un campo para buscar categorías. La búsqueda se realiza tanto por el nombre mostrado de la categoría como por su nombre único de programación. Los botones situados debajo permiten mostrar únicamente determinados grupos según el tipo de categoría.
Los botones situados a la derecha de la lista se aplican al grupo de categorías seleccionado actualmente. Permiten cancelar la selección de todas las categorías
, expandir
y contraer todas las categorías
, mostrar solo las categorías seleccionadas
o seleccionar las categorías cuyos elementos están presentes en la vista actual
. Las categorías seleccionadas se pueden guardar en conjuntos
para utilizarlos posteriormente tanto en el complemento actual como en otros complementos que utilicen el filtro por categorías.

Se puede cargar un conjunto de categorías (marcar las categorías del conjunto seleccionado) mediante el botón
.
Filtro por parámetros
El filtro por parámetros es una lista de condiciones separadas por el operador lógico Y o O. En el campo del filtro, las condiciones se representan mediante una sintaxis especial en la que se utilizan los siguientes símbolos para los operadores de comparación:
| = | – igual |
| < | – menor que |
| <= | – menor o igual que |
| > | – mayor que |
| >= | – mayor o igual que |
| <> | – no igual |
| ~ | – contiene |
| !~ | – no contiene |
Las condiciones se editan en una ventana independiente:

En la parte superior de la ventana se encuentran los enlaces Condición simple y Condición de grupo, que permiten añadir las condiciones correspondientes. Las condiciones se pueden reordenar, duplicar y eliminar. El enlace Limpiar elimina todas las condiciones.
Reglas para crear y comprobar condiciones:
- En el campo "Valores" se pueden introducir varios valores permitidos separados por comas. Se considera que un parámetro cumple la condición si su valor coincide con al menos uno de los valores permitidos.
- Para evitar que una coma se interprete como un carácter separador, es necesario escaparla mediante una barra invertida. Por ejemplo, "valor 1\,5".
- La condición "Con parámetro" significa que un elemento se procesará si tiene el parámetro especificado, independientemente de su valor.
- La condición "Sin parámetro" significa que un elemento se procesará si no tiene el parámetro especificado.
- La condición "Solo lectura" con el valor "No" significa que un elemento se procesará si el parámetro se puede editar. La condición "Solo lectura" con el valor "Sí" significa que un elemento se procesará si el parámetro no se puede editar. Un parámetro puede no estar disponible para su edición si es un parámetro de sistema no modificable (por ejemplo, el parámetro "Volumen"), si el elemento se encuentra en un subproyecto al que no se tiene acceso o por otras razones.
- Los parámetros de cadena solo se comprueban mediante las condiciones "Igual", "No igual", "Contiene" y "No contiene".
- La condición "Contiene" comprueba si el parámetro del elemento contiene al menos uno de los valores permitidos. La condición "No contiene" comprueba, respectivamente, si el parámetro no contiene al menos uno de los valores indicados.
- Para utilizar la condición "Comienza con", seleccione "Contiene" y añada el carácter "*" al final del valor. Por ejemplo, "Muro*".
- Para utilizar la condición "Termina con", seleccione "Contiene" y añada el carácter "*" al principio del valor. Por ejemplo, "*Muro".
- Para utilizar la condición "No comienza con", seleccione "No contiene" y añada el carácter "*" al final del valor. Por ejemplo, "Muro*".
- Para utilizar la condición "No termina con", seleccione "No contiene" y añada el carácter "*" al principio del valor. Por ejemplo, "*Muro".
- De forma predeterminada, los valores de cadena se comprueban distinguiendo entre mayúsculas y minúsculas mediante la opción Aa. Para las condiciones "Igual", "No igual", "Contiene" y "No contiene", se puede seleccionar la opción aa para realizar la comprobación sin distinguir entre mayúsculas y minúsculas. En la representación textual del filtro, esta condición se identifica mediante el carácter "?" después del nombre del parámetro, por ejemplo: Marca?=A-1.
- Los parámetros de tipo Sí/No se comprueban como números enteros: 0 – desactivado, 1 – activado.
- Al comprobar el parámetro especial "Group" (grupo padre), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si el elemento pertenece a un grupo. La condición "Con parámetro" se interpreta como "El elemento debe pertenecer a un grupo", mientras que "Sin parámetro" se interpreta como "El elemento no debe pertenecer a un grupo". Cualquier otra condición, si el elemento pertenece a un grupo, comprueba el nombre del grupo según las reglas para cadenas.
- Al comprobar el parámetro especial "Assembly" (montaje padre), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si el elemento pertenece a un montaje. La condición "Con parámetro" se interpreta como "El elemento debe pertenecer a un montaje", mientras que "Sin parámetro" se interpreta como "El elemento no debe pertenecer a un montaje". Cualquier otra condición, si el elemento pertenece a un montaje, comprueba el nombre del montaje según las reglas para cadenas.
- Al comprobar el parámetro especial "Curtain" (si un muro es un muro cortina), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si el muro es un muro cortina. La condición "Con parámetro" se interpreta como "El muro debe ser un muro cortina", mientras que "Sin parámetro" se interpreta como "El muro no debe ser un muro cortina".
- Al comprobar el parámetro especial "Nested" (si una familia está anidada), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si la familia es una familia anidada. La condición "Con parámetro" se interpreta como "La familia debe estar anidada", mientras que "Sin parámetro" se interpreta como "La familia no debe estar anidada".
- Al comprobar el parámetro especial "Parent" (si una familia es una familia padre), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si la familia es una familia padre, es decir, si contiene familias anidadas. La condición "Con parámetro" se interpreta como "La familia debe ser una familia padre", mientras que "Sin parámetro" se interpreta como "La familia no debe ser una familia padre".
- Al utilizar los parámetros especiales "BottomZ" y "TopZ", se comprueban respectivamente las cotas más baja y más alta de la geometría del elemento. Los parámetros especiales "BottomZ" y "TopZ" se consideran numéricos y se comprueban mediante las condiciones correspondientes. Los valores de las cotas se expresan en milímetros y se redondean a tres decimales. En el campo "Valor" se pueden indicar nombres de niveles: si se encuentra el nivel especificado, se utilizará su cota en milímetros, redondeada a tres decimales.
- El parámetro especial "AreaScheme" devuelve el nombre del esquema de áreas al que pertenece un área. El valor del parámetro especial "AreaScheme" se comprueba según las reglas para cadenas. Si el elemento no es un área, la condición se ignora y siempre devuelve el valor "verdadero".
- Al comprobar el parámetro especial "InMEPSystem" (si un elemento pertenece a un sistema MEP), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si el elemento forma parte de un sistema MEP. La condición "Con parámetro" se interpreta como "El elemento forma parte de un sistema MEP", mientras que "Sin parámetro" se interpreta como "El elemento no forma parte de un sistema MEP".
- Al comprobar el parámetro especial "InRebarSystem" (si el refuerzo pertenece a un sistema de refuerzo), las condiciones "Con parámetro" y "Sin parámetro" determinan, respectivamente, si el refuerzo forma parte de un sistema de refuerzo. La condición "Con parámetro" se interpreta como "El refuerzo forma parte de un sistema de refuerzo", mientras que "Sin parámetro" se interpreta como "El refuerzo no forma parte de un sistema de refuerzo".
- El parámetro especial "DocumentTitle" devuelve el nombre del documento actual. El valor del parámetro especial "DocumentTitle" se comprueba según las reglas para cadenas. Si el documento no se ha guardado o está desvinculado, se devuelve el valor predeterminado o una cadena vacía.
- Todas las condiciones simples anidadas de una condición de grupo se comprueban mediante el operador "Y", es decir, deben cumplirse todas las condiciones anidadas.
- En lugar del nombre de un parámetro, se puede indicar el GUID de un parámetro compartido o el nombre de sistema de un parámetro incorporado.

Las condiciones creadas se pueden guardar en conjuntos
para utilizarlas posteriormente. Al guardar un conjunto, es necesario indicar su nombre, opcionalmente añadir una descripción y seleccionar el ámbito de disponibilidad del conjunto:
- Guardar para el complemento – el conjunto estará disponible en el complemento actual
- Guardar globalmente – el conjunto estará disponible en otros complementos que utilicen el filtro por parámetros.
Se puede cargar un conjunto de condiciones guardado anteriormente mediante el botón
.
En el campo del identificador de parámetro puede aparecer un botón que permite seleccionar un parámetro de una lista:

Este botón aparece si se han especificado categorías en el filtro por categorías. Si el documento actual contiene ejemplares de elementos de esas categorías, estarán disponibles dos listas: Parámetros de ejemplar y Parámetros de tipo. Si no existen ejemplares en el modelo, pero sí tipos de elementos, solo se mostrará la lista de parámetros de tipo.
Como identificador de parámetro se puede especificar el nombre del parámetro, el GUID de un parámetro compartido o el nombre de sistema de un parámetro incorporado.
Además de los parámetros, en las condiciones se pueden utilizar el identificador del elemento (ID), el identificador del tipo de elemento (TypeID) y los parámetros especiales Group, Assembly, Curtain, Parent, Nested, BottomZ, TopZ, AreaScheme, InMEPSystem, InRebarSystem, DocumentTitle y otros, cuando estén disponibles.
Al seleccionar las condiciones "Igual" y "No igual", se habilita el botón para buscar valores de parámetros
:

La búsqueda se realiza entre todos los elementos y tipos de elementos de las categorías indicadas. En la ventana de búsqueda están disponibles los siguientes ámbitos:
- Proyecto – busca valores del parámetro en todo el documento actual
- Vista actual – busca valores del parámetro entre los elementos de la vista actual
- Archivos vinculados – busca valores del parámetro en los archivos vinculados cargados. Se puede seleccionar un archivo vinculado específico o la opción Todos para buscar simultáneamente en todos los archivos vinculados cargados.
Una condición de grupo es una lista de condiciones simples. Todas las condiciones simples dentro de una condición de grupo se comprueban mediante el operador lógico Y. Un elemento cumple la condición de grupo si satisface todas las condiciones simples anidadas. En el campo del filtro, la condición de grupo se encierra entre corchetes.
En la parte inferior de la ventana se encuentra la lista desplegable El elemento es válido si, que establece el operador lógico entre las condiciones. El valor todas las condiciones coinciden corresponde al operador lógico Y, mientras que al menos una condición coincide corresponde al operador lógico O.
El ejemplo de la captura de pantalla anterior se representa en el campo del filtro de la siguiente manera:

Esto significa que un muro cumple las condiciones si su parámetro "Marca" tiene el valor "C-1" o si su parámetro "Marca" tiene el valor "C-2" y su parámetro "Estructuras portantes" tiene el valor "1".
La búsqueda de los parámetros requeridos en el elemento que se está comprobando se realiza por el nombre del parámetro. Primero se busca entre los parámetros de ejemplar y, si no se encuentra, entre los parámetros de tipo.