Cette documentation n'est pas terminée. Merci de nous aider et de contribuer à la documentation.
Modèle GuiCommand explique comment les commandes doivent être documentées. Parcourez Category:UnfinishedDocu pour voir d'autres pages incomplètes comme celle-ci. Voir Category:Command_Reference pour toutes les commandes.
Voir Écrire une page Wiki pour apprendre à éditer les pages du wiki, et aller à Contribuer à FreeCAD pour apprendre d'autres façons de contribuer.
Cette page vous renseigne sur le système de données des matériaux dans FreeCAD.
Il est actuellement en cours de révision afin de refléter les modifications apportées au système de matériaux actuellement en cours de développement.
Contrairement aux versions précédentes, les matériaux ne sont plus implémentés sous la forme d'un simple dictionnaire. Le système précédent présentait l'avantage d'être simple, mais avait pour inconvénient d'offrir une gamme limitée pour décrire les propriétés des matériaux.
Dans le nouveau système, les propriétés sont définies séparément sous forme d'une série de fichiers YAML. Elles sont ensuite combinées dans une description de propriété avec des valeurs spécifiées pour les propriétés requises. Les nouveaux types de données, tels que les tableaux, signifient qu'il n'est plus possible d'y accéder à l'aide de simples dictionnaires. Une API est plutôt utilisée pour accéder aux propriétés matérielles et aux valeurs des données. Cela permet d'obtenir des capacités supérieures à celles qui étaient possibles auparavant.
Il existe plusieurs ressources utiles pour faciliter la gestion des matériaux :
Contrairement à la norme précédente, les propriétés des matériaux sont clairement définies. Elles ont été conçues pour être granulaires et extensibles. Les propriétés peuvent hériter de plusieurs propriétés, en ajoutant uniquement ce qui est différent. Cela améliorera la recherche et simplifiera la mise en œuvre.
Actuellement, il n'existe pas d'éditeur dédié aux propriétés. Elles peuvent être modifiées à l'aide de n'importe quel outil YAML ou d'un éditeur simple tel que nano ou Notepad.
Les fichiers de définition des propriétés sont appelés modèles.
Model:
Name: 'Linear Elastic'
UUID: '7b561d1d-fb9b-44f6-9da9-56a4f74d7536'
URL: 'https://en.wikipedia.org/wiki/Linear_elasticity'
Description: >
Materials that are linearly elastic obey Hooke's law i.e. the stress and
strain relationship is linear
DOI: "10.1016/j.ijplas.2004.06.004"
Inherits:
- Density:
UUID: '454661e5-265b-4320-8e6f-fcf6223ac3af'
- IsotropicLinearElastic:
UUID: 'f6f9e48c-b116-4e82-ad7f-3659a9219c50'
AngleOfFriction:
Type: 'Quantity'
Units: 'deg'
URL: 'https://en.wikipedia.org/wiki/Friction#Angle_of_friction'
Description: >
Further information can be found at
https://en.wikipedia.org/wiki/Mohr%E2%80%93Coulomb_theory
CompressiveStrength:
Type: 'Quantity'
Units: 'kPa'
URL: 'https://en.wikipedia.org/wiki/Compressive_strength'
Description: "Compressive strength in [FreeCAD Pressure unit]"
Plutôt que d'un grand fichier de définition monolithique, les propriétés sont granulaires, généralement axées sur une tâche spécifique. Les modèles se divisent en deux catégories de base :
Chaque modèle possède un identifiant unique, ou UUID, qui est utilisé pour le référencer en interne. La cohérence de cet UUID est importante, car le modifier pour un document peut également affecter d'autres documents. En règle générale, les ajouts à la définition ne nécessitent pas de changement d'identifiant, car ils peuvent toujours être utilisés dans d'autres documents, mais les changements de valeur nécessiteraient un nouvel UUID.
Une URL facultative peut renvoyer vers une description détaillée de la propriété du matériau décrite. Étant donné qu'il s'agit d'une description de la propriété et non du matériau lui-même, elle doit être assez générique à ce stade. Une description plus courte, généralement d'une ou deux lignes, peut également être incluse dans la description du modèle.
Chaque document peut également inclure un DOI (Digital Object Identifier) qui renvoie, via https://www.doi.org/, à une publication scientifique ou à un élément similaire présentant un intérêt.
L'héritage est une nouvelle fonction. Il existe deux principaux cas d'utilisation.
Un cas d'utilisation consiste à offrir la possibilité de modifier des modèles sans endommager d'autres documents. Par exemple, dans les cas où un type de propriété est différent, vous pouvez définir un modèle de propriété dérivé qui ne modifie que cette propriété spécifique sans endommager les documents existants qui y font référence.
Un deuxième cas d'utilisation consiste à regrouper les propriétés de manière à pouvoir les rechercher. Par exemple, tous les objets physiques ont une densité, et dans de nombreux cas, ce sera la seule information disponible pour ce matériau. Dans les cas où les propriétés d'élasticité linéaire sont disponibles, nous souhaiterions également les inclure. Dans un autre exemple où l'élasticité est différente selon les directions, comme le bois, nous pouvons définir un autre modèle dérivé de la densité. Les informations ne sont pas dupliquées dans les trois modèles de propriétés. De plus, nous pouvons effectuer une recherche sur les matériaux qui ont la propriété de densité et renvoyer les trois modèles.
L'exemple ci-dessus hérite de deux autres définitions de propriétés. Pour ce faire, il spécifie le mot-clé « Inherits » suivi d'une liste des noms et identifiants des modèles. S'il n'y a pas d'héritage, cette section peut être omise.
Les propriétés sont définies en fournissant le nom de la propriété, suivi d'une série de descripteurs. Le descripteur « Type » est toujours obligatoire. Les autres descripteurs ne sont obligatoires que pour compléter les informations relatives au type. L'URL et la description sont facultatives, mais recommandées dans la mesure du possible.
| Name | Description |
|---|---|
| Type | Type de propriété. Voir la section suivante. |
| Columns | Colonnes dans des tableaux 2D ou 3D. Voir la description ci-dessous. |
| Units | Unités associées au type Quantity. |
| URL | Lien vers une description détaillée de la propriété. |
| Description | Brève description de la propriété. |
| Type Name | Description |
|---|---|
| String | Chaîne de caractères. |
| Integer | Un entier non signé. |
| Float | Un nombre à virgule flottante. |
| URL | Une URL telle que https://www.freecad.org. |
| Quantity | Une quantité FreeCAD qui comprend une valeur numérique à virgule flottante et des unités appropriées à la propriété. |
| Color | Une chaîne sous la forme (r,g,b,a) ou (r,g,b) où r=rouge, g=vert, b=bleu, a=alpha sous forme de valeurs à virgule flottante comprises entre 0 et 1. |
| File | Chemin d'accès à un fichier. |
| FileList | Une liste de chemins d'accès à des fichiers. Voir la description ci-dessous. |
| Image | Fichier image intégré enregistré au format Base64. Cela peut entraîner un fichier de carte de matériau très volumineux. |
| ImageList | Une liste de fichiers image intégrés enregistrés au format Base64. Cela peut entraîner un fichier de carte de matériau très volumineux. Voir la description ci-dessous. |
| List | Liste de valeurs de chaîne. |
| MultiLineString | Chaîne de caractères s'étendant sur plusieurs lignes. |
| 2DArray | Tableau à deux dimensions. Voir la description ci-dessous. |
| 3DArray | Tableau à trois dimensions. Voir la description ci-dessous. |
Il existe trois types de listes : « List », « FileList » et « ImageList ». En réalité, les trois sont identiques, à l'exception du fait qu'elles utilisent des éditeurs différents. Pour « FileList », chaque entrée dispose d'un sélecteur de fichiers. De même, « ImageList » ouvre l'éditeur d'images. « ImageList » se distingue par le fait qu'il s'agit d'une représentation sous forme de chaîne très longue d'une image et qu'elle peut générer des fichiers de cartes de matériel extrêmement volumineux. À utiliser avec précaution.
Les tableaux ont certaines propriétés uniques par rapport aux autres types de propriétés. Chaque colonne du tableau doit être décrite, ce qui nécessite l'ajout de la propriété « Columns ». La propriété « Columns » est alors une liste de propriétés décrivant chaque colonne.
Les tableaux 2D ont au minimum 2 colonnes et ne prennent en charge que le type de propriété « Quantity ». Cela pourrait être étendu à d'autres types de propriétés à l'avenir.
Les valeurs dans le tableau sont spécifiées en fournissant une valeur à partir de la première colonne.
TestArray2D3Column:
Type: '2DArray'
Columns:
Temperature:
Type: 'Quantity'
Units: 'C'
URL: ''
Description: "Temperature"
Density:
Type: 'Quantity'
Units: 'kg/m^3'
URL: 'https://en.wikipedia.org/wiki/Density'
Description: "Density in [FreeCAD Density unit]"
InitialYieldStress:
Type: 'Quantity'
Units: 'kPa'
URL: ''
Description: >
Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit]
URL: ''
Description: >
2 Dimensional array showing density and initial yield stress with temperature
Les tableaux 3D sont similaires dans leur implémentation aux tableaux 2D décrits dans les sections précédentes. Il existe un mot-clé « Columns » suivi d'une liste de propriétés pour décrire les colonnes. La première colonne décrit la profondeur ou la troisième dimension du tableau, les colonnes restantes décrivant les colonnes restantes. Cela peut être considéré comme une liste indexée de tableaux à deux dimensions.
Étant donné qu'un tableau à deux dimensions nécessite au minimum deux dimensions, cela nécessitera au minimum trois colonnes.
Pour accéder aux valeurs du tableau, il faut d'abord spécifier la profondeur, puis la valeur de la première colonne du tableau 2D (ici, la deuxième colonne).
TestArray3D:
Type: '3DArray'
Columns:
Temperature:
Type: 'Quantity'
Units: 'C'
URL: ''
Description: "Temperature"
Stress:
Type: 'Quantity'
Units: 'MPa'
URL: ''
Description: "Stress"
Strain:
Type: 'Quantity'
Units: 'MPa'
URL: ''
Description: "Strain"
URL: ''
Description: >
3 Dimensional array showing stress and strain as
a function of temperature
Il s'agit d'une nouvelle fonction qui n'était pas disponible auparavant. De nombreuses fonctions qui ne sont pas encore implémentées pourraient être ajoutées à l'avenir. Par exemple, les tableaux contenant des colonnes de chaînes de caractères pourraient s'avérer utiles, mais ils ne sont pas encore implémentés.
L'interpolation est une fonction importante qui n'est actuellement pas implémentée. Par exemple, un tableau dont les valeurs d'entrée des lignes sont 1 et 2 ne renverra que des correspondances exactes. Ainsi, une recherche de 1.5 renverra une erreur. À l'avenir, les tableaux détermineront une valeur approximative en interpolant à partir des données disponibles.
Étant donné que la norme ci-dessus est mise en œuvre, il ne serait pas logique de stocker toutes les propriétés à plusieurs reprises dans les objets. En gros, nous pouvons créer une base de données de matériaux avec le nom comme clé primaire. Ainsi, si vous n'avez pas d'exigences particulières pour votre matériau, il vous suffit de définir par exemple Name=Steel, et FreeCAD peut récupérer toutes les propriétés à partir de cette base de données. Chaque propriété supplémentaire que vous définissez dans la carte remplace celle de la base de données.
À l'avenir, nous pourrons héberger cette base de données quelque part sur le web et constituer une base de données générale open source sur les matériaux.
Pour l'instant, j'envisage une base de données compilée dans un mini-ensemble de données contenant un ensemble de matériaux « de base » et leurs propriétés fondamentales, ainsi qu'une version complète basée sur SQLite.
Étant donné que la gestion des propriétés des matériaux est un travail fastidieux, nous devrions implémenter un module frontal Python appelé Material.py [source]. Ce sera l'endroit où implémenter toutes sortes de méthodes d'aide pour la gestion des matériaux.
Le module doit être implémenté de manière à pouvoir fonctionner dans FreeCAD ou de manière autonome en ligne de commande (la carte des propriétés des matériaux doit être fournie sous forme de carte Python).
Travailler avec des matériaux implique souvent d'importer/exporter des définitions de matériaux. Un format de fichier est donc nécessaire. Comme nous n'avons qu'un format clé/valeur, nous pouvons utiliser un format de fichier simple et facile à lire et à analyser. C'est pourquoi le format INI a été choisi. Il est normalisé et il existe déjà des analyseurs disponibles. Par exemple, le module d'analyseur de configuration en Python.
Chaque définition de matière réside dans un fichier avec extension .FCMat. Certains de ces fichiers font partie du source de FreeCAD et sont compilés dans le fichier binaire. Il s'agit de sauver des dépenses dans la distribution et l'accès. Mais les fichiers peuvent aussi être placés et répartis à différents endroits pour accepter les autres définitions de matériaux non standards.
; last modified 1 April 2001 by John Doe
Name=Steel_Cast
Father=Steel
Source=Some material book everyone knows (or not); Some comment
[EN10027]
; steel standard EN 10027-1
Name=S235JR+AR
[Graphic]
EmissiveColor = 255,255,255
Voici la description des propriétés convenues pour les matériaux. N'hésitez pas à ajouter une sous-section pour les propriétés des matériaux relevant de votre domaine d'expertise.
| Nom de la propriété | Description | Unité/Type de données |
|---|---|---|
| Name | Nom unique de la propriété, conformément aux règles décrites ci-dessus | Chaîne ASCII 7 bits |
| Father | Nom du groupe de matériaux auquel appartient ce matériau. S'il est défini, ce matériau hérite de toutes les propriétés du père. Ainsi, s'il n'est pas défini, les propriétés du père seront utilisées. | Chaîne ASCII 7 bits |
| Description | Espace réservé pour une description plus longue du matériau | Chaîne ASCII 7 bits |
| SpecificWeight | Poids spécifique (également appelé poids unitaire) est le poids par unité de volume d'un matériau. Voir : Poids spécifique | N/m^3 |
| Vendor | Spécifie la marque ou le fournisseur du matériau | Chaîne ASCII 7 bits |
| ProductURL | URL où trouver plus d'informations sur le matériau | Chaîne ASCII 7 bits |
| SpecificPrice | Prix unitaire de ce matériau. Les unités peuvent varier considérablement (USD/m, EUR/pièce, etc.) | Chaîne ASCII 7 bits |
À faire : ajouter certaines propriétés avec un système de commandes de matériaux (métal, alliage, minéral, bois...)
| Nom de la propriété | Description | Unité/Type de données |
|---|---|---|
| Young's Modulus | Le module d'Young, également appelé module de traction ou module d'élasticité, est une mesure de la rigidité d'un matériau élastique et une quantité utilisée pour caractériser les matériaux. Voir : Module d'Young | N/(mm^2) (MPa) |
| Poisson's Ratio | Contraction latérale des matériaux sous tension exprimée en fraction de leur allongement. Voir : Coefficient de Poisson | sans dimension (-) |
| Yield Strength | Contrainte à laquelle un matériau ductile (comme l'acier) commence à se déformer de manière plastique (irréversible). Voir : Limite d'élasticité | N/(mm^2) (MPa) |
| Ultimate Tensile Strength (UTS) | Contrainte à laquelle le matériau se rompt. Pour les matériaux ductiles, cela peut se produire après une déformation plastique importante (voir Limite d'élasticité). Pour les matériaux fragiles, la limite d'élasticité et la résistance à la traction maximale coïncident. Voir : UTS | N/(mm^2) (MPa) |
| Yield Points | Utilisés dans un objet matériau non linéaire FEM pour décrire une courbe de contrainte-déformation uniaxiale ductile d'un matériau. Les valeurs sont saisies sous forme de tuples (contrainte d'élasticité, déformation plastique), où la première combinaison est (limite d'élasticité, 0) et la dernière (limite de rupture, déformation de rupture). Voir : Écrouissage | (N/(mm^2) (MPa), sans dimension (-) |
| Uniaxial Compressive Strength (FCK) | La résistance à la compression du béton, définie comme la résistance d'un cube de 150 mm testé pendant 28 jours. Voir FCK | N/(mm^2) (MPa) |
| Friction Angle (PHI) | Angle de frottement interne d'un matériau granulaire tel que le sable ou le béton, utilisé dans le critère de rupture de Mohr-Coulomb. Voir PHI | ° |
| Hardness | Mesure de la résistance du matériau aux déformations plastiques (permanentes) localisées causées par l'indentation (pression) ou le rayage (abrasion). Voir Dureté | pas d'unité dédiée dans FreeCAD |
| EN-10027-1 | Dans le cas des matériaux en acier, les types d'acier tels que définis dans la norme européenne n° 10027-1. | chaîne ASCII 7 bits |
À faire : ajouter encore des propriétés requises pour la conception mécanique.
Cette section définit les propriétés des matériaux liées à leur apparence visuelle.
| Nom de la propriété | Description | Unité/Type de données |
|---|---|---|
| AmbientColor | Couleur ambiante dans le modèle de couleur de Coin3D | flottant,flottant,flottant plage : 0,0-1,0 |
| DiffuseColor | Couleur diffuse dans le modèle de couleur de Coin3D | flottant,flottant,flottant plage : 0,0-1,0 |
| SpecularColor | Couleur spéculaire dans le modèle de couleur de Coin3D | flottant,flottant,flottant plage : 0,0-1,0 |
| EmissiveColor | Couleur émissive dans le modèle de couleur de Coin3D | flottant,flottant,flottant plage : 0,0-1,0 |
| SectionColor | Couleur affichée lorsque le matériau est coupé dans le modèle de couleur de Coin3D | flottant,flottant,flottant plage : 0,0-1,0 |
| Shininess | Couleur ambiante dans le modèle de couleur de Coin3D | flottant plage : 0,0-1,0 |
| Transparency | Couleur ambiante dans le modèle de couleurs de Coin3D | flottant plage : 0,0-1,0 |
| VertxShader | Programme de shader des sommets tel que défini dans le GLSL | chaîne multiligne ASCII 7 bits |
| FragmentShader | Programme de shader des fragments tel que défini dans le GLSL | chaîne multiligne ASCII 7 bits |
| Nom de la propriété | Description | Unité/Type de données |
|---|---|---|
| ThermalConductivity | La conductivité thermique (coefficient R ou lambda) indiquant la capacité du matériau à transférer la chaleur. | W/(m*K) |
| ThermalExpansionCoefficient | Le coefficient de dilatation thermique décrivant l'augmentation de taille du matériau due à une augmentation de la température. | µm/(m*K) |
| SpecificHeat | La capacité thermique spécifique indiquant la quantité de chaleur nécessaire pour augmenter la température d'une unité de masse du matériau d'une unité. | J/(kg*K) |
| Nom de la propriété | Description | Unité/Type de données |
|---|---|---|
| StandardCodeXXXX | Où XXXX est le nom de la norme (par exemple, tiré de le dépôt des normes de BlenderBIM). Par exemple, StandardCodeUniclass2. La valeur est le code spécifique de ce matériau dans la norme donnée. Cette propriété peut apparaître plusieurs fois, chacune avec un code de norme différent | chaîne ASCII 7 bits |
| FireStandard | La norme de résistance au feu utilisée dans le matériau | chaîne ASCII 7 bits |
| FireClass | La classe de résistance au feu du matériau dans la norme ci-dessus | chaîne ASCII 7 bits |
| SoundTransmissionClass | La classe de transmission acoustique de ce matériau | chaîne ASCII 7 bits |
| Finish | Le type de finition/revêtement de ce matériau | chaîne ASCII 7 bits |
| Color | La spécification de la couleur de ce matériau. Il ne s'agit pas nécessairement de la couleur à afficher dans la fenêtre d'affichage, mais cela peut être, par exemple, le nom de la couleur spécifié dans le catalogue du fournisseur | chaîne ASCII 7 bits |
| UnitsArea | Le nombre d'unités de ce matériau nécessaires pour remplir une certaine surface. Par exemple, dans le cas d'une brique, 45 briques/m² | unités/m^2 |
Contraintes