|by:||Gregory Haynes, August 2018|
|description:||copy a macro, identifying it by its macroId.|
|remarks:||Best used together with setup/initialize macros, e.g. Create Workspaces|
Original idea/request by Alex del Bondio, see http://forum.avolites.com/viewtopic.php?f=20&t=5780.
The main problem when attempting to copy items from the show library is that imported items don't have a dedicated handle - the items from an imported show are displayed dynamically. Hence a way needs to be found how to address an item by other means - in the case of macros: their Id.
<?xml version="1.0" encoding="utf-8"?> <avolites.macros> <macro id="Avolites.Macros.CopyMacroById" name="Copy Macro Snap to Fixtures #1"> <description></description> <sequence> <step>Playbacks.Editor.Macros.SetTargetHandle("Avolites.Macros.SnapForward")</step> <step>ActionScript.SetProperty.Enum("Handles.OperationMode", "move")</step> <step>Handles.SetSourceHandleFromHandle(Playbacks.Editor.Macros.Target.Handle)</step> <step>Handles.CopyDestination("Fixtures", 0)</step> </sequence> </macro> </avolites.macros>
This explains the functional steps within the sequence. For all the other XML details please refer to Formats and syntax
SetTargetHandlecall uses the macro ID string to get the handle associated with the macro (even if it is an unassigned factory macro) and assigns that handle to the
Playbacks.Editor.Macros.Target.Handleproperty. This property can then be passed into any other function that requires a handle such as the