A template = one PowerPoint group plus template metadata (template name, variable list, variable values). It adds a "variable" layer on top of native grouping: design a set of shapes, group them, save as a template, then insert from the library and fill only a few variables like PLC and DB. Every animation's tag address inside the group is then rewired to that device automatically. You keep PPT's native editing while removing the cost of copying one device template many times and hand-editing each tag address.
Save a designed group of shapes as a reusable template, then insert it and fill just a few variables like PLC and DB to bind the whole group's tags at once. The built-in input / keypad / table templates cover input fields, an on-screen numeric keypad, and dynamic tables; Template Edit edits an instance and Batch Replace bulk-replaces text and template variables.
What it is and what it solves
A template = one PowerPoint group plus template metadata (template name, variable list, variable values). It adds a "variable" layer on top of native grouping: design a set of shapes, group them, save as a template, then insert from the library and fill only a few variables like PLC and DB. Every animation's tag address inside the group is then rewired to that device automatically. You keep PPT's native editing while removing the cost of copying one device template many times and hand-editing each tag address.
Three built-in templates ship with the product: input (an input field with three binding modes), keypad (a numeric keypad for an input field), and table (a dynamic table). The ribbon Templates group has three entries: Template Library, Template Edit (edit the selected template instance), and Batch Replace.
How to use it: save, insert, and the editor fields
Save and insert: design a set of shapes in PPT and group them; with the group selected, open Template Library and click Save to store it locally. Later double-click or drag from the library to insert; the inserted group is marked as a template instance. The library also supports Import / Export (exchange templates between machines) and Delete.
Template Edit fields (vary by template kind):
All instances: Position and Size with X / Y / Width / Height (the top also shows read-only Instance / Template / Group)
Plain template instance: a Template Variables section lists one input per detected <variable> (e.g. PLC, DB, RUN_TAG); filling it applies to the whole group
input template: Input Mode (Plain Input keeps only the typed value and does not write / Runtime Variable binds a runtime variable / PLC Tag binds a PLC tag), Variable or PLC Tag (switches with the mode), Write Trigger (defaults to Immediate), Font Size
keypad template: Target Input (pick the input template on this page to drive; digit keys append a character, Back deletes one, Clear empties, OK writes through the target input)
table template: Table Name, Table Text ID, Headers, Header Text IDs, Rows (Rows accepts an array, a variable name, or a function name)
// Use template variables in expressions (segmented / whole)
ReadTagBoolean('<PLC>.<DB>.123', false)
ReadTagBoolean('<RUN_TAG>', false)
// Instance: PLC=aaa, DB=456 -> at runtime equals aaa.456.123
When to use it
Two typical scenarios:
1) Many copies of the same device: design one pump/valve, save it as a template, and for each extra unit insert a copy from the library, open Template Edit, and fill that unit's PLC and DB. The whole group's animations point at that device's addresses with no per-tag editing.
2) An operator area with input and keypad: insert an input template set to Runtime Variable or PLC Tag, then insert a keypad template and choose this input in Target Input so operators key values in and write them out. To read the input value from scripts, use template.getValue("Input component name").
Batch Replace fits: quick renaming after copying a page, replacing content across grouped instances, unifying terminology, and replacing template-variable placeholders. After opening it the top shows Scope (Selected content / Current page) and Detected Variables (the <variables> it found); fill Find / Replace, and the grid below previews matching rows live with Type / Object / Replace In / Current Text / After Replace before you click Replace.
Boundaries and common mistakes
A few easy traps:
Variable names are strict: letters, digits, and underscore only, wrapped in angle brackets, e.g. <PLC>, <RUN_TAG>. Hyphens, dots, spaces, and non-ASCII are not allowed (<PLC-1>, <DB.NAME> are invalid)
Template variables are instance-level and live only on the instance root group: copying the whole group carries them along and all child shapes share one set of values; don't try to set them per child shape
Variables may be left blank while editing/inserting, but export validates them: if any unreplaced <variable> remains, export fails, so fill them all before exporting
Template Edit only works on a template instance root group: with a plain shape or plain group selected the button is unavailable; picking the wrong object means the editor won't open or shows no variable rows
keypad needs an input template first: if this page has no input template yet, Target Input prompts you to insert one and come back
Batch Replace is for text/placeholders, not structural changes: if every replace still needs heavy manual layout fixes, fix the template source instead of repeatedly batch-replacing
Figure 1: Template Library
Save a grouped set of shapes as a template, then insert it from the library to reuse; supports Import, Export, and Delete.