Property
Introducción
Una propiedad es una pieza de información como un número o una cadena de texto que se adjunta a un documento FreeCAD o a un objeto en un documento. Las propiedades públicas se pueden ver y modificar en el Editor de propiedades.
Las propiedades juegan un papel muy importante en FreeCAD. Como los objetos en FreeCAD son "paramétricos", esto significa que su comportamiento está definido por sus propiedades y cómo estas propiedades se utilizan como entrada para sus métodos de clase. Consulte también Propiedades personalizadas de FeaturePython y PropertyLink: InList y OutList
Todos los tipos de propiedades
Los objetos creados por script personalizados pueden utilizar cualquiera de los tipos de propiedades definidos en el sistema base:
Name | Unit (if any) | Remark |
---|---|---|
Acceleration | m/s^2 | |
AmountOfSubstance | mol | |
Angle | ° | |
Area | m^2 | |
Bool | ||
BoolList | ||
Color | ||
ColorList | ||
CurrentDensity | A/m^2 | introduced in 0.21 |
Density | kg/m^3 | |
Direction | ||
DissipationRate | m^2/s^3 | introduced in 0.21 |
Distance | m | |
DynamicViscosity | Pa*s | introduced in 0.21 |
ElectricalCapacitance | F | introduced in 0.21 |
ElectricalConductance | S | introduced in 0.21 |
ElectricalConductivity | S/m | introduced in 0.21 |
ElectricalInductance | H | introduced in 0.21 |
ElectricalResistance | Ohm | introduced in 0.21 |
ElectricCharge | C | introduced in 0.21 |
ElectricCurrent | A | introduced in 0.21 |
ElectricPotential | V | introduced in 0.20 |
Enumeration | ||
ExpressionEngine | ||
File | ||
FileIncluded | ||
Float | ||
FloatConstraint | ||
FloatList | ||
Font | ||
Force | N | |
Frequency | Hz | |
HeatFlux | W/m^2 | introduced in 0.21 |
Integer | ||
IntegerConstraint | ||
IntegerList | ||
IntegerSet | ||
InverseArea | 1/m^2 | introduced in 0.21 |
InverseLength | 1/m | introduced in 0.21 |
InverseVolume | 1/m^3 | introduced in 0.21 |
KinematicViscosity | m^2/s | introduced in 0.21 |
Length | m | |
Link | ||
LinkChild | ||
LinkGlobal | ||
LinkHidden | ||
LinkList | ||
LinkListChild | ||
LinkListGlobal | ||
LinkListHidden | ||
LinkSub | ||
LinkSubChild | ||
LinkSubGlobal | ||
LinkSubHidden | ||
LinkSubList | ||
LinkSubListChild | ||
LinkSubListGlobal | ||
LinkSubListHidden | ||
LuminousIntensity | cd | introduced in 0.21 |
MagneticFieldStrength | A/m | introduced in 0.21 |
MagneticFlux | Wb or V*s | introduced in 0.21 |
MagneticFluxDensity | T | introduced in 0.21 |
Magnetization | A/m | introduced in 0.21 |
Map | ||
Mass | kg | introduced in 0.21 |
Material | ||
MaterialList | ||
Matrix | ||
PartShape | a Part property, is accessed asPart::PropertyPartShape
| |
Path | ||
Percent | ||
PersistentObject | ||
Placement | ||
PlacementLink | ||
PlacementList | ||
Position | ||
Power | W | introduced in 0.21 |
Precision | ||
Pressure | Pa | |
PythonObject | ||
Quantity | ||
QuantityConstraint | ||
Rotation | ||
ShearModulus | Pa | introduced in 0.21 |
SpecificEnergy | m^2/s^2 or J/kg | introduced in 0.21 |
SpecificHeat | J/kg/K | introduced in 0.21 |
Speed | m/s | |
Stiffness | m/s^2 | |
Stress | Pa | introduced in 0.21 |
String | ||
StringList | ||
Temperature | K | introduced in 0.21 |
ThermalConductivity | W/m/K | introduced in 0.21 |
ThermalExpansionCoefficient | 1/K | introduced in 0.21 |
ThermalTransferCoefficient | W/m^2/K | introduced in 0.21 |
Time | s | introduced in 0.21 |
UltimateTensileStrength | Pa | introduced in 0.21 |
UUID | ||
VacuumPermittivity | s^4*A^2 / (m^3*kg) | |
Vector | ||
VectorDistance | ||
VectorList | ||
Velocity | m/s | introduced in 0.21 |
Volume | l or m^3 | |
VolumeFlowRate | l/s or m^3/s | introduced in 0.21 |
VolumetricThermalExpansionCoefficient | 1/K | introduced in 0.21 |
Work | J | introduced in 0.21 |
XLink | ||
XLinkList | ||
XLinkSub | ||
XLinkSubList | ||
YieldStrength | Pa | introduced in 0.21 |
YoungsModulus | Pa | introduced in 0.21 |
Internamente, el nombre de propiedad es prefijado con App::Property
:
App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...
Recuerde que estas son los tipos de propiedades. Un sólo objeto puede tener muchas propiedades del mismo tipo, pero con diferentes nombres.
Por ejempĺo:
obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")
Esto indica un objeto con tres propiedades de tipo "Float", denominadas "Length", "Width" y "Height", respectivamente.
Programación
Conosulte también: Cuestiones básicas de FreeCAD scripting
Un objeto creado por script es creado primero, y luego las propiedades son asignadas.
obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")
obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")
En general, las propiedades en Datos son asignadas al usar el método addProperty()
del objeto. Por otra parte, las propiedades en Vista normalmente son provistas automaticamente por el objeto padre del cual el objeto se deriva.
Por ejemplo:
- Derivar de
App::FeaturePython
provee solo 4 propiedades Vista: "Display Mode", "On Top When Selected", "Show In Tree", and "Visibility". - Derivar de
Part::Feature
provee 17 propiedades Vista: las cuatro anteriores, más "Angular Deflection", "Bounding Box", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", and "Transparency".
Sin embargo, las propiedades Vista también se pueden asignar utilizando el método addProperty()
del objeto proveedor de vista.
obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")
Código fuente
En el código fuente, las propiedades se encuentran en varios archivos src/App/Property*.
Se importan e inicializan en 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"
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub