Property/bg

Въведение

Свойство е някакво количество от информация като число или текстов низ, което е прикрепено към документ на FreeCAD или обект в документ. Публичните свойства могат да бъдат разглеждани и променяни в Преглед на свойствата.

Свойствата играят много важна роля във FreeCAD. Тъй като обектите във FreeCAD са "параметрични", това означава, че поведението им се определя от техните свойства и как тези свойства се използват като вход за техните методи на класа. Вижте също FeaturePython Custom Properties и PropertyLink: InList and OutList

Всички типове свойства

Персонализираните скриптови обекти (scripted objects) могат да използват всеки от типовете свойства, определени в базовата система:

Име Единица (ако ива) Забележка
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 or V*s
MagneticFluxDensity T
Magnetization A/m
Map
Mass kg
Material
MaterialList
Matrix
PartShape a Part property, is accessed as
Part::PropertyPartShape
Path
Percent
PersistentObject
Placement
PlacementLink
PlacementList
Position
Power W
Precision
Pressure Pa
PythonObject
Quantity
QuantityConstraint
Rotation
ShearModulus Pa
SpecificEnergy m^2/s^2 or 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 or m^3
VolumeFlowRate l/s or m^3/s
VolumetricThermalExpansionCoefficient 1/K
Work J
XLink
XLinkList
XLinkSub
XLinkSubList
YieldStrength Pa
YoungsModulus Pa


Internally, the property name is prefixed with App::Property:

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

Remember that these are property types. A single object may have many properties of the same type, but with different names.

For example:

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

This indicates an object with three properties of type "Float", named "Length", "Width", and "Height", respectively.

Scripting

A scripted object is created first, and then properties are assigned.

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

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

In general, Data properties are assigned by using the object's addProperty() method. On the other hand, View properties are normally provided automatically by the parent object from which the scripted object is derived.

For example:

  • Deriving from App::FeaturePython provides only 4 View properties: "Display Mode", "On Top When Selected", "Show In Tree", and "Visibility".
  • Deriving from Part::Feature provides 17 View properties: the previous four, plus "Angular Deflection", "Bounding Box", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", and "Transparency".

Nevertheless, View properties can also be assigned using the view provider object's addProperty() method.

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

Source code

In the source code, properties are located in various src/App/Property* files.

They are imported and initialized 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"