Espressione
Da Opera Wiki.
|  (→Espressioni) | |||
| (50 revisioni intermedie non mostrate.) | |||
| Riga 1: | Riga 1: | ||
| - | + | = 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: | |
| + | * <code>+ - * / </code> → rispettivamente addizione, sottrazione, moltiplicazione e divisione | ||
| + | * <code>></code> → maggiore | ||
| + | * <code><</code> → minore | ||
| - | * | + | Le funzioni matematiche disponibili sono: | 
| + | * <code>round(x) </code> → restituisce il numero intero più vicino a X | ||
| + | * <code>floor(x)</code> → restituisce il numero intero minore o uguale a X | ||
| + | * <code>ceil(x)</code> → restituisce il numero intero maggiore o uguale a X | ||
| + | * <code>sqr(x)</code> → restituisce la radice quadrata di X | ||
| + | * <code>log(x)</code> → restituisce il logaritmo naturale di X | ||
| + | * <code>exp(x)</code> → restituisce il risultato di e^<sup>x</sup> | ||
| + | * <code>cos(x) | sin(x) </code> → restituisce rispettivamente il coseno e il seno di X | ||
| + | * <code>acos(x) | asin(x) </code> → 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: | 
| + | * <code>&</code> → AND logico (entrambe le condizioni devono essere vere);   | ||
| + | * <code>|</code> → OR logico (almeno una condizione deve essere vera).   | ||
| - | |||
| - | |||
| - | + | {{BR}} | |
| + | {{ES|  | ||
| + | <pre>profile(A1010) & option(OPZ1) → vero solo se il profilo è 'A1010' E l’opzione 'OPZ1' è attiva </pre>  | ||
| + | <pre>(Lia>500) & (Hia>1600) → vero solo se la larghezza dell'anta è maggiore di 500mm e l'altezza dell'anta è maggiore di 1600mm </pre>  | ||
| + | }} | ||
| - | + | {{BR}} | |
| - | + | ||
| - | + | == Funzioni speciali == | |
| + | Sono previste varie ''funzioni speciali'', utili per controllare la presenza o lo stato di profili, accessori e opzioni all'interno della struttura: | ||
| - | + | * <code>profile(...) </code>: verifica se la condizione è esaminata in uno specifico profilo.   | |
| + | * <code>typology-option(...) </code>: controlla se un’opzione è attiva in una qualunque struttura della tipologia.   | ||
| + | * <code>option(...) </code>: controlla se un’opzione è attiva nella struttura corrente.   | ||
| + | * <code>frameside-contains(...) </code>: verifica se un profilo/accessorio è presente nel lato corrente del telaio/anta.   | ||
| + | * <code>frame-contains(...) </code>: verifica la presenza di un profilo/accessorio sull'intero perimetro del telaio/anta | ||
| + | * <code>struct-contains(...) </code>: verifica nella struttura corrente.   | ||
| + | * <code>typology-contains(...) </code>: ricerca estesa a tutte le strutture della tipologia.   | ||
| + | * <code>fix-contains(...) </code>: verifica nei profili del telaio corrente .   | ||
| + | * <code>sash-contains(...) </code>: verifica nei profili dell'anta corrente .   | ||
| - | *' | + | Per la ricerca all'interno delle specchiature, sono previste le seguenti funzioni: | 
| + | * <code>sash-panes-contains(...) </code>: verifica nel riempimento dell'anta corrente.   | ||
| + | * <code>struct-panes-contains(...) </code>: verifica in tutti i riempimenti della struttura.   | ||
| - | |||
| - | + | {{BR}} | |
| + | {{ES|  | ||
| + | <pre>profile(NOME_PROFILO)</pre>   | ||
| + | <pre>struct-contains(NOME_PROFILO_O_ACCESSORIO)</pre>   | ||
| + | <pre>option(NOME_OPZIONE)</pre> | ||
| + | <pre>struct-contains(ACC123) | struct-contains(ACC456) → vero se la struttura contiene l’accessorio 'ACC123' oppure 'ACC456'.</pre> | ||
| + | <pre>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'</pre> | ||
| + | }} | ||
| - | + | {{BR}} | |
| - | + | == 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: | |
| - | + | * <code>espressione regolare</code>: se il parametro inizia con <code>r=</code>, viene interpretato come una ''regexp''.   | |
| - | + | * <code>parola chiave (keyword)</code>: se il parametro è <code>keyword(key)</code>, viene ricercata la parola chiave ''key'' nei campi chiave di profili, accessori o opzioni.   | |
| - | + | ||
| + | {{BR}} | ||
| + | {{ES| | ||
| + | <pre>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.</pre> | ||
| + | <pre>frameside-contains(keyword(KITAR))→ verifica se, nel lato corrente, il telaio o i suoi accessori hanno la parola chiave 'KITAR'.  </pre> | ||
| + | }} | ||
| - | + | Le ricerche regolari e per parole chiave possono anche essere ''annidate''.   | |
| + | {{ES| | ||
| + | <pre>typology-contains(keyword(r=^FR)) → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per 'FR'. </pre>}} | ||
| - | |||
| - | + | <!-- HELP: JM/W517 --> | |
| + | [[Category: JM/Manuale]] | ||
Versione corrente delle 08:13, 27 ago 2025
| Indice | 
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).
 ES:
 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.
 ES:
 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 conr=, 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.
 ES:
 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.
 ES:
 ES:typology-contains(keyword(r=^FR)) → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per 'FR'.

