KB: Reduce repetitive documentation tasks with parameterized project template
Created: May 07, 2024 | Updated: November 15, 2024
Altium Designer
[Why] Reduce repetitive documentation tasks with parameterized project template
[What] Parameters can be defined and instantiated as text string objects within various document types of a project. This parameter indirection goes by the name of Special String. Each of these documents, templates on its own, can be managed as one project template in its entirety to be re-used across all projects down the road.
[How] User-defined parameters can be specified at multi-level with priority to resolve any contention. Once parameters defined, the corresponding Special Strings can be placed as text objects (Place » Text String) with prefix prescribed in each domain (e.g. '=' in schematics and '.' in pcb). Pre-defined Special Strings also vary across different domains. How some parameters are resolved depends on or limited by external factors and the state of project.
Solution Details
First and foremost, it is important to note that in Altium, each design is managed as a "project". As such, it follows to establish and maintain a well-prescribed project template among your team/organization would streamline the workflow and help to deliver consistent, orderly design releases.At the heart of the project template is how/where parameter indirection is applied within each document template, and in Altium, it goes by the name of "Special String" which you instantiate as a text string object.
Altium Designer supports Parameters at various levels of a project with priority to resolve any contention. For example, document-level parameters can be added to each schematic sheet in the Parameters tab of the Schematic editor Properties panel (available when nothing is selected). Project-level parameters can also be added to a project on the Parameters tab of the Project Options dialog (Project » Options). Parameters that are named the same are resolved to the one defined at variant-level, schematic document-level, and project-level in that order of priority.
- variant-level: defined in Variant Management dialog
- document-level: defined on Parameter tab in Properties panel
- project-level: defined on Parameters tab in roject Options dialog
There are also system-defined parameters as well as its Special String syntax in each of functional domain described in each section of our manual below:
Schematics: https://www.altium.com/documentation/altium-designer/schematic-text-objects#!schematic_predefined_special_strings
PCB: https://www.altium.com/documentation/altium-designer/text-objects-pcb#!placing-a-special-string
Draftsman: https://www.altium.com/documentation/altium-designer/draftsman-drawing-annotation#!text_properties:~:text=Draftsman%27s%20Document%20Parameters
BOM: https://www.altium.com/documentation/altium-designer/bom-configuration-report-manager#!mapping-design-data-into-the-bom
Outjob: https://www.altium.com/documentation/altium-designer/streamlining-generation-of-manufacturing-data-with-output-jobs#!supportedparameters
Once parameters defined, in schematic, PCB, or Draftsman, the corresponding Special Strings can be placed as text objects (Place » Text String). A caveat worth noting here is that in each domain, supported pre-defined parameters and the Special String syntax vary due to historical reason, as some users are raising in BC#7126. For example, Special String is denoted by '=' prefix in schematics but '.' prefix in pcb.
Pre-defined parameters also vary across different domains.
How some parameters are resolved depends on or limited by external factors and the state of project.
e.g.
CurrentTime and CurrentDate format depends on user's OS setting
ItemRevision resolves only on released document (and not on pre-released working copy) as such reported at BC#3125
VersionControl_RevNumber is not resolved if not in VCS or with some uncommitted local change
In some scenarios, system query functions such as copy() and length() may come in handy to truncate these special strings along with concatenate operator '+'