Generally, the property editor is intended to deal with just one object at one time. The values shown in the property editor belong to the selected object of the active document. Despite this, some properties like colors, can be set for multiple selected objects. If there are no elements selected, the property editor will be empty.
Not all properties can be modified always; depending on the specific status of the property, some of them will be invisible (not listed), or be read-only (not editable).
Empty property editor, when no object is selected.
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 the document.
Some of the most commonly used property types are:
App::PropertyBool App::PropertyFloat App::PropertyAngle App::PropertyDistance App::PropertyInteger App::PropertyString App::PropertyMatrix App::PropertyVector App::PropertyPlacement
Different objects may have different types of properties. However, many objects have the same types because they are derived from the same internal class. For example, most objects that describe geometrical shapes (lines, circles, rectangles, solid bodies, imported parts, etc.), have the "Placement" property that defines their position in the 3D view.
View and Data properties
There are two classes of feature properties accessible through tabs in the property editor:
- View properties, related to the "visual" appearance of the object. The View properties are tied to the ViewProvider (
ViewObjectattribute) of the object, and are only accessible when the graphical user interface (GUI) is loaded. They are not accessible when using FreeCAD in console mode, or as a headless library.
- Data properties, related to the "physical" parameters of the object. The Data properties define the essential characteristics of the object; they exist at all times, even when FreeCAD is used in console mode, or as a library. This means that if you load a document in console mode, you can edit the radius of a circle or the length of a line, even if you cannot see the result on the screen.
For this reason, Data properties are considered to be more "real", as they truly define the geometry of a shape. On the other hand, View properties are less important because they only affect the superficial appearance of the geometry. For example, a circle of 10 mm radius is different from a circle of 5 mm radius; the color of the circle (view property) doesn't affect its shape, but the radius does (data property). In many instances in this documentation, the word "property" is understood to refer to a "Data property" and not to a "View property".
The most basic scripted object won't show any Data property in the property editor, except for its
Label attribute. The
Label is a user editable string that identifies the object in the tree view. On the other hand, the
Name attribute of an object is assigned at the moment of its creation and cannot be changed; this attribute is read-only, and is not displayed in the property editor either.
A basic parametric object is created as follow
obj = App.ActiveDocument.addObject("App::FeaturePython", "App__FeaturePython") obj.Label = "Plain_object" print(obj.Name) print(obj.Label)
View and Data tabs of the property editor, for a basic "App::FeaturePython" scripted object.
For 2D geometry, most objects are derived from
Part::Part2DObject (itself derived from
Part::Feature) which is the base of Sketches, and most Draft elements. See Part Part2DObject for the most basic properties that these objects have.
Actions in the property view were implemented in 0.19.
Right clicking in an empty space of the view, or with a property selected, shows only one command:
- Show all: if active, in addition to the standard properties that appear already, it shows all the hidden Data and View properties in their respective tabs.
- Data: "Proxy", "Label2", "Expression Engine", and "Visibility".
- View: "Proxy".
When the Show all option is active, and one property is selected, more actions are available with a second right click:
- Show all: deactivates the Show all command, hiding the additional Data and View properties.
- Add Property: adds a dynamic property to the object; this works with both C++ defined objects, and Python scripted objects.
- Expression: brings up the formula editor, which allows using expressions in the property value.
- Hidden: if active, sets the property as hidden, meaning that it will only be displayed if Show all is active.
- Output: if active, sets the property as output.
- NoRecompute: if active, sets the property as not recomputed when the document is recomputed; this is useful when a property should be kept unaffected by other updates.
- ReadOnly: if active, sets the property to be read-only; it won't be editable any more until this switch is turned off.
- Transient: if active, sets the property as transient.
- Touched: if active, it becomes touched, and ready for recompute.
- EvalOnRestore: if active, it is evaluated when the document is restored.
Example of the properties of a PartDesign object
- VIEWBounding Box: Indicates if a box showing the overall extent of the object is to be displayed. Value False, or True (Default, False).
- VIEWControl Point: Indicates if the feature control points are to be displayed. Value False, or True (Default, False).
- VIEWDeviation: Sets the accuracy of the polygonal representation of the model in the 3d view (tessellation). Lower values = better quality. The value is in percent of object's size (deviation in mm = (w+h+d)/3*valueInPercent/100, where w,h,d are the bounding box dimensions).
- VIEWDisplay Mode: Display mode of the feature, Flat lines, Shaded, Wireframe, Points . (Default, Flat lines).
- VIEWLighting: Lighting One side, Two side . (Default, Two side).
- VIEWLine Color: Gives the color of the line (edges) (Default, 25, 25, 25).
- VIEWLine Width: Gives the thickness of the line (edges) (Default, 2).
- VIEWPoint Color: Gives the color of the points (ends of the feature) (Default, 25, 25, 25).
- VIEWPoint Size: Gives the size of the points (Default, 2).
- VIEWSelectable: Allows selection of the feature. Value False, ou True (Default, True).
- VIEWShape Color: Give the color shape (default, 204, 204, 204).
- VIEWTransparency: Sets the degree of transparency in the feature of 0 to 100 (Default, 0).
- VIEWVisibility: Determines the visibility of the feature (like the bar ). Value False, or True (Default, True).
Summary of the data below.
Every feature has a placement that can be controlled through the Data Properties table. It controls the placement of the part with respect to the coordinate system. NOTE: The placement properties do not affect the physical dimensions of the feature, but merely its position in space!
If you select the title Placement , a button with appears to the right. Clicking this button , opens the Tasks_Placement options window.
Specifies the angle to be used with the axis property (below). An angle is set here, and the axis that the angle acts upon is set with the axis property. The feature is rotated by the specified angle, about the specified axis. A usage example might be if you created a revolution feature as required, but then needed to rotate the whole feature by some amount, in order to allow it to line-up with another pre-existing feature.
This property specifies the axis/axes about which the feature is to be rotated. The exact value of rotation comes from the angle property (above). This property takes three arguments, which are passed as numbers in the x, y, and z boxes in the tool. Setting a value for more than one of the axes will cause the part to be rotated in each axis, by the angle value multiplied by the value for the axis. For example, with an angle of 15° set, specifying a value of 1.0 for x, and 2.0 for y will cause the finished part to be rotated 15° in the x-axis AND 30° in the y-axis.
This property specifies the base point to which all dimensions refer. This takes three arguments, which are passed as numbers to the x, y, and z boxes in the tool. Setting a value for more than one of the boxes will cause the part to be translated by the number of units along the corresponding axis.
The Label is the name given to the object (feature), this name can be changed as desired.
See also: FreeCAD Scripting Basics.
Most properties that are visible in the property editor can be accessed from the Python console. These properties are just attributes of the class that defines the selected object. For example, if the property editor shows the DATAGroup property, this means that the object has the
These attributes (properties) are added with the
addProperty method of the base object. At least it is necessary to specify the type of property, and its name.
obj.addProperty("App::PropertyFloat", "Custom") print(obj.Custom)
Properties follow the
PascalCase convention, meaning that each word starts with a capital letter, and there are no underscores. When the property editor displays such names, it leaves a space between each capital letter, making it easier to read.
obj.addProperty("App::PropertyDistance", "CustomCamelProperty") obj.CustomCamelProperty = 1000 print(obj.CustomCamelProperty)
Property editor showing the Data properties of a PartDesign Body, with two additional properties, "Custom" and "Custom Camel Property".
In similar way the View properties are added, not to the base object, but to its
ViewObject. Then, it follows that properties like VIEWAngular Deflection, VIEWBounding Box, VIEWDisplay Mode, VIEWDisplay Mode Body, VIEWLine Color, and others, can be examined and changed from the Python console.
print(obj.ViewObject.AngularDeflection) print(obj.ViewObject.BoundingBox) print(obj.ViewObject.DisplayMode) print(obj.ViewObject.DisplayModeBody) print(obj.ViewObject.LineColor)