This page is a translated version of the page Property and the translation is 100% complete.

Einleitung

Eine Eigenschaft ist eine Information in Form einer Zahl oder einer Zeichenkette, die mit einem FreeCAD-Dokument oder einem Objekt in einem Dokument verbunden ist. Öffentliche Eigenschaften können in der Eigenschaften-Ansicht angezeigt und geändert werden.

Eigenschaften spielen in FreeCAD eine sehr wichtige Rolle. Objekte in FreeCAD sind "parametrisch", d.h. ihr Verhalten wird durch ihre Eigenschaften festgelegt, die als Eingangsgrößen für ihre Klassenmethoden genutzt werden. Siehe auch FeaturePython Custom Properties and PropertyLink: InList and OutList

Alle Arten von Eigenschaften

Benutzerdefinierte skriptgenerierte Objekte können jede Art der Eigenschaften verwenden, die im Basis-System definiert ist:

Name Einheit (wenn vorhanden) Bemerkung
Acceleration m/s^2
AmountOfSubstance mol
Angle °
Area m^2
Bool
BoolList
Color
ColorList
CurrentDensity A/m^2
Density kg/m^3
Direction
DissipationRate m^2/s^3
Distance m
DynamicViscosity Pa*s
ElectricalCapacitance F
ElectricalConductance S
ElectricalConductivity S/m
ElectricalInductance H
ElectricalResistance Ohm
ElectricCharge C
ElectricCurrent A
ElectricPotential V
Enumeration
ExpressionEngine
File
FileIncluded
Float
FloatConstraint
FloatList
Font
Force N
Frequency Hz
HeatFlux W/m^2
Integer
IntegerConstraint
IntegerList
IntegerSet
InverseArea 1/m^2
InverseLength 1/m
InverseVolume 1/m^3
KinematicViscosity m^2/s
Length m
Link
LinkChild
LinkGlobal
LinkHidden
LinkList
LinkListChild
LinkListGlobal
LinkListHidden
LinkSub
LinkSubChild
LinkSubGlobal
LinkSubHidden
LinkSubList
LinkSubListChild
LinkSubListGlobal
LinkSubListHidden
LuminousIntensity cd
MagneticFieldStrength A/m
MagneticFlux Wb oder V*s
MagneticFluxDensity T
Magnetization A/m
Map
Mass kg
Material
MaterialList
Matrix
PartShape Eine Eigenschaft Part wird als
Part::PropertyPartShape angesprochen
Path
Percent
PersistentObject
Placement
PlacementLink
PlacementList
Position
Power W
Precision
Pressure Pa
PythonObject
Quantity
QuantityConstraint
Rotation
ShearModulus Pa
SpecificEnergy m^2/s^2 oder J/kg
SpecificHeat J/kg/K
Speed m/s
Stiffness m/s^2
Stress Pa
String
StringList
Temperature K
ThermalConductivity W/m/K
ThermalExpansionCoefficient 1/K
ThermalTransferCoefficient W/m^2/K
Time s
UltimateTensileStrength Pa
UUID
VacuumPermittivity s^4*A^2 / (m^3*kg)
Vector
VectorDistance
VectorList
Velocity m/s
Volume l oder m^3
VolumeFlowRate l/s oder m^3/s
VolumetricThermalExpansionCoefficient 1/K
Work J
XLink
XLinkList
XLinkSub
XLinkSubList
YieldStrength Pa
YoungsModulus Pa


Intern wird den Eigenschaften das Präfix App:: vorangestellt App::Property:

App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...

Nicht vergessen, diese sind Arten von Eigenschaften (property types). Ein einzelnes Objekt kann mehrere Eigenschaften derselben Art aber mit unterschiedlichen Namen besitzen.

Zum Beispiel:

obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")

Dies stellt ein Objekt mit drei Eigenschaften der Art "Float" (Fließkommawert)dar, die "Length", "Width" und "Height" heißen.

Skripten

Siehe auch: FreeCAD Grundlagen Skripten.

Ein skriptgeneriertes Objekt wird zuerst erstellt und danach werden ihm Eigenschaften hinzugefügt.

obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")

obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")

Im Allgemeinen werden Data-Eigenschaften mithilfe der Methode addProperty() des Objekts zugewiesen. View-Eigenschaften hingegen werden normalerweise automatisch vom übergeordneten Objekt bereitgestellt, von dem das skriptbasierte Objekt abgeleitet ist.

Beispiel:

  • Die Ableitung von App::FeaturePython liefert nur 4 View-Eigenschaften: "Display Mode", "On Top When Selected", "Show In Tree", und "Visibility".
  • Die Ableitung von Part::Feature liefert 17 View-Eigenschaften: die vier zuvor genannten sowie "Angular Deflection", "Bounding Box", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", und "Transparency".

Dennoch können View-Eigenschaften auch mithilfe der Methode addProperty() des View-Provider-Objekts zugewiesen werden.

obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")

Quellcode

Im Quellcode befinden sich Eigenschaften in verschiedenen src/App/Property* Dateien.

Sie werden importiert und initialisiert in src/App/Application.cpp.

#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"