Std Group: Difference between revisions

From FreeCAD Documentation
m (moved templates out of translation tags)
No edit summary
 
(25 intermediate revisions by 4 users not shown)
Line 3: Line 3:
<!--T:19-->
<!--T:19-->
{{Docnav
{{Docnav
|[[Std Part|Part]]
|[[Std_Part|Part]]
|[[Std_LinkMake|LinkMake]]
|[[PartDesign Body|Create body]]
|[[Std_Base|Std Base]]
|[[PartDesign_Workbench|PartDesign]]
|IconL=Std_Part.png
|IconL=Std_Part.svg
|IconR=Std_LinkMake.svg
|IconC=Workbench_PartDesign.svg
|IconC=Freecad.svg
|IconR=PartDesign Body.png
}}
}}


Line 24: Line 24:


<!--T:3-->
<!--T:3-->
[[Std_Group|Std Group]] (internally called [[App_DocumentObjectGroup|App DocumentObjectGroup]]) is a general purpose container that allows you to group different types of objects in the [[tree_view|tree view]], regardless of their data type. It is used as a simple folder to categorize and organize the objects in your model, in order to keep a logical structure. Std Groups may be nested inside other Std Groups.
[[Std_Group|Std Group]] (internally called [[App_DocumentObjectGroup|App DocumentObjectGroup]]) is a general purpose container that allows you to group different types of objects in the [[Tree_view|Tree view]], regardless of their data type. It is used as a simple folder to categorize and organize the objects in your model, in order to keep a logical structure. Std Groups may be nested inside other Std Groups.


<!--T:27-->
<!--T:27-->
Line 41: Line 41:


<!--T:5-->
<!--T:5-->
# Do one of the following:
# Click on the name of the document in the [[tree_view|tree view]], open the context menu (right click), and choose {{Button|Create group}}.
#* Right-click the name of the document in the [[Tree_view|Tree view]] and in the context menu choose {{MenuCommand|Create group...}}.
# Alternatively, press the {{Button|[[Image:Std_Group.svg|16px]] [[Std_Group|Group]]}} button in the structure toolbar. An empty Group is created.
#* Press the {{Button|[[Image:Std_Group.svg|16px]] [[Std_Group|Create group]]}} button.
# To add objects to a Group, select them in [[tree_view|tree view]], and then drag and drop them over the Group.
# An empty Group is created.
# To remove objects from a Group, drag them out of the Group, and onto the document label at the top of the [[tree_view|tree view]].
# To add objects to the Group, select them in [[Tree_view|Tree view]], and drag and drop them onto the Group.

# To remove objects from the Group, drag them out of the Group, and onto the document label at the top of the [[Tree_view|Tree view]].
=== Notes === <!--T:30-->
# Objects can also be added and removed by editing the {{PropertyData|Group}} property of the Group.

<!--T:31-->
* The Group object does not affect the positions in the [[3D_view|3D view]] of the elements that it contains; it is essentially just a folder that is used to keep the [[tree_view|tree view]] organized.
* The Group can also be created from the [[Python console|Python console]], and sub-classed to create special "groups", as indicated in the [[Std_Group#Scripting|Scripting]] section.


==Properties== <!--T:10-->
==Properties== <!--T:10-->


<!--T:32-->
<!--T:32-->
A [[Std_Group|Std Group]] is internally called [[App_DocumentObjectGroup|App DocumentObjectGroup]] ({{incode|App::DocumentObjectGroup}} class), and is derived from the basic [[App_DocumentObject|App DocumentObject]] ({{incode|App::DocumentObject}} class), therefore it shares all the latter's properties.
The [[Std_Group|Std Group]], internally called [[App_DocumentObjectGroup|App DocumentObjectGroup]] ({{incode|App::DocumentObjectGroup}} class), is derived from the basic [[App_DocumentObject|App DocumentObject]] ({{incode|App::DocumentObject}} class) and inherits all its properties.


<!--T:33-->
<!--T:33-->
In addition to the properties described in [[App_FeaturePython|App FeaturePython]], which is the most basic instance of an [[App_DocumentObject|App DocumentObject]], the App DocumentObjectGroup has the {{PropertyData|Group}} property.
The Std Group has the same properties as the [[App_FeaturePython#Properties|App FeaturePython]], which is the most basic instance of an [[App_DocumentObject|App DocumentObject]]. It also has the following additional properties in the [[Property_editor|property editor]]. Hidden properties can be shown by using the {{MenuCommand|Show all}} command in the context menu of the [[Property_editor|property editor]].

<!--T:34-->
These are the properties available in the [[property editor|property editor]]. Hidden properties can be shown by using the {{MenuCommand|Show all}} command in the context menu of the [[property editor|property editor]].


=== Data === <!--T:35-->
=== Data === <!--T:35-->
Line 69: Line 63:


<!--T:11-->
<!--T:11-->
* {{PropertyData|Label|String}}: the user editable name of this object, it is an arbitrary UTF8 string.
* {{PropertyData|Group|LinkList}}: a list of referenced objects. By default, it is empty {{value|[]}}.
* {{PropertyData|Group|LinkList}}: a list of referenced objects. By default, it is empty {{value|[]}}.
* {{PropertyData|_ Group Touched|Bool|Hidden}}: whether the group is touched or not.

==== Hidden properties Data ==== <!--T:37-->

<!--T:38-->
* {{PropertyData|Proxy|PythonObject}}: a custom class associated with this object. This only exists for the [[Python|Python]] version. See [[Std_Group#Scripting|Scripting]].

=== View === <!--T:39-->

<!--T:40-->
{{TitleProperty|Base}}

<!--T:41-->
See [[App_FeaturePython|App FeaturePython]] for the basic view properties.

==== Hidden properties View ==== <!--T:42-->

<!--T:43-->
* {{PropertyView|Proxy|PythonObject}}: a custom view provider class associated with this object. This only exists for the [[Python|Python]] version. See [[Std_Group#Scripting|Scripting]].

== Inheritance == <!--T:23-->

<!--T:24-->
A [[Std Group|Std Group]] is formally an instance of the class {{incode|App::DocumentObjectGroup}}, whose parent is the basic [[App_DocumentObject|App DocumentObject]] ({{incode|App::DocumentObject}} class), and is augmented with a Group extension.

<!--T:25-->
[[File:FreeCAD_core_objects.svg|800px]]

<!--T:26-->
{{Caption|Simplified diagram of the relationships between the core objects in the program. The {{incode|App::DocumentObjectGroup}} class is a simple container which uses the Group extension to be able to hold any type of object.}}


==Scripting== <!--T:12-->
==Scripting== <!--T:12-->


<!--T:13-->
<!--T:13-->
{{Emphasis|See also:}} [[FreeCAD Scripting Basics|FreeCAD Scripting Basics]], and [[scripted objects|scripted objects]].
{{Emphasis|See also:}} [[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]] and [[Scripted_objects|scripted objects]].


<!--T:44-->
<!--T:44-->
See [[Part_Feature|Part Feature]] for the general information on adding objects to the document.
See [[Part_Feature|Part Feature]] for the general information on adding objects to the document.


<!--T:45-->
<!--T:45-->
A Std Group ([[App_DocumentObjectGroup|App DocumentObjectGroup]]) is created with the {{incode|addObject()}} method of the document. Once a Group exists, other objects can be added to it with the {{incode|addObject()}} or {{incode|addObjects()}} methods of this Group.
A Std Group ([[App_DocumentObjectGroup|App DocumentObjectGroup]]) is created with the {{incode|addObject()}} method of the document. Once a Group exists, other objects can be added to it with the {{incode|addObject()}} or {{incode|addObjects()}} methods.

</translate>
</translate>
{{Code|code=
{{Code|code=
Line 116: Line 82:


doc = App.newDocument()
doc = App.newDocument()
obj = App.ActiveDocument.addObject("App::DocumentObjectGroup", "Group")
group = App.ActiveDocument.addObject("App::DocumentObjectGroup", "Group")


bod1 = App.ActiveDocument.addObject("PartDesign::Body", "Body")
obj1 = App.ActiveDocument.addObject("PartDesign::Body", "Body")
bod2 = App.ActiveDocument.addObject("Part::Box", "Box")
obj2 = App.ActiveDocument.addObject("Part::Box", "Box")


obj.addObjects([bod1, bod2])
group.addObjects([obj1, obj2])
App.ActiveDocument.recompute()
App.ActiveDocument.recompute()
}}
}}
Line 130: Line 96:


<!--T:47-->
<!--T:47-->
Therefore, for [[Python|Python]] subclassing, you should create the {{incode|App::DocumentObjectGroupPython}} object.
For [[Python|Python]] subclassing you should create a {{incode|App::DocumentObjectGroupPython}} object.


</translate>
</translate>
Line 151: Line 117:
* [[Document_structure|Document structure]]
* [[Document_structure|Document structure]]
* [http://www.freecadweb.org/wiki/index.php?title=Arch_tutorial#Organizing_your_model Organizing your model]
* [http://www.freecadweb.org/wiki/index.php?title=Arch_tutorial#Organizing_your_model Organizing your model]

* [[Ways_To_Organize_Objects|Organize objects in the document]]


<!--T:20-->
<!--T:20-->
{{Docnav
{{Docnav
|[[Std Part|Part]]
|[[Std_Part|Part]]
|[[Std_LinkMake|LinkMake]]
|[[PartDesign Body|Create body]]
|[[Std_Base|Std Base]]
|[[PartDesign_Workbench|PartDesign]]
|IconL=Std_Part.png
|IconL=Std_Part.svg
|IconR=Std_LinkMake.svg
|IconC=Workbench_PartDesign.svg
|IconC=Freecad.svg
|IconR=PartDesign Body.png
}}
}}



</translate>
</translate>
{{Std_Base_navi{{#translation:}}}}

{{Std Base navi{{#translation:}}}}

{{Userdocnavi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 08:06, 22 February 2022

Std Group

Menu location
Tree view → Right click on the document name → Create group
Workbenches
All
Default shortcut
None
Introduced in version
-
See also
Std Part, Draft SelectGroup, Draft AddToGroup

Description

Std Group (internally called App DocumentObjectGroup) is a general purpose container that allows you to group different types of objects in the Tree view, regardless of their data type. It is used as a simple folder to categorize and organize the objects in your model, in order to keep a logical structure. Std Groups may be nested inside other Std Groups.

The Std Group tool is not defined by a particular workbench, but by the base system, thus it is found in the structure toolbar that is available in all workbenches.

To group 3D objects as a single unit, with the intention of creating assemblies, use Std Part instead.

Various elements inside Std Groups in the tree view.

Usage

  1. Do one of the following:
    • Right-click the name of the document in the Tree view and in the context menu choose Create group....
    • Press the Create group button.
  2. An empty Group is created.
  3. To add objects to the Group, select them in Tree view, and drag and drop them onto the Group.
  4. To remove objects from the Group, drag them out of the Group, and onto the document label at the top of the Tree view.
  5. Objects can also be added and removed by editing the DataGroup property of the Group.

Properties

The Std Group, internally called App DocumentObjectGroup (App::DocumentObjectGroup class), is derived from the basic App DocumentObject (App::DocumentObject class) and inherits all its properties.

The Std Group has the same properties as the App FeaturePython, which is the most basic instance of an App DocumentObject. It also has the following additional properties in the property editor. Hidden properties can be shown by using the Show all command in the context menu of the property editor.

Data

Base

  • DataGroup (LinkList): a list of referenced objects. By default, it is empty [].
  • Data (Hidden)_ Group Touched (Bool): whether the group is touched or not.

Scripting

See also: FreeCAD Scripting Basics and scripted objects.

See Part Feature for the general information on adding objects to the document.

A Std Group (App DocumentObjectGroup) is created with the addObject() method of the document. Once a Group exists, other objects can be added to it with the addObject() or addObjects() methods.

import FreeCAD as App

doc = App.newDocument()
group = App.ActiveDocument.addObject("App::DocumentObjectGroup", "Group")

obj1 = App.ActiveDocument.addObject("PartDesign::Body", "Body")
obj2 = App.ActiveDocument.addObject("Part::Box", "Box")

group.addObjects([obj1, obj2])
App.ActiveDocument.recompute()

This basic App::DocumentObjectGroup doesn't have a Proxy object so it can't be fully used for sub-classing.

For Python subclassing you should create a App::DocumentObjectGroupPython object.

import FreeCAD as App

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

For example, a FEM Analysis is an App::DocumentObjectGroupPython object with a custom icon and additional properties.

Links