Espressione

Da Opera Wiki.

(Differenze fra le revisioni)
(Funzioni disponibili)
(Espressioni)
 
(19 revisioni intermedie non mostrate.)
Riga 1: Riga 1:
= Espressioni =
= Espressioni =
-
Le '''espressioni''' consentono di definire regole complesse per la verifica delle condizioni nelle autoselezioni.   
+
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 e ''funzioni integrate'', che vengono valutati per stabilire se una condizione è vera o falsa.   
+
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:
Gli operatori matematici disponibili sono:
Riga 8: Riga 8:
* <code>></code> → maggiore
* <code>></code> → maggiore
* <code><</code> → minore
* <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 ==
== Concatenazione degli elementi ==
Gli elementi possono essere combinati tra loro tramite:
Gli elementi possono essere combinati tra loro tramite:
* l’uso di funzioni nidificate;
* l’uso di funzioni nidificate;
-
* l’uso di operatori logici per unire più condizioni.
+
* l’uso di operatori logici per unire più condizioni separate da parentesi tonde.
Gli operatori logici sono:
Gli operatori logici sono:
Riga 21: Riga 32:
{{BR}}
{{BR}}
{{ES|  
{{ES|  
-
<pre>profile(A) & option(OPZ1) → vero solo se il profilo è ''A'' '''e''' l’opzione ''OPZ1'' è attiva </pre>  
+
<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>
+
<pre>(Lia>500) & (Hia>1600) → vero solo se la larghezza dell'anta è maggiore di 500mm e l'altezza dell'anta è maggiore di 1600mm </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}}
{{BR}}
-
== Funzioni disponibili ==
+
== Funzioni speciali ==
-
Sono previste varie ''funzioni integrate'', utili per controllare la presenza o lo stato di profili, accessori e opzioni all'interno della struttura:
+
Sono previste varie ''funzioni speciali'', utili per controllare la presenza o lo stato di profili, accessori e opzioni all'interno della struttura:
-
* <code>profile(CODICE_PROFILO) </code>: verifica se la condizione è esaminata in uno specifico profilo.   
+
* <code>profile(...) </code>: verifica se la condizione è esaminata in uno specifico profilo.   
-
* <code>typology-option(CODICE_OPZIONE) </code>: controlla se un’opzione è attiva in una qualunque struttura della tipologia.   
+
* <code>typology-option(...) </code>: controlla se un’opzione è attiva in una qualunque struttura della tipologia.   
-
* <code>option(CODICE_OPZIONE) </code>: controlla se un’opzione è attiva nella struttura corrente.   
+
* <code>option(...) </code>: controlla se un’opzione è attiva nella struttura corrente.   
-
* <code>frameside-contains(CODICE) </code>: verifica se un profilo/accessorio è presente in un lato del telaio o dell’anta.   
+
* <code>frameside-contains(...) </code>: verifica se un profilo/accessorio è presente nel lato corrente del telaio/anta.   
-
* <code>frame-contains(CODICE) </code>: verifica la presenza di un profilo/accessorio nel telaio o nell’anta (qualsiasi lato). 
+
* <code>frame-contains(...) </code>: verifica la presenza di un profilo/accessorio sull'intero perimetro del telaio/anta
-
* <code>sideX-contains(...) </code>: come sopra, ma riferito a un lato specifico (inserire valore al posto di X: 1 = sx, 2 = dx, 3 = sup, 4 = inf). 
+
* <code>struct-contains(...) </code>: verifica nella struttura corrente.   
* <code>struct-contains(...) </code>: verifica nella struttura corrente.   
* <code>typology-contains(...) </code>: ricerca estesa a tutte le strutture della tipologia.   
* <code>typology-contains(...) </code>: ricerca estesa a tutte le strutture della tipologia.   
Riga 53: Riga 61:
<pre>struct-contains(NOME_PROFILO_O_ACCESSORIO)</pre>   
<pre>struct-contains(NOME_PROFILO_O_ACCESSORIO)</pre>   
<pre>option(NOME_OPZIONE)</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>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>
+
<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>
}}
}}
-
== Ricerca avanzata ==
+
{{BR}}
-
Le espressioni supportano due tipi di ricerca evoluta:
+
== Ricerca codici avanzata ==
-
=== Ricerca regolare ===
+
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:
-
Se il parametro inizia con <code>r=</code>, viene interpretato come una ''regular expression''. 
+
-
Esempio:
+
* <code>espressione regolare</code>: se il parametro inizia con <code>r=</code>, viene interpretato come una ''regexp''.  
-
<code>side-contains(r=P.*2)</code>   
+
* <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.
-
→ ricerca un profilo/accessorio nel lato corrente il cui nome contiene la lettera ''P'' seguita dal numero ''2'', con qualunque carattere in mezzo.
+
-
=== Ricerca per parole chiave ===
+
{{BR}}
-
Se il parametro è <code>keyword(kw)</code>, viene ricercata la parola chiave ''kw'' nelle parole chiave dei profili, accessori o opzioni.   
+
{{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>
 +
}}
-
Esempio:  
+
Le ricerche regolari e per parole chiave possono anche essere ''annidate''.  
-
<code>frameside-contains(keyword(KITAR))</code> 
+
{{ES|
-
verifica se, nel lato corrente, il telaio o i suoi accessori hanno la parola chiave ''KITAR''.
+
<pre>typology-contains(keyword(r=^FR)) → ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per 'FR'. </pre>}}
-
Le ricerche regolari e per parole chiave possono anche essere '''annidate'''. 
 
-
Esempio: 
+
<!-- HELP: JM/W517 -->
-
<code>typology-contains(keyword(r=^FR))</code>
+
[[Category: JM/Manuale]]
-
→ ricerca in tutta la tipologia profili o accessori in cui almeno una parola chiave inizia per ''FR''.
+

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).



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'. 
Strumenti personali