|
|
| Menu location |
|---|
| TechDraw → Page → New Page From Template |
| Workbenches |
| TechDraw |
| Default shortcut |
| None |
| Introduced in version |
| - |
| See also |
| TechDraw PageDefault, TechDraw Templates |
The TechDraw PageTemplate tool creates a new Page object using the template file selected from a dialog.
The starting directory for the dialog can be specified in the TechDraw Preferences.
One of the templates that comes with TechDraw: A4_Landscape_ISO7200_Pep.svg
See TechDraw PageDefault.
See also: Autogenerated API documentation and FreeCAD Scripting Basics.
A Page based on a selected template can be created with macros and from the Python Console by using the following functions:
import FreeCAD as App
from PySide import QtGui
doc = App.ActiveDocument
default_dir = App.getResourceDir() + "Mod/TechDraw/Templates"
param = App.ParamGet("User parameter:BaseApp/Preferences/Mod/TechDraw/Files")
template_dir = param.GetString("TemplateDir", default_dir)
template_file = QtGui.QFileDialog.getOpenFileName(QtGui.QApplication.activeWindow(),
"Select a Template File",
template_dir,
"Template (*.svg)")
page = doc.addObject("TechDraw::DrawPage", "Page")
template = doc.addObject("TechDraw::DrawSVGTemplate", "Template")
template.Template = template_file[0]
page.Template = template
doc.recompute()
See also: TechDraw Templates for more information on creating templates.
Once a new Page object has been created, its Template attribute links to the embedded Template object that holds an EditableTexts dictionary with the name of the editable fields (keys) and their textual values. Copy this dictionary to a variable, make changes, and then re-assign the dictionary to the EditableTexts attribute to see the changes.
page = FreeCAD.ActiveDocument.Page
texts = page.Template.EditableTexts
for key, value in texts.items():
print("{0} = {1}".format(key, value))
texts["FC-Title"] = "The title of my page"
page.Template.EditableTexts = texts
To edit individual fields the setEditFieldContent method of the linked Template object can be used:
page.Template.setEditFieldContent("FC-Title", "Another title of my page")