Diese Dokumentation ist noch nicht fertiggestellt. Bitte hilf mit und trage etwas zur Dokumentation bei.
Die Seite GuiBefehl Modell erklärt, wie Befehle dokumentiert werden sollten. Unter Category:UnfinishedDocu findest du weitere unvollständige Seiten wie diese (und unter Category:UnfinishedDocu/de unvollständige Übersetzungen). Siehe Category:Command Reference für sämtliche Befehle (und Category:UnfinishedDocu/de für vorhandene Übersetzungen).
Siehe WikiSeiten, um zu lernen, wie die Wiki-Seiten bearbeitet werden und FreeCAD Unterstützen, um andere Wege zu entdecken, wie du einen Beitrag leisten kannst.
Diese Seite erklärt das Materialdatensystem in FreeCAD.
Diese Seite befindet sich zurzeit noch in Bearbeitung, um die Änderungen am Materialsystem widerzuspiegeln, das sich aktuell in Entwicklung befindet.
Im Gegensatz zu früheren Versionen werden Materialien nicht mehr als einfaches Wörterbuch implementiert. Das bisherige System hatte den Vorteil der Einfachheit, jedoch den Nachteil einer begrenzten Bandbreite bei der Beschreibung von Materialeigenschaften.
Im neuen System werden Eigenschaften separat als eine Reihe von YAML-Dateien definiert. Die Eigenschaften werden dann zu einer Eigenschaftsbeschreibung mit Werten für die erforderlichen Eigenschaften zusammengefasst. Neuere Datentypen wie Arrays bedeuten, dass der Zugriff nicht mehr über einfache Wörterbücher erfolgen kann. Stattdessen wird eine API verwendet, um auf die Materialeigenschaften und Datenwerte zuzugreifen. Dies ermöglicht größere Möglichkeiten als bisher.
Es gibt einige gute Ressourcen, mit denen sich Materialien einfacher handhaben lassen:
Im Gegensatz zum bisherigen Materialstandard sind die Materialeigenschaften klar definiert. Sie wurden so konzipiert, dass sie granular und erweiterbar sind. Eigenschaften können mehrere Eigenschaften erben und nur das hinzufügen, was sich unterscheidet. Dies verbessert die Suche und vereinfacht die Implementierung.
Derzeit gibt es keinen speziellen Eigenschaften-Editor. Die Bearbeitung kann mit jedem YAML-Tool oder einem einfachen Editor wie nano oder Notepad erfolgen.
Die Eigenschafts-Definitions-Dateien werden als Modelle bezeichnet.
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]"
Anstelle einer großen monolithischen Definitionsdatei sind die Eigenschaften granular und konzentrieren sich in der Regel auf eine bestimmte Aufgabe. Modelle lassen sich in zwei grundlegende Kategorien einteilen:
Jedes Modell verfügt über eine eindeutige Kennung (UUID), die intern zur Referenzierung verwendet wird. Die Konsistenz dieser UUID ist wichtig, da eine Änderung für ein Dokument auch Auswirkungen auf andere Dokumente haben kann. In der Regel erfordern Ergänzungen der Definition keine Änderung der Kennung, da sie weiterhin in anderen Dokumenten verwendet werden können. Wertänderungen würden jedoch eine neue UUID erfordern.
Eine optionale URL kann zu einer detaillierten Beschreibung der beschriebenen Materialeigenschaft verweisen. Da es sich hierbei um eine Beschreibung der Eigenschaft und nicht des Materials selbst handelt, sollte diese an dieser Stelle recht allgemein gehalten sein. Eine kürzere Beschreibung, in der Regel ein bis zwei Zeilen, kann ebenfalls in die Modellbeschreibung aufgenommen werden.
Jedes Material kann auch einen DOI (Digital Object Identifier) enthalten, der über https://www.doi.org/ zu einer Forschungsveröffentlichung oder einem ähnlichen Artikel von Interesse führt.
Vererbung ist eine neue Funktion. Es gibt zwei Hauptanwendungsfälle.
Ein Anwendungsfall ist die Möglichkeit, Modelle anzupassen, ohne andere Dokumente zu beschädigen. Wenn beispielsweise ein Eigenschaftstyp unterschiedlich ist, kann ein abgeleitetes Eigenschaftsmodell definiert werden, das nur diese bestimmte Eigenschaft ändert, ohne vorhandene Dokumente zu beschädigen, die darauf verweisen.
Ein zweiter Anwendungsfall ist die Gruppierung von Eigenschaften auf suchbare Weise. Beispielsweise haben alle physikalischen Objekte eine Dichte, und in vielen Fällen sind dies alle verfügbaren Informationen zu diesem Material. In Fällen, in denen lineare Elastizitätseigenschaften verfügbar sind, möchten wir diese ebenfalls einbeziehen. In einem weiteren Beispiel, bei dem die Elastizität in verschiedenen Richtungen unterschiedlich ist, wie beispielsweise bei Holz, können wir ein weiteres Modell definieren, das von der Dichte abgeleitet ist. Die Informationen werden in den drei Eigenschaftsmodellen nicht dupliziert. Zusätzlich können wir nach Materialien suchen, die die Eigenschaft Dichte aufweisen, und alle drei Modelle zurückgeben.
Das oben gezeigte Beispiel erbt von zwei anderen Eigenschaftsdefinitionen. Dazu wird das Schlüsselwort „Vererbt“ gefolgt von einer Liste der Modellnamen und Kennungen angegeben. Wenn keine Vererbung stattfindet, kann dieser Abschnitt weggelassen werden.
Eigenschaften werden durch Angabe des Namens der Eigenschaft gefolgt von einer Reihe von Deskriptoren definiert. Der Deskriptor „Typ“ ist immer erforderlich. Die übrigen Deskriptoren sind nur erforderlich, um die Typinformationen zu vervollständigen. Die URL und die Beschreibung sind optional, werden jedoch nach Möglichkeit empfohlen.
Name | Description |
---|---|
Type | The property type. See the next section |
Columns | Columns in 2D or 3D arrays. See description below. |
Units | The units associated with the Quantity type. |
URL | A link to a detailed description of the property. |
Description | A short description of the property. |
Type Name | Description |
---|---|
String | A character string. |
Integer | An unsigned integer. |
Float | A floating point number. |
URL | A URL such as https://www.freecad.org. |
Quantity | A FreeCAD quantity that includes a floating-point numeric value and units appropriate to the property. |
Color | A string in the form of (r,g,b,a) or (r,g,b) where r=red, g=green, b=blue, a=alpha as floating point values between 0 and 1. |
File | Path to a file. |
FileList | A list of file paths. See description below. |
Image | Embedded image file saved as Base64. This can result in a very large material card file. |
ImageList | A list of embedded image files saved as Base64. This can result in a very large material card file. See description below. |
List | A list of string values. |
MultiLineString | A character string that spans multiple lines. |
2DArray | A 2-dimensional array. See description below. |
3DArray | A 3-dimensional array. See description below. |
Es gibt drei Listentypen: „List“, „FileList“ und „ImageList“. Tatsächlich sind alle drei identisch, außer dass sie unterschiedliche Editoren verwenden. Bei „FileList“ verfügt jeder Eintrag über einen Dateiauswahldialog. Ebenso öffnet „ImageList“ den Bildeditor. „ImageList“ unterscheidet sich dadurch, dass es sich um eine sehr große Zeichenfolgenrepräsentation eines Bildes handelt und extrem große Materialkartendateien erzeugen kann. Mit Vorsicht verwenden.
Anordnungen haben im Vergleich zu anderen Eigenschaftstypen einige einzigartige Eigenschaften. Jede der Anordnungs-Spalten muss beschrieben werden, was das Hinzufügen der Eigenschaft „Spalten“ erforderlich macht. Die Eigenschaft „Spalten“ ist dann eine Liste von Eigenschaften, die jede Spalte beschreiben.
2D-Anordnungen haben mindestens 2 Spalten und unterstützen nur den Eigenschaftstyp „Menge“. Dies kann in Zukunft auf andere Eigenschaftstypen erweitert werden.
Die Werte in der Anordnung werden durch Angabe eines Werts aus der ersten Spalte festgelegt.
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
3D-Anordnungen ähneln in ihrer Implementierung den in den vorherigen Abschnitten beschriebenen 2D-Anordnungen. Es gibt ein Schlüsselwort „Spalten“, gefolgt von einer Liste von Eigenschaften, die die Spalten beschreiben. Die erste Spalte beschreibt die Tiefe oder dritte Dimension der Anordnungen, während die übrigen Spalten die übrigen Spalten beschreiben. Man kann sich dies als eine indizierte Liste von zweidimensionalen Anordnungen vorstellen.
Da ein zweidimensionales Felder mindestens zwei Dimensionen erfordert, sind mindestens drei Spalten erforderlich.
Auf die Werte in der Anordnung wird zugegriffen, indem zuerst die Tiefe und dann der Wert aus der ersten Spalte der 2D-Anordnung (hier die zweite Spalte) angegeben wird.
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
Dies ist eine neue Funktion, die zuvor nicht verfügbar war. In Zukunft werden möglicherweise viele Funktionen hinzugefügt, die derzeit noch nicht implementiert sind. Beispielsweise sind Felder mit Spalten aus Zeichenfolgen potenziell nützlich, derzeit jedoch noch nicht implementiert.
Interpolation ist eine wichtige Funktion, die derzeit noch nicht implementiert ist. Beispielsweise gibt ein Feld mit Zeileneintragswerten von 1 und 2 nur exakte Übereinstimmungen zurück. Eine Suche nach 1,5 würde also einen Fehler zurückgeben. In Zukunft werden die Felder einen ungefähren Wert durch Interpolation aus den verfügbaren Daten ermitteln.
Da der oben genannte Standard implementiert ist, wäre es nicht sinnvoll, alle Eigenschaften immer wieder in Objekten zu speichern. Grundsätzlich können wir eine Materialdatenbank mit dem Namen als Primärschlüssel aufbauen. Wenn Sie also keine besonderen Anforderungen an Ihr Material haben, definieren Sie einfach z. B. Name=Stahl, und FreeCAD kann alle Eigenschaften aus dieser Datenbank abrufen. Jede zusätzliche Eigenschaft, die Sie in der Zuordnung festlegen, überschreibt diejenige aus der Datenbank.
In Zukunft können wir diese Datenbank irgendwo im Internet hosten und eine allgemeine Open-Source-Materialdatenbank aufbauen.
Im Moment stelle ich mir eine Datenbank vor, die aus einem Mini-Datensatz mit einer Reihe von „grundlegenden” Materialien und deren grundlegenden Eigenschaften sowie einer SQLite-basierten Vollversion besteht.
Da die Bearbeitung von Materialeigenschaften eine mühsame Arbeit ist, sollten wir ein Python-Frontend-Modul namens Material.py [Quelle] implementieren. Hier werden alle Arten von Hilfsmethoden für die Materialhandhabung implementiert.
Das Modul sollte so implementiert werden, dass es in FreeCAD oder eigenständig über die Befehlszeile ausgeführt werden kann (die Material-Eigenschafts-Zuordnung muss als Python-Zuordnung angegeben werden).
Die Arbeit mit Materialien erfordert häufig das Importieren/Exportieren von Materialdefinitionen. Daher wird ein Dateiformat benötigt. Da wir nur über ein Schlüssel/Wert-Format verfügen, können wir ein einfaches und leicht lesbares Dateiformat zum Lesen und Parsen verwenden. Daher wurde das Format ini-file gewählt. Es ist standardisiert und es gibt bereits Parser dafür. Zum Beispiel das Config-Parser-Modul in Python.
Jede Materialdefinition befindet sich in einer Datei mit der Endung .FCMat. Einige dieser Dateien sind Teil des FreeCAD-Quellcodes und werden in die Binärdatei kompiliert. Dies dient dazu, Aufwand bei der Verteilung und beim Zugriff zu sparen. Außerdem können Dateien an verschiedenen Orten abgelegt und gesucht werden, um zusätzliche nicht standardmäßige Materialdefinitionen zu ermöglichen.
; 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
Hier findet sich die Beschreibung der vereinbarten Materialeigenschaften. Es können gerne Unterabschnitte für die Materialeigenschaften des Fachgebiets hinzufügt werden.
Property name | Description | Unit/Data-Type |
---|---|---|
Name | Unique name of the property, following the rules described above | ASCII string 7-bit |
Father | Name of the material group this material belongs to. If defined, this material inherits all the father's properties. Thus, if not defined, the father's properties will be used. | ASCII string 7-bit |
Description | A placeholder for a longer description of the material | ASCII string 7-bit |
SpecificWeight | The specific weight (also known as the unit weight) is the weight per unit volume of a material. see: Specific weight | N/m^3 |
Vendor | Specifies the brand or vendor of the material | ASCII string 7-bit |
ProductURL | An URL where to find more information about the material | ASCII string 7-bit |
SpecificPrice | The price per unit of this material. Units can vary a lot (USD/m, EUR/piece, etc...) | ASCII string 7-bit |
Aufgaben: Einige Eigenschaften mit einem Ordnungssystem für Materialien (Metall, Legierung, Mineral, Holz, ...) hinzufügen.
Property name | Description | Unit/Data-Type |
---|---|---|
Young's Modulus | Young's modulus, also known as the tensile modulus or elastic modulus, is a measure of the stiffness of an elastic material and is a quantity used to characterize materials. See: Young's modulus | N/(mm^2) (MPa) |
Poisson's Ratio | The lateral contraction of materials under tension as a fraction of their elongation. See: Poisson's Ratio | dimensionless (-) |
Yield Strength | The stress at which a ductile material (like steel) starts to develop plastic (irreversible) deformation. See: Yield Strength | N/(mm^2) (MPa) |
Ultimate Tensile Strength (UTS) | The stress at which the material ruptures. For ductile materials, this may be after experiencing significant plastic deformation (see Yield Strength). For brittle materials, Yield strength and Ultimate Tensile Strength coincide. See: UTS | N/(mm^2) (MPa) |
Yield Points | Used in a FEM non-linear material object to describe a ductile uniaxial stress-strain curve of a material. The values are entered as (yield stress, plastic strain) tuples, where the first combination is (Yield Strength, 0) and the last (UTS, Fracture Strain). See: YieldPoints | (N/(mm^2) (MPa), dimensionless (-) |
Uniaxial Compressive Strength (FCK) | The compressive strength of concrete, defined as the strength of a 150 mm cube tested for 28 days. See FCK | N/(mm^2) (MPa) |
Friction Angle (PHI) | The angle of internal friction of a granular material like sand or concrete, as used in the Mohr-Coulomb yield criterion. See PHI | ° |
Hardness | A measure of the material's resistance to localized plastic (permanent) deformations caused by indentation (pressing) or scratching (abrasion). See Hardness | no dedicated units in FreeCAD |
EN-10027-1 | In the case of steel materials, the Steel grade as defined in the European standard No. 10027-1. | string ASCII 7-bit |
Aufgaben: Weitere für die mechanische Konstruktion erforderliche Eigenschaften hinzufügen.
In diesem Abschnitt werden Materialeigenschaften definiert, die sich auf das Aussehen des Materials beziehen.
Property name | Description | Unit/Data-Type |
---|---|---|
AmbientColor | Ambient color in the Coin3D color model | float,float,float range: 0.0-1.0 |
DiffuseColor | Diffuse color in the Coin3D color model | float,float,float range: 0.0-1.0 |
SpecularColor | Specular color in the Coin3D color model | float,float,float range: 0.0-1.0 |
EmissiveColor | Emissive color in the Coin3D color model | float,float,float range: 0.0-1.0 |
SectionColor | Color shown when the material is cut in the Coin3D color model | float,float,float range: 0.0-1.0 |
Shininess | Ambient color in the Coin3D color model | float range: 0.0-1.0 |
Transparency | Ambient color in the Coin3D color model | float range: 0.0-1.0 |
VertxShader | Vertex shader program as defined in GlSl | multi line string ASCII 7-bit |
FragmentShader | Fragment shader program as defined in GlSl | multi line string ASCII 7-bit |
Property name | Description | Unit/Data-Type |
---|---|---|
ThermalConductivity | The thermal conductivity (R or lambda coefficient) indicating the material's ability to transfer heat. | W/(m*K) |
ThermalExpansionCoefficient | The Thermal expansion coefficient describing the material's increase in size due to an increase in temperature. | µm/(m*K) |
SpecificHeat | The Specific heat capacity indicating the amount of heat needed to increase the temperature of one unit of mass of the material by one unit. | J/(kg*K) |
Property name | Description | Unit/Data-Type |
---|---|---|
StandardCodeXXXX | Where XXXX is the name of the standard (for example, taken from the BlenderBIM standards repository). For example, StandardCodeUniclass2. The value is the specific code of this material in the given standard. This property can appear several times, each with a different standard code | string ASCII 7-bit |
FireStandard | The fire rating standard used in the material | string ASCII 7-bit |
FireClass | The fire resistance class of the material in the above standard | string ASCII 7-bit |
SoundTransmissionClass | The sound transmission class of this material | string ASCII 7-bit |
Finish | The type of finishing/coating of this material | string ASCII 7-bit |
Color | The color specification of this material. This is not necessarily the color to display in the viewport, but might be, for example, the color name specified in the supplier's catalog | string ASCII 7-bit |
UnitsArea | The number of units of this material necessary to fill a certain area. For example, in the case of a brick, 45 bricks/m² | units/m^2 |