App DocumentObject

From FreeCAD Documentation
Revision as of 01:15, 16 December 2019 by Vocx (talk | contribs) (Remove old translation markers)

Introduction

An App DocumentObject object, or formally an App::DocumentObject, is the base class of all object classes handled in the document.

Simplified diagram of the relationships between the core objects in the program. The App::DocumentObject class is the base class of essentially all objects in the software.

How to use

The App DocumentObject is an internal class, so it cannot be created from the graphical interface. It is not meant to be used directly. It is sub-classed by other classes that are intended to handle other types of information. Therefore, almost everything in the software, every object that can be listed in the tree view, which can be saved and restored with the document, is a "DocumentObject".

One of the most important DocumentObjects is the Part Feature class, which is the parent object of most 2D and 3D geometrical objects that can be displayed in the 3D view.

Properties

These are the basic properties that essentially all objects have. The basic DocumentObject doesn't have a view provider, so these properties aren't displayed in the property editor, but can be accessed from the Python console.

  • DataExpressionEngine: a list of expressions that can be used.
  • DataLabel: the user editable name of this object.
  • DataLabel2: a longer, user editable description of this object.
  • DataVisibility: whether to display the object or not.

Scripting

See also: FreeCAD Scripting Basics, and scripted objects.

See Part Feature for the general information on adding objects to the program

A DocumentObject is created with the addObject() method of the document. However, in general, there is no need to create this object manually. It is usually better to create one of the sub-classes, for example, Part::Feature, Part::Part2DObject, or App::FeaturePython.

import FreeCAD as App

doc = App.newDocument()
obj = App.ActiveDocument.addObject("App::DocumentObject", "Name")
obj.Label = "Custom label"