Difference between revisions of "Property"

From FreeCAD Documentation
Jump to: navigation, search
(Examples of how the properties look in scripted objects.)
(SuperVisibility)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<languages/>
 
<languages/>
 
<translate>
 
<translate>
 +
 +
== Introduction == <!--T:8-->
 +
 
<!--T:1-->
 
<!--T:1-->
A [[Property|property]] is a piece of information like a number or a text string that is attached to a FreeCAD document or an object in a document. Properties can be viewed and modified with the [[Property editor|Property editor]].
+
A [[Property|property]] is a piece of information like a number or a text string that is attached to a FreeCAD document or an object in a document. Public properties can be viewed and modified in the [[Property editor|Property editor]].
  
 
<!--T:4-->
 
<!--T:4-->
Properties play a very important part in FreeCAD. As objects in FreeCAD are said to be "parametric", this means that their behavior is defined by their properties, and how those properties are modified class methods.
+
Properties play a very important role in FreeCAD. As objects in FreeCAD are "parametric", this means that their behavior is defined by their properties, and how these properties are used as input for their class methods.
 +
 
 +
== All property types == <!--T:9-->
  
 
<!--T:5-->
 
<!--T:5-->
Line 11: Line 16:
 
</translate>
 
</translate>
 
{{Code|code=
 
{{Code|code=
Boolean
+
Bool
 
Float
 
Float
 
FloatList
 
FloatList
Line 17: Line 22:
 
Angle
 
Angle
 
Distance
 
Distance
 +
ExpressionEngine
 
Integer
 
Integer
 
IntegerConstraint
 
IntegerConstraint
Line 24: Line 30:
 
String
 
String
 
StringList
 
StringList
 +
Length
 
Link
 
Link
 
LinkList
 
LinkList
 +
LinkSubList
 
Matrix
 
Matrix
 
Vector
 
Vector
 
VectorList
 
VectorList
 +
VectorDistance
 
Placement
 
Placement
 
PlacementLink
 
PlacementLink
 +
PythonObject
 
Color
 
Color
 
ColorList
 
ColorList
Line 43: Line 53:
 
<translate>
 
<translate>
  
 +
<!--T:10-->
 
Internally, the property name is prefixed with {{incode|App::Property}}:
 
Internally, the property name is prefixed with {{incode|App::Property}}:
 
</translate>
 
</translate>
 
{{Code|code=
 
{{Code|code=
App::PropertyBoolean
+
App::PropertyBool
 
App::PropertyFloat
 
App::PropertyFloat
 
App::PropertyFloatList
 
App::PropertyFloatList
Line 53: Line 64:
 
<translate>
 
<translate>
  
In code
+
<!--T:11-->
 +
Remember that these are property {{Emphasis|types}}. A single object may have many properties of the same type, but with different names.
 +
 
 +
<!--T:12-->
 +
For example:
 +
 
 +
</translate>
 +
{{Code|code=
 +
obj.addProperty("App::PropertyFloat", "Length")
 +
obj.addProperty("App::PropertyFloat", "Width")
 +
obj.addProperty("App::PropertyFloat", "Height")
 +
}}
 +
<translate>
 +
 
 +
<!--T:13-->
 +
This indicates an object with three properties of type "Float", named "Length", "Width", and "Height", respectively.
 +
 
 +
== Scripting == <!--T:14-->
 +
 
 +
<!--T:15-->
 +
{{Emphasis|See also:}} [[FreeCAD Scripting Basics|FreeCAD scripting basics]]
 +
 
 +
<!--T:16-->
 +
A [[scripted objects|scripted object]] is created first, and then properties are assigned.
 
</translate>
 
</translate>
 
{{Code|code=
 
{{Code|code=
Line 63: Line 97:
 
<translate>
 
<translate>
  
 +
<!--T:17-->
 +
In general, {{Emphasis|Data}} properties are assigned by using the object's {{incode|addProperty()}} method. On the other hand, {{Emphasis|View}} properties are normally provided automatically by the parent object from which the scripted object is derived.
 +
 +
<!--T:18-->
 +
For example:
 +
* Deriving from {{incode|App::FeaturePython}} provides only 4 {{Emphasis|View}} properties: "Display Mode", "On Top When Selected", "Show In Tree", and "Visibility".
 +
* Deriving from {{incode|Part::Feature}} provides 17 {{Emphasis|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".
 +
 +
<!--T:19-->
 +
Nevertheless, {{Emphasis|View}} properties can also be assigned using the view provider object's {{incode|addProperty()}} method.
 +
</translate>
 +
{{Code|code=
 +
obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")
 +
}}
 +
<translate>
 
<!--T:2-->
 
<!--T:2-->
 
{{docnav|Interface Customization|Workbenches}}
 
{{docnav|Interface Customization|Workbenches}}

Latest revision as of 23:00, 11 December 2019

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎polski • ‎português • ‎română • ‎русский • ‎svenska • ‎Türkçe • ‎中文 • ‎中文(中国大陆)‎

Introduction

A property is a piece of information like a number or a text string that is attached to a FreeCAD 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 FreeCAD. As objects in FreeCAD are "parametric", this means that their behavior is defined by their properties, and how these properties are used as input for their class methods.

All property types

Custom scripted objects can use any of the property types defined in the base system:

Bool
Float
FloatList
FloatConstraint
Angle
Distance
ExpressionEngine
Integer
IntegerConstraint
Percent
Enumeration
IntegerList
String
StringList
Length
Link
LinkList
LinkSubList
Matrix
Vector
VectorList
VectorDistance
Placement
PlacementLink
PythonObject
Color
ColorList
Material
Path
File
FileIncluded
PartShape
FilletContour
Circle

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: FreeCAD scripting basics

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")