Draft AnnotationStyleEditor

From FreeCAD Documentation
Jump to navigation Jump to search
Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎русский

Draft AnnotationStyleEditor.svg Draft AnnotationStyleEditor

Menu location
Annotation → Annotation styles
Default shortcut
Introduced in version
See also
Draft Text, Draft Dimension, Draft Label


The Draft AnnotationStyleEditor.svg Annotation style editor tool allows you to define styles that affect the visual properties of annotation-like objects, like those create by Draft Text.svg Text, Draft Dimension.svg Dimension, and Draft Label.svg Label.

Draft AnnotationStyleEditor example.png

Style editor to configure the annotations.


  1. Press Draft AnnotationStyleEditor.svg Draft Annotation style editor button.
  2. Open the combobox, and then choose Add new... to define a new style, or select one of the existing styles.
  3. Adjust the properties of the style, and then press OK when satisfied.

Use the Accessories-text-editor.svg Rename or Edit Cancel.svg Delete to rename or delete the active style.


The annotation styles are saved as serialized dictionaries in the Meta attribute of the document. This attribute is inspected by the annotation style editor when it is opened.

>>> print(App.ActiveDocument.Meta["Draft_Style_Lane 1:100"])
{"FontName": "DejaVu Sans", "FontSize": "8.0000 ", "LineSpacing": "1 cm", "ScaleMultiplier": 1.0, "ShowUnit": false, "UnitOverride": "", "Decimals": 2, "ShowLines": true, "LineWidth": 2, "LineColor": 1095216660480, "ArrowType": 0, "ArrowSize": "5.0000 ", "DimensionOvershoot": "1.0000 ", "ExtensionLines": "5.0000 ", "ExtensionOvershoot": "1.0000 "}

Each style that appears in the editor is internally saved with the style name prefixed by Draft_Style_; this will prevent name clashes with other keys that may be saved in Meta, which can hold arbitrary information.

You may define any new style by adding the necessary information to a key that starts with Draft_Style_. The corresponding value of this key must be a dictionary serialized using json.

import json

meta = App.ActiveDocument.Meta
props = {"LineWidth": 6, "ArrowSize": "7"}
meta["Draft_Style_Thick_lines"] = json.dumps(props)
App.ActiveDocument.Meta = meta

The values not entered will be filled automatically when this style is selected in the style editor.

In a similar way, any serialized dictionary can be unpacked for edition.

meta = App.ActiveDocument.Meta
new_dict = json.loads(meta["Draft_Style_Thick_lines"])

Because the graphical interface widgets check the units of the input values, many of these values must be saved as strings, rather than floating point numbers.


props = {
  "FontName": "DejaVu Sans",
  "FontSize": "12.0000 ",
  "LineSpacing": "1 cm",
  "UnitOverride": "m",
  "ArrowSize": "5.0000 ",
  "DimensionOvershoot": "1.0000 ",
  "ExtensionLines": "5.0000 ",
  "ExtensionOvershoot": "1.0000 "


props = {
  "ScaleMultiplier": 1.0,
  "Decimals": 2,
  "LineWidth": 1,
  "LineColor": 1095216660480,
  "ArrowType": 0

The line color corresponds to the 32-bit integer, from which the individual RGBA values can be extracted.


props = {
  "ShowUnit": False,
  "ShowLines": True