Vai al contenuto

Espressione

Da Opera Wiki.

Espressioni

Le espressioni consentono di definire regole complesse per la verifica delle condizioni nelle autoselezioni oppure per la definizione di valori di quota di profili o accessori. Un’espressione può contenere numeri, variabili, operatori matematici/logici, funzioni matematiche e funzioni speciali, che vengono valutati per stabilire se una condizione è vera o falsa.

Gli operatori matematici disponibili sono:

  • + - * / → rispettivamente addizione, sottrazione, moltiplicazione e divisione
  • > → maggiore
  • < → minore

Le funzioni matematiche disponibili sono:

  • round(x) → restituisce il numero intero più vicino a X
  • floor(x) → restituisce il numero intero minore o uguale a X
  • ceil(x) → restituisce il numero intero maggiore o uguale a X
  • sqr(x) → restituisce la radice quadrata di X
  • log(x) → restituisce il logaritmo naturale di X
  • exp(x) → restituisce il risultato di e^x
  • cos(x) | sin(x) → restituisce rispettivamente il coseno e il seno di X
  • acos(x) | asin(x) → restituisce rispettivamente l'arcocoseno e l'arcoseno di X


Concatenazione degli elementi

Gli elementi possono essere combinati tra loro tramite:

  • l’uso di funzioni nidificate;
  • l’uso di operatori logici per unire più condizioni separate da parentesi tonde.

Gli operatori logici sono:

  • & → AND logico (entrambe le condizioni devono essere vere);
  • | → OR logico (almeno una condizione deve essere vera).



Note ES:
profile(A1010) & option(OPZ1) → vero solo se il profilo è 'A1010' E l’opzione 'OPZ1' è attiva 
(Lia>500) & (Hia>1600) → vero solo se la larghezza dell'anta è maggiore di 500mm e l'altezza dell'anta è maggiore di 1600mm 


Funzioni speciali

Sono previste varie funzioni speciali, utili per controllare la presenza o lo stato di profili, accessori e opzioni all'interno della struttura:

  • profile(...) : verifica se la condizione è esaminata in uno specifico profilo.
  • typology-option(...) : controlla se un’opzione è attiva in una qualunque struttura della tipologia.
  • option(...) : controlla se un’opzione è attiva nella struttura corrente.
  • frameside-contains(...) : verifica se un profilo/accessorio è presente nel lato corrente del telaio/anta.
  • frame-contains(...) : verifica la presenza di un profilo/accessorio sull'intero perimetro del telaio/anta
  • struct-contains(...) : verifica nella struttura corrente.
  • typology-contains(...) : ricerca estesa a tutte le strutture della tipologia.
  • fix-contains(...) : verifica nei profili del telaio corrente .
  • sash-contains(...) : verifica nei profili dell'anta corrente .

Per la ricerca all'interno delle specchiature, sono previste le seguenti funzioni:

  • sash-panes-contains(...) : verifica nel riempimento dell'anta corrente.
  • struct-panes-contains(...) : verifica in tutti i riempimenti della struttura.



Note ES:
profile(NOME_PROFILO)
struct-contains(NOME_PROFILO_O_ACCESSORIO)
option(NOME_OPZIONE)
struct-contains(ACC123) | struct-contains(ACC456) → vero se la struttura contiene l’accessorio 'ACC123' oppure 'ACC456'.
option(OPZ1) & (side-contains(PF100) | side-contains(PF200)) → l’opzione 'OPZ1' deve essere attiva e, allo stesso tempo, il lato deve contenere 'PF100' o 'PF200'


Ricerca codici avanzata

Le espressioni supportano due tipi di ricerca evoluta, utili quando una condizione non deve applicarsi su un singolo profilo ma a tutti i profili con un certo nome (o parte di nome) o una certa parola chiave:

  • espressione regolare: se il parametro inizia con r=, viene interpretato come una regexp.
  • parola chiave (keyword): se il parametro è keyword(key), viene ricercata la parola chiave key nei campi chiave di profili, accessori o opzioni.


Note ES:
side-contains(r=P.*2) → ricerca un profilo/accessorio nel lato corrente il cui nome contiene la lettera 'P' seguita dal numero '2', con qualunque carattere in mezzo.
frameside-contains(keyword(KITAR))→ verifica se, nel lato corrente, il telaio o i suoi accessori hanno la parola chiave 'KITAR'.  

Le ricerche regolari e per parole chiave possono anche essere annidate.

Note ES:
typology-contains(keyword(r=^FR)) → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per 'FR'.