Draft ShapeString

From FreeCAD Documentation
Revision as of 08:12, 17 March 2021 by Roy 043 (talk | contribs)
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 ShapeString

Menu location
Drafting → Shape from text
Workbenches
Draft, Arch
Default shortcut
S S
Introduced in version
0.14
See also
Draft Text, Part Extrude, Macro Fonts Win10 PYMP

Description

The Draft ShapeString tool inserts a compound shape that represents a text string. Text height, tracking and font can be specified. The resulting shape can be used with the Part Extrude tool to create 3D letters.

Alternatively: To insert a simpler text element without a closed shape use Draft Text. To create a text label with a lead and an arrow use Draft Label.

Single point required to position the Shapestring

Usage

  1. There are several ways to invoke the command:
    • Press the Draft ShapeString button.
    • Select the Drafting → Shape from text option from the menu.
    • Use the keyboard shortcut: S then S.
  2. A dialog will appear where you can specify your parameters.
  3. Press OK to create the ShapeString.

Options

  • Press Esc or the Close button to abort the current command.

Preferences

  • The default font file can be changed in the preferences: Edit → Preferences... → Draft → Texts and dimensions → Default ShapeString font file. See Draft Preferences.

Notes

  • Supported fonts include TrueType (.ttf), OpenType (.otf), and Type 1 (.pfb).
  • The current version is limited to left-to-right writing.
  • Very small text heights may result in deformed character shapes due to loss of detail in scaling.
  • Many fonts will generate problematic geometric. This is because font contours are allowed to overlap, have small gaps and have varying directions within a glyph. These conditions are considered errors in the Wires used to define Faces. Options are to correct the font definition with a tool like FontForge or to use another font.
  • To create text arranged in a circular fashion use the Circular Text macro.

Tutorials

Properties

  • DataPosition: specifies the position of the base point of the compound shape.
  • DataAngle: specifies the rotation of the baseline of the shape.
  • DataAxis: specifies the axis to use for the rotation.
  • DataString: specifies the text string to display; unlike the Draft Text tool, the Draft ShapeString can only display a single line.
  • DataSize: specifies the general height of the letters.
  • DataTracking: specifies the additional inter-character spacing in the string.
  • DataFont File: specifies the full path of the font file used to draw the string.

Scripting

See also: Draft API and FreeCAD Scripting Basics.

The ShapeString tool can be used in macros and from the Python console by using the following function:

ShapeString = makeShapeString(String, FontFile, Size=100, Tracking=0)
  • Creates a ShapeString compound shape using the specified String and the full path of a supported FontFile.
  • Size is the height of the resulting text in millimeters.
  • Tracking is the additional inter-character spacing in millimeters.

The placement of the ShapeString can be changed by overwriting its Placement attribute, or by individually overwriting its Placement.Base and Placement.Rotation attributes.

Example:

import FreeCAD as App
import Draft

doc = App.newDocument()

font1 = "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf"
font2 = "/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf"
font3 = "/usr/share/fonts/truetype/freefont/FreeSerifItalic.ttf"

S1 = Draft.makeShapeString("This is a sample text", font1, 200)

S2 = Draft.makeShapeString("Inclined text", font2, 200, 10)

ZAxis = App.Vector(0, 0, 1)
p2 = App.Vector(-1000, 500, 0)
place2 = App.Placement(p2, App.Rotation(ZAxis, 45))
S2.Placement = place2

S3 = Draft.makeShapeString("Upside-down text", font3, 200, 10)
S3.Placement.Base = App.Vector(0, -1000, 0)
S3.Placement.Rotation = App.Rotation(ZAxis, 180)

doc.recompute()