Expressions/it: Difference between revisions
Renatorivo (talk | contribs) (Created page with "In un'espressione è possibile utilizzare i dati provenienti da altre parti della costruzione. La sintassi per un riferimento a un campo è il seguente: object.property. Se la...") |
Renatorivo (talk | contribs) (Created page with "La tabella seguente mostra alcuni esempi: {|{{Prettytable}} !Dati CAD !Chiamata nell'espressione !Risultato |- |Lunghezza parametrica di un Cubo di Parte |Cube.Length |...") |
||
Line 25: | Line 25: | ||
In un'espressione è possibile utilizzare i dati provenienti da altre parti della costruzione. La sintassi per un riferimento a un campo è il seguente: object.property. Se la proprietà è un composto di campi, si può accedere ad esempio con object.property.field. |
In un'espressione è possibile utilizzare i dati provenienti da altre parti della costruzione. La sintassi per un riferimento a un campo è il seguente: object.property. Se la proprietà è un composto di campi, si può accedere ad esempio con object.property.field. |
||
La tabella seguente mostra alcuni esempi: |
|||
The following table shows some examples: |
|||
{|{{Prettytable}} |
{|{{Prettytable}} |
||
!CAD |
!Dati CAD |
||
!Chiamata nell'espressione |
|||
!Call in expression |
|||
!Risultato |
|||
!Result |
|||
|- |
|- |
||
|Lunghezza parametrica di un Cubo di Parte |
|||
|Parametric Length of a Part-Workbench Cube |
|||
|Cube.Length |
|Cube.Length |
||
| |
|Lunghezza con unità in mm |
||
|- |
|- |
||
|Volume |
|Volume del Cubo |
||
|Cube.Shape.Volume |
|Cube.Shape.Volume |
||
|Volume in mm³ |
|Volume in mm³ senza unità |
||
|- |
|- |
||
|Tipo di forma del Cubo |
|||
|Type of the Cube-shape |
|||
|Cube.Shape.ShapeType |
|Cube.Shape.ShapeType |
||
| |
|Stringa: Solid |
||
|- |
|- |
||
|Etichetta del Cubo |
|||
|Label of the Cube |
|||
|Cube.Label |
|Cube.Label |
||
| |
|Stringa: Cube |
||
|- |
|- |
||
|coordinata x del centro di massa del Cubo |
|||
|x-coordinate of center of mass of the Cube |
|||
|Cube.Shape.CenterOfMass.x |
|Cube.Shape.CenterOfMass.x |
||
|x |
|coordinata x in mm senza unità |
||
|- |
|- |
||
| |
|Valore di un vincolo in uno schizzo |
||
|Constraints.Width |
|Constraints.Width |
||
| |
|Valore numerico del vincolo di nome 'Width' nello schizzo |
||
|} |
|} |
||
Revision as of 19:28, 8 October 2015
Ora è possibile definire le proprietà utilizzando espressioni matematiche. Nella GUI, gli spin box o i campi di input che sono legati alle proprietà contengono un'icona blu File:Sketcher Expressions.png. Cliccando sull'icona, oppure digitando il segno di uguale (=), si porta in primo piano l'editor delle espressioni per quella particolare proprietà.
Una espressione di FreeCAD è un'espressione matematica che segue la normale notazione per gli operatori matematici standard (+, -, * e /) e le funzioni come descritto in seguito. Inoltre, l'espressione può fare riferimento ad altre proprietà, e anche utilizzare le condizioni. I numeri di un'espressione possono opzionalmente essere collegati ad una unità di misura.
Gli operatori e le funzioni sono unit-aware (consapevoli delle unità), e richiedono combinazioni di unità valide, se sono fornite. Ad esempio, 2mm + 4mm è un'espressione valida, mentre 2mm + 4 non lo è (il motivo di questo è che un'espressione come 1in + 4 molto probabilmente viene interpretata come 1in + 4in da un umano, ma tutte le unità vengono convertite nel SI sistema interno, e il sistema non è in grado di indovinare questo).
Funzioni Supportate
Nelle espressioni, sono supportate le seguenti funzioni, usando uno o due argomenti: abs, acos, asin, atan, atan2, cos, cosh, exp, log, log10, mod, pow, sin, sinh, sqrt, tan, tanh, ceil, floor, trunc, round.
Le funzioni trigonometriche utilizzano i gradi come unità di default; fornire "rad" se si desidera che utilizzino i radianti.
Le costanti pi greco ed e sono predefinite
L'istruzione condizionale funziona così: = condition ? resultTrue : resultFalse
La condizione è definita come un'espressione che restituisce 0 (per false) o non-zero per true. Sono definiti i seguenti operatori di confronto: ==, !=, >, <, >=, and <=.
Le formule sono scritte in questo modo: 2 * Length, dove Length è una proprietà contenuta nell'oggetto dell'espressione.
Riferimento ai dati CAD
In un'espressione è possibile utilizzare i dati provenienti da altre parti della costruzione. La sintassi per un riferimento a un campo è il seguente: object.property. Se la proprietà è un composto di campi, si può accedere ad esempio con object.property.field.
La tabella seguente mostra alcuni esempi:
Dati CAD | Chiamata nell'espressione | Risultato |
---|---|---|
Lunghezza parametrica di un Cubo di Parte | Cube.Length | Lunghezza con unità in mm |
Volume del Cubo | Cube.Shape.Volume | Volume in mm³ senza unità |
Tipo di forma del Cubo | Cube.Shape.ShapeType | Stringa: Solid |
Etichetta del Cubo | Cube.Label | Stringa: Cube |
coordinata x del centro di massa del Cubo | Cube.Shape.CenterOfMass.x | coordinata x in mm senza unità |
Valore di un vincolo in uno schizzo | Constraints.Width | Valore numerico del vincolo di nome 'Width' nello schizzo |
Global variables
There is no concept of global variables in FreeCAD at the moment. Instead, arbitrary variables can be defined as cells in a spreadsheet using the Spreadsheet workbench, and then be given a name using the alias property for the cell (right-click on cell). Then they can be accessed from any expression just as any other object property.
Known issues / remaining tasks
- The dependency graphs is based on the relationship between document objects, not properties. This means that you cannot provide data to and query the same object in e.g a spreadsheet, even though there are no cyclic dependency when just the properties are considered. As a work-around, use multiple spreadsheets, e.g one to drive your model, and one for reporting.
- There is no expression manager implemented where all expressions in a document are listed, and can be created, deleted, queries, etc.
- The Data properties tab does not yet support expressions.
- Renaming aliases or inserting/removing rows/columns in a spreadsheet will not propagate changes to expressions in the document.