Property

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

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 as
Part::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"