Part Part2DObject: Difference between revisions

From FreeCAD Documentation
(New page to describe the base Part::Part2DObject, which can be used to derive many planar scripted objects.)
 
(Property_Attacher_type -> Property_Attacher_Type (capital T). For consistency.)
 
(82 intermediate revisions by 6 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{TOCright}}
<translate>
<translate>


== Introduction ==
== Introduction == <!--T:1-->


</translate>
A [[Part Part2DObject|Part Part2DObject]], or formally a {{incode|Part::Part2DObject}}, is a simple element with a topological {{incode|Shape}} associated that can be displayed in the [[3D view|3D view]].
[[File:Tree_Part2D.svg|32px]]
<translate>


<!--T:2-->
The {{incode|Part::Part2DObject}} is derived from [[Part Feature|{{incode|Part::Feature}}]], but it is specialized to be used for 2D geometry, given that its shape will lie of a plane. This plane can be changed by its {{PropertyData|Placement}}; moreover, it also allows attaching to a face in order to define the new position of this plane.
A [[Part_Part2DObject|Part Part2DObject]], or formally a {{incode|Part::Part2DObject}}, is a simple element with a [[Part_TopoShape|topological shape]] that can be displayed in the [[3D_view|3D view]].


<!--T:3-->
The {{incode|Part::Part2DObject}} is defined in the [[Part Workbench|Part Workbench]] but can be used as the base class for [[scripted objects|scripted objects]] in all [[Workbenches|workbenches]] that produce 2D geometrical shapes, for example, the [[Sketcher Workbench|Sketcher]], and the [[Draft Workbench|Draft Workbench]].
The {{incode|Part::Part2DObject}} is derived from the [[Part Feature|Part Feature]], but is specialized for 2D geometry, given that its shape will lie on a plane. This plane is defined by its {{PropertyData|Placement}} property (position, normal, and rotation). However, the plane can also be defined by supporting geometrical elements, such as the plane created by three arbitrary vertices, or a face of a solid body.


<!--T:24-->
Workbenches can add more properties to this basic element to produce an object with complex behavior.
[[File:FreeCAD_core_objects.svg|800px]]


<!--T:25-->
[[File:Tree_Part.svg|32px]]
{{Caption|Simplified diagram of the relationships between the core objects in FreeCAD}}


==Usage== <!--T:20-->
== Properties ==


<!--T:21-->
The [[Part Part2DObject|Part Part2DObject]] is an internal object, so it cannot be created from the graphical interface, only from the [[Python console|Python console]] as described in the [[#Scripting|Scripting]] section.

<!--T:4-->
The {{incode|Part::Part2DObject}} is defined in the [[Part_Workbench|Part Workbench]] but can be used as the base class for [[Scripted_objects|scripted objects]] in all [[Workbenches|workbenches]] that produce 2D geometrical shapes. For example, it is the base object for sketches ([[Sketcher_SketchObject|Sketcher SketchObject]]), and for most objects created with the [[Draft_Workbench|Draft Workbench]].

<!--T:5-->
Workbenches can add more properties to this basic element to produce an object with complex behavior.

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

<!--T:8-->
See [[Property|Property]] for all property types that scripted objects can have.
See [[Property|Property]] for all property types that scripted objects can have.


<!--T:22-->
In addition to the properties described in [[Part Feature|Part Feature]], the Part Part2DObject has the following properties in the [[property editor|property editor]].
The [[Part_Part2DObject|Part Part2DObject]] ({{incode|Part::Part2DObject}} class) is derived from the [[Part_Feature|Part Feature]] ({{incode|Part::Feature}} class) and inherits all its properties.


<!--T:9-->
=== Data ===
The Part Part2DObject 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]].


=== Data === <!--T:10-->
* {{PropertyData|Map Mode}}: "Deactivated" by default. This determines a plane to which the object can be attached. Clicking on the ellipsis (three dots), to the right of the entry field opens the [[Part Attachment|Part Attachment]] [[task panel|task panel]] that allows selecting the supporting plane by picking different elements in the [[3D view|3D view]]. The different modes are: Deactivated, Translate Origin, Object's XY, Object's XZ, Object's YZ, Plane face, Tangent to surface, Normal to edge, Frenet NB, Frenet TN, Frenet TB, Concentric, Revolution section, Plane by 3 points, Normal to 3 points, Folding, Inertia 2-3, Align O-N-X, Align O-N-Y, Align O-X-Y, Align O-X-N, Align O-Y-N, Align O-Y-X. See [[Part Attachment|Part Attachment]] for more information on all mapping modes.


<!--T:27-->
=== View ===
{{TitleProperty|Attachment}}


<!--T:11-->
* {{PropertyView|Grid Size}}: a float that determines the size of a grid in the [[3D view|3D view]].
* <div id="Property_Attacher_Type"></div>{{PropertyData|Attacher Type|String|Hidden}}: class name of the attach engine object driving the attachment. It defaults to {{incode|Attacher::AttachEnginePlane}}.
* {{PropertyView|Grid Snap}}: if {{TRUE}} the grid can be used to snap points.
* <div id="Property_Support"></div>{{PropertyData|Support|LinkSubList}}: it is the plane or face supporting the 2D geometry. It defaults to an empty list {{incode|[]}}.
* {{PropertyView|Grid Style}}: Dashed or Light; the style of the grid lines.
* <div id="Property_Map_Mode"></div>{{PropertyData|Map Mode|Enumeration}}: {{value|Deactivated}} by default. This property determines a plane which the object will use as reference for 2D geometry. Clicking on the ellipsis {{KEY|...}} (three dots), to the right of the entry field starts the [[Part_EditAttachment|Part EditAttachment]] command that allows selecting the supporting plane by picking different elements in the [[3D_view|3D view]]. The different modes are: {{value|Deactivated}}, {{value|Translate origin}}, {{value|Object's XY}}, {{value|Object's XZ}}, {{value|Object's YZ}}, {{value|Plane face}}, {{value|Tangent to surface}}, {{value|Normal to edge}}, {{value|Frenet NB}}, {{value|Frenet TN}}, {{value|Frenet TB}}, {{value|Concentric}}, {{value|Revolution section}}, {{value|Plane by 3 points}}, {{value|Normal to 3 points}}, {{value|Folding}}, {{value|Inertia 2-3}}, {{value|Align O-N-X}}, {{value|Align O-N-Y}}, {{value|Align O-X-Y}}, {{value|Align O-X-N}}, {{value|Align O-Y-N}}, {{value|Align O-Y-X}}.
* {{PropertyView|Show Grid}}: if {{TRUE}} a local grid to the object will be displayed in the [[3D view|3D view]].
* <div id="Property_Map_Reversed"></div>{{PropertyData|Map Reversed|Bool}}: it defaults to {{FALSE}}; if it is {{TRUE}} the Z direction will be reversed. For example, a [[sketch|sketch]] will be flipped upside down. Hidden if {{PropertyData|Map Mode}} is {{value|Deactivated}}.
* {{PropertyView|Tight Grid}}: if {{TRUE}} the local grid will be compact, otherwise it will extend itself more.
* <div id="Property_Map_Path"></div>{{PropertyData|Map Path Parameter|Float|Hidden}}: sets point of curve to map a [[sketch|sketch]] to. It goes from {{value|0}} to {{value|1}}, which corresponds to the {{value|start}} and {{value|end}}. It defaults to {{value|0}}.
* <div id="Property_Attachment_Offset"></div>{{PropertyData|Attachment Offset|Placement}}: the position of the object in the [[3D_view|3D view]], with respect to the attachment object's placement. The placement is defined by a {{incode|Base}} point (vector), and a {{incode|Rotation}} (axis and angle). See [[Placement|Placement]]. Hidden if {{PropertyData|Map Mode}} is {{value|Deactivated}}.

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

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

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

<!--T:17-->
A Part2DObject is created with the {{incode|addObject()}} method of the document.

</translate>
{{Code|code=
import FreeCAD as App

doc = App.newDocument()
obj = App.ActiveDocument.addObject("Part::Part2DObject", "Name")
obj.Label = "Custom label"
}}
<translate>

<!--T:33-->
For [[Python|Python]] subclassing you should create a {{incode|Part::Part2DObjectPython}} object.

</translate>
{{Code|code=
import FreeCAD as App

doc = App.newDocument()
obj = App.ActiveDocument.addObject("Part::Part2DObjectPython", "Name")
obj.Label = "Custom label"
}}
<translate>




{{Part Tools navi}}
{{Userdocnavi}}
</translate>
</translate>
{{Document_objects_navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 16:22, 3 July 2022

Introduction

A Part Part2DObject, or formally a Part::Part2DObject, is a simple element with a topological shape that can be displayed in the 3D view.

The Part::Part2DObject is derived from the Part Feature, but is specialized for 2D geometry, given that its shape will lie on a plane. This plane is defined by its DataPlacement property (position, normal, and rotation). However, the plane can also be defined by supporting geometrical elements, such as the plane created by three arbitrary vertices, or a face of a solid body.

Simplified diagram of the relationships between the core objects in FreeCAD

Usage

The Part Part2DObject is an internal object, so it cannot be created from the graphical interface, only from the Python console as described in the Scripting section.

The Part::Part2DObject is defined in the Part Workbench but can be used as the base class for scripted objects in all workbenches that produce 2D geometrical shapes. For example, it is the base object for sketches (Sketcher SketchObject), and for most objects created with the Draft Workbench.

Workbenches can add more properties to this basic element to produce an object with complex behavior.

Properties

See Property for all property types that scripted objects can have.

The Part Part2DObject (Part::Part2DObject class) is derived from the Part Feature (Part::Feature class) and inherits all its properties.

The Part Part2DObject 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

Attachment

  • Data (Hidden)Attacher Type (String): class name of the attach engine object driving the attachment. It defaults to Attacher::AttachEnginePlane.
  • DataSupport (LinkSubList): it is the plane or face supporting the 2D geometry. It defaults to an empty list [].
  • DataMap Mode (Enumeration): Deactivated by default. This property determines a plane which the object will use as reference for 2D geometry. Clicking on the ellipsis ... (three dots), to the right of the entry field starts the Part EditAttachment command that allows selecting the supporting plane by picking different elements in the 3D view. The different modes are: Deactivated, Translate origin, Object's XY, Object's XZ, Object's YZ, Plane face, Tangent to surface, Normal to edge, Frenet NB, Frenet TN, Frenet TB, Concentric, Revolution section, Plane by 3 points, Normal to 3 points, Folding, Inertia 2-3, Align O-N-X, Align O-N-Y, Align O-X-Y, Align O-X-N, Align O-Y-N, Align O-Y-X.
  • DataMap Reversed (Bool): it defaults to false; if it is true the Z direction will be reversed. For example, a sketch will be flipped upside down. Hidden if DataMap Mode is Deactivated.
  • Data (Hidden)Map Path Parameter (Float): sets point of curve to map a sketch to. It goes from 0 to 1, which corresponds to the start and end. It defaults to 0.
  • DataAttachment Offset (Placement): the position of the object in the 3D view, with respect to the attachment object's placement. The placement is defined by a Base point (vector), and a Rotation (axis and angle). See Placement. Hidden if DataMap Mode is Deactivated.

Scripting

See also: FreeCAD Scripting Basics and scripted objects.

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

A Part2DObject is created with the addObject() method of the document.

import FreeCAD as App

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

For Python subclassing you should create a Part::Part2DObjectPython object.

import FreeCAD as App

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