Bien qu'ils ne soient pas fournis par l'atelier Material, ces outils liés aux matériaux sont inclus dans le noyau de FreeCAD et peuvent être utilisés sans charger l'atelier :
Matériau : Attribue un matériau aux objets sélectionnés.
Apparence : Définit les propriétés d'affichage des objets sélectionnés. Souvent utilisé après l'application d'un matériau, lorsqu'un matériau donné ne définit pas les propriétés d'apparence.
Ce guide explique les concepts fondamentaux et les workflows (flux de travail) pour utiliser le système de matériaux dans FreeCAD. Il couvre les différents outils, propriétés et détails techniques clés pour une utilisation interactive et scriptée.
Outils matériaux
Éditeur de matériaux
Utilisation : Cliquez sur le bouton Modifier dans l'atelier Material.
Objectif : L'éditeur de matériaux est un outil permettant de définir et gérer les matériaux. Sa seule fonction est de créer de nouveaux matériaux, de modifier les propriétés de ceux qui existent déjà et de les organiser.
Comportement :
Il est déconnecté de votre modèle 3D ; la sélection d'un objet dans votre document n'a aucun effet sur l'éditeur.
Vous ne pouvez pas attribuer de matériau à un objet à partir de cette fenêtre. Cliquer sur OK ferme simplement l'éditeur.
Sélecteur de matériaux
Utilisation : Sélectionnez un ou plusieurs objets dans la vue 3D ou la vue arborescente, puis sélectionnez l'option Matériau dans le menu contextuel.
Objectif : Cet outil sert à attribuer un matériau à des objets.
Comportement :
Il ouvre un panneau de tâches contenant une arborescence de navigateur de matériaux.
Le bouton Lancer l'éditeur lance l'éditeur de matériaux pour modifier ou créer un matériau.
La sélection d'un matériau dans l'arborescence du navigateur de matériaux applique immédiatement ses propriétés aux objets sélectionnés. Il s'agit de l'étape requise pour lier les données physiques d'un matériau à une pièce.
Propriétés physiques vs propriétés esthétiques
Dans FreeCAD, un matériau est défini par deux ensembles distincts de propriétés :
Propriétés physiques : elles définissent les caractéristiques techniques d'un matériau, qui sont utilisées pour les calculs et les simulations (par exemple, dans l'atelier FEM). Parmi les exemples, on peut citer Density, YoungsModulus et PoissonRatio.
Propriétés d'apparence : elles définissent l'aspect visuel d'un matériau à des fins de rendu. Parmi les exemples, citons DiffuseColor, Shininess et Transparency.
Un matériau n'est pas tenu de posséder les deux. Certains matériaux peuvent être définis uniquement à des fins d'analyse (avec uniquement des propriétés physiques), tandis que d'autres peuvent être définis uniquement à des fins de visualisation (avec uniquement des propriétés d'apparence).
Remplacer l'apparence du matériau
L'apparence finale d'un objet est déterminée par une hiérarchie. Les propriétés visuelles définies dans un matériau peuvent être remplacées par des paramètres locaux sur l'objet lui-même.
Comment remplacer : sélectionnez l'option Apparence depuis le menu Arborescence de l'objet ou dans la vue 3D. Toutes les modifications que vous effectuez ici, auront priorité sur les propriétés d'apparence du matériau attribué.
Avertissements : cela peut être source de confusion. Si vous avez attribué un matériau à un objet mais que sa couleur ne change pas, c'est probablement parce que l'objet a un remplacement d'apparence locale. Il n'y a pas d'indicateur visuel clair dans l'interface utilisateur pour montrer qu'une substitution est active.
Comment annuler une substitution : pour restaurer l'apparence du matériau, vous pouvez utiliser à nouveau l'outil Apparence et resélectionner le matériau afin d'appliquer ses propriétés d'apparence.
Propriétés
Lorsque vous attribuez un matériau, FreeCAD relie les données à l'objet et à son fournisseur de vue à l'aide de deux propriétés.
DonnéesShape Material : Il s'agit de la propriété la plus importante. Elle est ajoutée à l'objet « Document ». Elle contient un lien vers un objet Materials::Material complet, donnant accès à toutes ses données physiques et d'apparence pour les calculs et les scripts. Il s'agit d'une propriété cachée.
VueShape Appearance : cette propriété existe sur le « fournisseur de vue » de l'objet. Il s'agit d'une liste qui contrôle le rendu final de l'objet dans la vue 3D et qui est modifiée lorsque vous utilisez le panneau de tâches Apparence.
Expressions
Vous pouvez accéder aux valeurs des propriétés des matériaux à l'aide d'expressions, ce qui est particulièrement puissant dans l'atelier Spreadsheet. Pour vous assurer d'obtenir une quantité numérique utilisable, plutôt qu'une chaîne de texte, vous devez utiliser le dictionnaire PropertyObjects.
❌ Méthode incorrecte (renvoie du texte) : l'utilisation du dictionnaire PhysicalProperties renvoie une chaîne avec des unités, qui ne peut pas être utilisée dans les formules suivantes.
✅ Méthode correcte (renvoie une quantité) : l'utilisation du dictionnaire PropertyObjects et l'accès à son attribut Value renvoient un objet Quantity complet qui peut être utilisé directement dans les calculs.
→ Renvoie un objet Quantity que la feuille de calcul peut utiliser numériquement.
Si cette valeur se trouve dans la cellule A1 de votre feuille de calcul, vous pouvez alors écrire une formule dans la cellule A2 telle que = A1 * 10, et elle fonctionnera correctement.
Scriptage
Vous pouvez obtenir et définir les propriétés des matériaux à l'aide de scripts Python. Les principales méthodes sont .getPhysicalValue() et .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}")