Property: Difference between revisions
(Created page with "== Introduction == A property is a piece of information like a number or a text string that is attached to a LabRPS document or an object in a document. Public properties can be viewed and modified in the Property editor. Properties play a very important role in LabRPS. As objects in LabRPS are "parametric", this means that their behavior is defined by their properties, and how these properties are used as input for their class methods...") |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 28: | Line 28: | ||
|- | |- | ||
| ColorList || | | ColorList || | ||
|- | |- | ||
| Density || style="text-align:center;" | kg/m^3 | | Density || style="text-align:center;" | kg/m^3 | ||
|- | |- | ||
|- | |- | ||
| Distance || style="text-align:center;" | m | | Distance || style="text-align:center;" | m | ||
|- | |- | ||
| Enumeration || | | Enumeration || | ||
Line 76: | Line 53: | ||
|- | |- | ||
| Frequency || style="text-align:center;" | Hz | | Frequency || style="text-align:center;" | Hz | ||
|- | |- | ||
| Integer || | | Integer || | ||
Line 86: | Line 61: | ||
|- | |- | ||
| IntegerSet || | | IntegerSet || | ||
|- | |- | ||
| Length || style="text-align:center;" | m | | Length || style="text-align:center;" | m | ||
Line 128: | Line 95: | ||
|- | |- | ||
| LinkSubListHidden || | | LinkSubListHidden || | ||
|- | |- | ||
| Map || | | Map || | ||
|- | |- | ||
| Material || | | Material || | ||
Line 164: | Line 119: | ||
|- | |- | ||
| Position || | | Position || | ||
|- | |- | ||
| Precision || | | Precision || | ||
Line 178: | Line 131: | ||
|- | |- | ||
| Rotation || | | Rotation || | ||
|- | |- | ||
| Speed || style="text-align:center;" | m/s | | Speed || style="text-align:center;" | m/s | ||
|- | |- | ||
| Stiffness || style="text-align:center;" | m/s^2 | | Stiffness || style="text-align:center;" | m/s^2 | ||
|- | |- | ||
| String || | | String || | ||
|- | |- | ||
| StringList || | | StringList || | ||
|- | |- | ||
| UUID || | | UUID || | ||
Line 216: | Line 149: | ||
|- | |- | ||
| VectorList || | | VectorList || | ||
|- | |- | ||
| Volume || style="text-align:center;" | l or m^3 | | Volume || style="text-align:center;" | l or m^3 | ||
|- | |- | ||
| XLink || | | XLink || | ||
Line 233: | Line 158: | ||
| XLinkSub || | | XLinkSub || | ||
|- | |- | ||
| XLinkSubList | | XLinkSubList | ||
|} | |} | ||
Line 266: | Line 187: | ||
A [[Scripted_objects|scripted object]] is created first, and then properties are assigned. | A [[Scripted_objects|scripted object]] is created first, and then properties are assigned. | ||
{{Code|code= | {{Code|code= | ||
obj = App.ActiveDocument.addObject(" | obj = App.ActiveDocument.addObject("WindLab::WindLabSimulation", "MyKaimalAlongWindSpectrum") | ||
obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", " | obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Mean speed value") | ||
obj.addProperty("App::PropertyBool", " | obj.addProperty("App::PropertyBool", "Stationary", "Parameter", "Set stationarity") | ||
}} | }} | ||
Line 288: | Line 209: | ||
In the source code, properties are located in various {{FileName|src/App/Property*}} files. | In the source code, properties are located in various {{FileName|src/App/Property*}} files. | ||
They are imported and initialized in {{incode|[https://github. | They are imported and initialized in {{incode|[https://github.dev/LabRPS/LabRPS/blob/master/src/App/Application.cpp src/App/Application.cpp]}}. | ||
{{Code|lang=cpp|code= | {{Code|lang=cpp|code= |
Latest revision as of 10:48, 21 June 2024
Introduction
A property is a piece of information like a number or a text string that is attached to a LabRPS document or an object in a document. Public properties can be viewed and modified in the Property editor.
Properties play a very important role in LabRPS. As objects in LabRPS are "parametric", this means that their behavior is defined by their properties, and how these properties are used as input for their class methods. See also FeaturePython Custom Properties and PropertyLink: InList and OutList
All property types
Custom scripted objects can use any of the property types defined in the base system:
Name | Unit (if any) | Remark |
---|---|---|
Acceleration | m/s^2 | |
AmountOfSubstance | mol | |
Angle | ° | |
Area | m^2 | |
Bool | ||
BoolList | ||
Color | ||
ColorList | ||
Density | kg/m^3 | |
Distance | m | |
Enumeration | ||
ExpressionEngine | ||
File | ||
FileIncluded | ||
Float | ||
FloatConstraint | ||
FloatList | ||
Font | ||
Force | N | |
Frequency | Hz | |
Integer | ||
IntegerConstraint | ||
IntegerList | ||
IntegerSet | ||
Length | m | |
Link | ||
LinkChild | ||
LinkGlobal | ||
LinkHidden | ||
LinkList | ||
LinkListChild | ||
LinkListGlobal | ||
LinkListHidden | ||
LinkSub | ||
LinkSubChild | ||
LinkSubGlobal | ||
LinkSubHidden | ||
LinkSubList | ||
LinkSubListChild | ||
LinkSubListGlobal | ||
LinkSubListHidden | ||
Map | ||
Material | ||
MaterialList | ||
Matrix | ||
PartShape | a Part property, is accessed asPart::PropertyPartShape
| |
Path | ||
Percent | ||
PersistentObject | ||
Placement | ||
PlacementLink | ||
PlacementList | ||
Position | ||
Precision | ||
Pressure | Pa | |
PythonObject | ||
Quantity | ||
QuantityConstraint | ||
Rotation | ||
Speed | m/s | |
Stiffness | m/s^2 | |
String | ||
StringList | ||
UUID | ||
VacuumPermittivity | s^4*A^2 / (m^3*kg) | |
Vector | ||
VectorDistance | ||
VectorList | ||
Volume | l or m^3 | |
XLink | ||
XLinkList | ||
XLinkSub | ||
XLinkSubList |
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
See also: LabRPS scripting basics
A scripted object is created first, and then properties are assigned.
obj = App.ActiveDocument.addObject("WindLab::WindLabSimulation", "MyKaimalAlongWindSpectrum") obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Mean speed value") obj.addProperty("App::PropertyBool", "Stationary", "Parameter", "Set stationarity")
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"
- LabRPS scripting: Python, Introduction to Python, Python scripting tutorial, LabRPS Scripting Basics
- Modules: Units, Quantity
- Workbenches: Gui Commands, Commands
- Parametric objects: Scripted objects, Viewproviders
- Graphical interface: Interface creation, Interface creation completely in Python, PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Other: Expressions
- Hubs: User hub, Power users hub, Developer hub