Sebbene non siano forniti dall'ambiente Material, questi strumenti relativi a Material sono inclusi nel core di FreeCAD e possono essere utilizzati senza caricare questo ambiente:
Material: Assegna un materiale agli oggetti selezionati.
Aspetto: Imposta le proprietà di visualizzazione degli oggetti selezionati. Spesso utilizzato dopo l'applicazione di un materiale, quando per un dato materiale non sono definite le proprietà dell'aspetto.
Questa guida spiega i concetti fondamentali e i flussi di lavoro per l'utilizzo del sistema dei materiali in FreeCAD. Illustra i diversi strumenti, le proprietà e i dettagli tecnici chiave per l'uso sia interattivo che tramite script.
Strumenti di Material
Editor del Materiale
Utilizzo: Fare clic sul pulsante Modifica nell'ambiente di lavoro Material.
Scopo: L'editor di Material è uno strumento per definire e gestire i materiali. La sua unica funzione è creare nuovi materiali, modificare le proprietà di quelli esistenti e organizzarli.
Comportamento:
È disconnesso dal modello 3D; la selezione di un oggetto nel documento non ha alcun effetto sull'editor.
Non è possibile assegnare un materiale a un oggetto da questa finestra. Facendo clic su OK, semplicemente si chiude l'editor.
Selettore del materiale
Utilizzo: Selezionare uno o più oggetti nella Vista 3D o nella Vista ad albero, quindi selezionare l'opzione Materiale dal menu contestuale.
Scopo: Questo strumento viene utilizzato per assegnare un materiale agli oggetti.
Comportamento:
Apre un pannello attività contenente un albero col browser dei materiali.
Il pulsante Avvia Editor avvia l'Editor dei materiali per modificare o creare un materiale.
Selezionando un materiale nell'albero del browser dei materiali, le sue proprietà vengono immediatamente applicate agli oggetti selezionati. Questo è il passaggio necessario per collegare i dati fisici di un materiale a una parte.
Proprietà fisiche vs. aspetto
In FreeCAD un materiale è definito da due distinti insiemi di proprietà:
Proprietà fisiche: definiscono le caratteristiche ingegneristiche di un materiale, utilizzate per calcoli e simulazioni (ad esempio, in FEM). Alcuni esempi includono Densità, Modulo di Young e Rapporto di Poisson.
Proprietà di aspetto: definiscono l'aspetto visivo di un materiale ai fini del rendering. Alcuni esempi includono DiffuseColor, Shininess e Transparency.
Non è necessario che un materiale abbia entrambe le caratteristiche. Alcuni materiali potrebbero essere definiti solo per l'analisi (con le sole proprietà fisiche), mentre altri potrebbero essere definiti solo per la visualizzazione (con le sole proprietà estetiche).
Sostituire l'aspetto del materiale
L'aspetto finale di un oggetto è determinato da una gerarchia. Le proprietà visive impostate in un materiale possono essere sovrascritte dalle impostazioni locali dell'oggetto stesso.
Come sovrascrivere: Selezionare l'opzione Aspetto dal menu contestuale della Vista ad albero o dalla Vista 3D dell'oggetto. Qualsiasi modifica apportata qui avrà la precedenza sulle proprietà di aspetto del materiale assegnato.
Avvertenze: Questo può essere fonte di confusione. Se è stato assegnato un materiale a un oggetto ma il suo colore non cambia, è probabile che l'oggetto abbia un override dell'aspetto locale. Non c'è un indicatore visivo chiaro nell'interfaccia utente che indichi che un override è attivo.
Come annullare un override: Per ripristinare l'aspetto del materiale, si può utilizzare nuovamente lo strumento Aspetto e riselezionare il materiale per applicare le sue proprietà dell'aspetto.
Proprietà
Quando si assegna un materiale, FreeCAD collega i dati all'oggetto e al suo provider di visualizzazione utilizzando due proprietà.
DatiShape Material: Questa è la proprietà più importante. Viene aggiunta all'Oggetto Documento. Contiene un collegamento a un oggetto Materials::Material completo, consentendo l'accesso a tutti i suoi dati fisici e di aspetto per calcoli e script. Questa è una proprietà nascosta.
VistaShape Appearance: Questa proprietà esiste nel View Provider dell'oggetto. Si tratta di un elenco che controlla il rendering finale dell'oggetto nella vista 3D ed è ciò che viene modificato quando si utilizza il pannello attività Aspetto .
Espressioni
È possibile accedere ai valori delle proprietà dei materiali tramite espressioni, una funzionalità particolarmente utile in Spreadsheet. Per assicurarsi di ottenere una quantità numerica utilizzabile anziché una stringa di testo, è necessario utilizzare il dizionario PropertyObjects.
❌ Metodo non corretto (restituisce un testo): L'utilizzo del dizionario PhysicalProperties restituisce una stringa con l'unità, che non può essere utilizzata nelle formule successive.
✅ Metodo corretto (restituisce una quantità): Utilizzando il dizionario PropertyObjects e accedendo al suo attributo Value viene restituito un oggetto Quantity completo, che può essere utilizzato direttamente nei calcoli.
→ Restituisce un oggetto Quantità che il foglio di calcolo può utilizzare numericamente.
Se questo valore si trova nella cella A1 del foglio di calcolo, si può scrivere una formula nella cella A2 come = A1 * 10 e funzionerà correttamente.
Scripting
È possibile leggere e impostare le proprietà dei materiali utilizzando script Python. I metodi principali sono .getPhysicalValue() e .setPhysicalValue().
importFreeCADimportFreeCADGui# Get a reference to your object (e.g., a PartDesign Body)obj=App.ActiveDocument.getObject("Body")# --- Check for and get a property ---ifobj.ShapeMaterial.hasPhysicalProperty("Density"):# Get the value. This returns a FreeCAD.Quantity object.density_quantity=obj.ShapeMaterial.getPhysicalValue("Density")print(f"The material is: {obj.ShapeMaterial.Name}")print(f"The density is: {density_quantity}")print(f"Numerical value: {density_quantity.Value}")else:print("The selected material does not have a 'Density' property.")# --- Set a property ---# The value can be a string with units or a FreeCAD.Quantity object.try:obj.ShapeMaterial.setPhysicalValue("Density","8000 kg/m^3")App.ActiveDocument.recompute()print("Density successfully updated.")exceptExceptionase:print(f"Failed to set property: {e}")