|Annotation → Text|
|Introduced in version|
|Draft Label, Draft ShapeString|
To create a text element with an arrow use the Draft Label command instead.
Single point required to position the text
- There are several ways to invoke the command:
- The Text task panel opens. See Options for more information.
- Pick a point in the 3D view, or type coordinates and press the button.
- Enter the desired text, press to start a new line.
- Press twice or press the button to finish the command.
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
- The Relative checkbox has no purpose for this command.
- 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
- Click the Continue checkbox on the second task panel to toggle continue mode. The keyboard shortcut does not work. If continue mode is on, the command will restart after finishing, allowing you to continue creating texts.
- Press Draft snapping on or off. to switch
- Press or the button to abort the command.
- Draft Texts created with FreeCAD version 0.18 are not backward compatible.
See also: Property editor.
A Draft Text object is derived from an App FeaturePython object and inherits all its properties. The following properties are additional unless otherwise stated.
- DataPlacement (
Placement): specifies the position of the text in the 3D view. See Placement.
- DataText (
StringList): specifies the contents of the text. Each item in the list represents a new text line.
- ViewAnnotation Style (
Enumeration): specifies the annotation style applied to the text. See Draft AnnotationStyleEditor.
- ViewScale Multiplier (
Float): specifies the general scaling factor applied to the text.
- ViewDisplay Mode (
Enumeration): specifies how the text is displayed. If it is
3D textthe text will be displayed in a plane defined by its DataPlacement. If it is
2D textthe text will always face the camera. This is an inherited property.
- ViewLine Color (
Color): not used.
- ViewLine Width (
Float): not used.
- ViewFont Name (
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.
- ViewJustification (
Enumeration): specifies if the alignment of the text:
- ViewLine Spacing (
Float): specifies the factor applied to the default line height of the text.
- ViewText Color (
Color): specifies the color of the text.
To create a Draft Text use the
make_text method (introduced in version 0.19) of the Draft module. This method replaces the deprecated
text = make_text(string, placement=None, screen=False)
- Creates a
placement, which can be a
FreeCAD.Placement, but also a
stringis a string or a list of strings. If it is a list, each element is displayed on its own line.
True, the text always faces the camera, otherwise it aligns with the scene axes and lies on the XY plane.
The view properties of
text can be changed by overwriting its attributes; for example, overwrite
ViewObject.FontSize with the new size in millimeters.
import FreeCAD as App import Draft doc = App.newDocument() t1 = "This is a sample text" p1 = App.Vector(0, 0, 0) t2 = ["First line", "second line"] p2 = App.Vector(1000, 1000, 0) text1 = Draft.make_text(t1, p1) text2 = Draft.make_text(t2, p2) text1.ViewObject.FontSize = 200 text2.ViewObject.FontSize = 200 zaxis = App.Vector(0, 0, 1) t3 = ["Upside", "down"] p3 = App.Vector(-1000, -500, 0) place3 = App.Placement(p3, App.Rotation(zaxis, 180)) text3 = Draft.make_text(t3, place3) text3.ViewObject.FontSize = 200 doc.recompute()