Draft Text

From FreeCAD Documentation
Revision as of 19:23, 27 March 2021 by Roy 043 (talk | contribs) (Updated Properties)
This documentation is a work in progress. Please don't mark it as translatable since it will change in the next hours and days.

Draft Text

Menu location
Annotation → Text
Workbenches
Draft, Arch
Default shortcut
T E
Introduced in version
0.7
See also
Draft Label, Draft ShapeString

Description

The Draft Text command inserts a multi-line textbox at a given point. It uses the Draft Linestyle set on the Draft Tray.

To insert a text element with an arrow use the Draft Label command.

Single point required to position the textbox

Usage

  1. There are several ways to invoke the command:
    • Press the Draft Text button.
    • Select the Annotation → Text option from the menu.
    • Use the keyboard shortcut: T then E.
  2. Click a point on the 3D view, or type coordinates and press the Enter point button.
  3. Enter the desired text, pressing Enter between each line.
  4. Press Enter twice to finish the command.

Options

  • To enter coordinates manually, simply enter the numbers, then press Enter between each X, Y and Z component. You can press the Enter point button when you have the desired values to insert the point.
  • Hold Ctrl while placing the text to force snapping your point to the nearest snap location, independently of the distance.
  • Press Enter or ↓ Down arrow to enter a new line of text.
  • Press ↑ Up arrow to edit the previous line of text.
  • Press Enter or ↓ Down arrow twice to finish editing the text.
  • Press Esc or the Close button to abort the command.

Notes

Properties

A Draft Text object is derived from a Part Feature object and inherits many of its properties. The following properties are either additional or have a special meaning for Draft Texts.

Data

Base

  • DataText: specifies the contents of the text block as a list of strings. Each element in the list represents a new line.

View

Annotation

  • ViewAnnotation Style
  • ViewScale Multiplier

Display Options

  • ViewDisplay Mode: if it is "3D text" the text will be aligned to the scene axes, initially lying on the XY plane; if it is "2D text" the text will always face the camera.

Graphics

  • ViewLine Color
  • ViewLine Width

Text

  • ViewFont Name: specifies the font to use to draw the text. It can be a font name, such as "Arial", a default style such as "sans", "serif" or "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 generic one is used instead.
  • ViewFont Size: specifies the size of the letters. If the text object is created in the tree view but no text is visible, increase the size of the text until it is visible.
  • ViewJustification: specifies if the text aligns to the left, right or at the center of the base point.
  • ViewLine Spacing: specifies the space between lines of text.
  • ViewText Color

Scripting

See also: Autogenerated API documentation and FreeCAD Scripting Basics.

To create a Draft Text use the make_text method (introduced in version 0.19) of the Draft module. This method replaces the deprecated makeText method.

text = make_text(string, placement=None, screen=False)
  • Creates a text object, at placement, which can be a FreeCAD.Placement, but also a FreeCAD.Rotation, or a FreeCAD.Vector.
  • string is a string, or a list of strings. If it is a list, each element is displayed on its own line.
  • If screen is 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.

Example:

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()