Advanced Usage

JSON Preset Structure

Macro sets are stored as JSON files. Each file contains a header object and an entries list.

Example JSON:

{
  "header": {
    "description": "Example macro set",
    "has_random": true,
    "has_companion": false
  },
  "entries": [
    {
      "clicked_type": "property",
      "macro_name": "Cube Location",
      "property_full_path": "bpy.data.objects['Cube'].location",
      "property_value": [0, 0, 0],
      "value_min": [0, 0, 0],
      "value_max": [5, 5, 5],
      "py_command": "bpy.data.objects['Cube'].location = (0, 0, 0)",
      "property_type_hint": "Vector"
    }
  ]
}

You can manually edit JSON files, but it is recommended to use the Recorder panel.

Companion .blend Files

When a macro set contains explicit references to datablocks (e.g. bpy.data.materials[“MyMaterial”]), the extension offers to bundle those datablocks into a companion .blend file. The companion .blend is saved with the same base name as the JSON file (e.g. MySet.json and MySet.blend). During playback, the extension automatically resolves references to the companion .blend.

If you move or rename a companion .blend, you can re‑path it using the Requirements panel in the Player. When missing assets are detected, a dialog appears with a Choose Replacement File button for each missing .blend.

Importing Legacy Macro Sets (V1)

If you have macro sets saved from SMS Macros V1 (stored as text blocks inside .blend files), use the Options panel’s Import Legacy (V1) Presets button.

  1. Select a .blend file that contains text blocks starting with mac_.

  2. The extension converts each text block to a JSON macro set and saves it inside a Legacy subfolder of your presets folder.

  3. The original text blocks are not modified.

Manual File Management

You can create categories and subcategories by simply creating folders inside your presets folder. For example:

presets_folder/MyCategory/MySubcategory/

  • my_set.json

  • my_set.blend

The Player panel will automatically discover any folder structure up to two levels deep.

Sharing Macro Sets

To share a macro set, copy both the .json file and the optional .blend companion file to another user’s presets folder. They will appear automatically in their Player panel. If the companion .blend is missing, the Player will show a dialog to re‑path it.

No Duplicates Mode – Technical Details

When No Duplicates is enabled, the extension checks for existing datablocks or effects before executing certain operators:

  • Modifiers – skipped if a modifier of the same type already exists on the object.

  • Geometry Nodes modifier – skipped if a Nodes modifier with the same node group is already present.

  • Constraints (object and pose-bone) – skipped if a constraint of the same type already exists.

  • Particle systems, shape keys, vertex groups, material slots, UV maps, color attributes – skipped if any already exist.

  • Rigid body / rigid body constraint – skipped if the object already has one.

  • NLA tracks – skipped if the object’s animation data already has NLA tracks.

  • Grease Pencil modifiers, Shader FX, Grease Pencil layers – skipped if any already exist on the object.

  • Animation drivers – skipped if the object already has drivers.

  • Armature bone collections – skipped if any already exist.

  • Motion paths – skipped if the object or pose bone already has a motion path.

  • Append entries – skipped if the datablock already exists in the scene.

This ensures that running the same macro set twice does not create duplicate data.