|Annotation → Label|
|Introduced in version|
|Draft Text, Draft ShapeString|
If an object or a sub-element (face, edge or vertex) is selected when starting the command, the text can be made to display one or two attributes of the selected element, including position, length, area, volume and material. The text will then be linked to the attributes and will update if their values change.
To insert a text element without an arrow use the Draft Text command instead.
Various labels with different orientations, arrows and information
- Optionally select an object or a sub-element (vertex, edge or face) that you want to display attributes of.
- There are several ways to invoke the command:
- The Label task panel opens. See Options for more information.
- If you have selected an element: select an option from the Label type dropdown list. Additional label types can be set by changing the DataLabel Type later. See Label types below.
- Pick the first point in the 3D view, or type coordinates and press the button. This point indicates the target (arrow head). This can be anywhere, it does not have to be on an element.
- Pick the second point in the 3D view, or type coordinates and press the button. This point indicates the start of the horizontal or vertical segment of the leader.
- Pick the third point in the 3D view, or type coordinates and press the button. This point indicates the base point of the text.
The single character keyboard shortcuts available in the task panel can be changed. See Draft Preferences. The shortcuts mentioned here are the default shortcuts.
- To manually enter coordinates enter the X, Y and Z component, and press 3D view before entering coordinates. after each. Or you can press the button when you have the desired values. It is advisable to move the pointer out of the
- Press or click the Relative checkbox to toggle relative mode. If relative mode is on, coordinates are relative to the last point, if available, else they are relative to the coordinate system origin.
- Press working plane coordinate system. introduced in version 0.20 or click the Global checkbox to toggle global mode. If global mode is on, coordinates are relative to the global coordinate system, else they are relative to the
- Press Draft snapping on or off. to switch
- Press or the button to abort the command.
- The direction of the second segment of the leader determines the alignment of the text. If the segment is horizontal and pointing to the right the text is aligned to the left and vice versa. If the second segment goes vertically up, the text is aligned to the left. If it goes vertically down, the text is aligned to the right.
See also: Property editor.
A Draft Label object is derived from an App FeaturePython object and inherits all its properties. The following properties are additional unless otherwise stated:
- DataCustom Text (
StringList): specifies the contents of the text if DataLabel Type is
Custom. Each item in the list represents a new text line.
- DataLabel Type (
Enumeration): specifies the type of information displayed by the label. See Label types.
- DataPlacement (
Placement): specifies the position of the text in the 3D view and, unless DataStraight Direction is
Custom, also of the first leader segment, which is the segment where the text is attached. See Placement.
- DataText (
StringList): (read-only) specifies the contents of the text that is actually displayed. Each item in the list represents a new text line.
- DataPoints (
VectorList): specifies the points of the leader.
- DataStraight Direction (
Enumeration): specifies the direction of the first leader segment:
- DataStraight Distance (
Distance): specifies the length of the first leader segment. Only used if DataStraight Direction is
Vertical. If the distance is positive, the leader starts from the right side of the text and the text aligns to the right. Otherwise the leader starts from the left side of the text and the text aligns to the left.
- DataTarget (
LinkSub): specifies the object and optional subelement the label is linked to.
- DataTarget Point (
Vector): specifies the position of the tip of the leader, which is where the arrow is attached.
Custom: displays the contents of DataCustom Text.
Name: displays the internal name of the target object. The internal name is assigned when an object is created and remains fixed throughout the existence of the object.
Label: displays the label of the target object. The label of an object can be changed by the user.
Position: displays the coordinates of the base point of the target object, of the target vertex, or of the center of mass of the target subelement, if applicable.
Length: displays the length of the target object or subelement, if applicable.
Area: displays the area of the target object or subelement, if applicable.
Volume: displays the volume of the target object, if applicable.
Tag: displays the
Tagattribute of the target object, if applicable. Objects created with the Arch Workbench can have this attribute.
Material: displays the label of the material of the target object, if applicable.
Label + Position
Label + Length
Label + Area
Label + Volume
Label + Material
- ViewAnnotation Style (
Enumeration): specifies the annotation style applied to the label. See Draft AnnotationStyleEditor.
- ViewScale Multiplier (
Float): specifies the general scaling factor applied to the label.
- ViewDisplay Mode (
Enumeration): specifies how the text is displayed. If it is
3D textthe text will be displayed in a plane defined by the DataPlacement of the label. If it is
2D textthe text will always face the camera. This is an inherited property.
- ViewArrow Size (
Length): specifies the size of the symbol displayed at the tip of the leader.
- ViewArrow Type (
Enumeration): specifies the type of symbol displayed at the tip of the leader, which can be
- ViewFrame (
Enumeration): specifies what type of frame is drawn around the text. The current options are
- ViewLine (
Bool): specifies whether to display the leader line. If it is
falseonly the arrow and the text are displayed.
- ViewLine Color (
Color): specifies the color of the leader and the arrow.
- ViewLine Width (
Float): specifies the width of the leader.
- ViewJustification (
Enumeration): specifies the horizontal alignment of the text:
Right. Only used if DataStraight Direction is
Custom. Otherwise the horizontal alignment is based on the sign (positive or negative) of DataStraight Distance.
- ViewLine Spacing (
Float): specifies the factor applied to the default line height of the text.
- ViewMax Chars (
Integer): specifies the maximum number of characters on each line of the text.
- ViewText Alignment (
Enumeration): specifies the vertical alignment of the text:
- ViewText Color (
Color): specifies the color of the text.
- ViewText Font (
Font): specifies the font used to draw the text. It can be a font name, such as
Arial, a default style such as
mono, a family such as
Arial,Helvetica,sans, or a name with a style such as
Arial:Bold. If the given font is not found on the system, a default font is used instead.
- ViewFont Size (
Length): specifies the size of the letters. The text can be invisible in the 3D view if this value is very small.
To create a Draft Label use the
make_label method (introduced in version 0.19) of the Draft module. This method replaces the deprecated
label = make_label(target_point=App.Vector(0, 0, 0), placement=App.Vector(30, 30, 0), target_object=None, subelements=None, label_type="Custom", custom_text="Label", direction="Horizontal", distance=-10, points=None)
import FreeCAD as App import Draft doc = App.newDocument() rectangle = Draft.make_rectangle(4000, 1000) doc.recompute() p1 = App.Vector(-200, 1000, 0) place1 = App.Placement(App.Vector(-1000, 1300, 0), App.Rotation()) label1 = Draft.make_label(p1, place1, target_object=rectangle, distance=500, label_type="Label") label1.ViewObject.TextSize = 200 p2 = App.Vector(-200, 0, 0) place2 = App.Placement(App.Vector(-1000, -300, 0), App.Rotation()) label2 = Draft.make_label(p2, place2, target_object=rectangle, distance=500, label_type="Custom", custom_text="Beware of the sharp edges") label2.ViewObject.TextSize = 200 p3 = App.Vector(1000, 1200, 0) place3 = App.Placement(App.Vector(2000, 1800, 0), App.Rotation()) label3 = Draft.make_label(p3, place3, target_object=rectangle, distance=-500, label_type="Area") label3.ViewObject.TextSize = 200 doc.recompute()