Use this page as a field guide while reading PME screens, guides, and older forum posts. It names the parts you need to recognize; it is not a complete API reference.

The 30-second model

A PME customization is one saved tool you build: a Pie Menu, Popup Dialog, Macro Operator, and so on. Most visible customization types contain slots. A slot can run a command, expose a property, link another customization, invoke a hotkey, or draw a custom layout.

A hotkey decides how you reach an entry. Poll decides whether that entry is available in the current Blender context. The slot decides what happens after you reach it.

Editor names

These are the labels used in PME 2.1. Older posts may use a nearby name such as “Pop-up Dialog Editor” or refer to every saved entry simply as a “menu.”

PME editorWhat it is for
Pie MenuArrange a small set of choices around the pointer for directional access.
Vector MenuUse direction-first input to reach actions or nested content, with a visible surface when needed.
Regular MenuPresent choices as a conventional list or dropdown.
Popup DialogCompose controls into a temporary pie, popup, or persistent dialog presentation.
Floating Panel (beta)Keep a Popup-Dialog-style control surface floating in the current Blender area.

Shortcut behavior

PME editorWhat it is for
Stack KeyPut several actions on one shortcut and advance through them on repeated presses.
Sticky KeyGive key press and key release different actions, often for a temporary change.

Automation and state

PME editorWhat it is for
Macro OperatorCombine several existing actions into one reusable operation.
Modal OperatorBuild an interactive operation that continues to react to mouse or keyboard input while it runs.
PropertyDefine a custom Blender property with configurable read and write behavior.

Routing and integration

PME editorWhat it is for
Property StackExpose a condition as a Boolean-like control and optionally apply the state that satisfies it.
Context RouterChoose the first matching target for the current Blender context.
Panel GroupAdd or organize PME-linked content in supported Blender interface locations.
Hidden Panel GroupHide selected Blender panels or panel groups.

You do not need to learn all of these at once. Pie Menu, Popup Dialog, and Macro Operator cover many first projects. Open Getting Started with PME when you want to choose by result instead of feature name.

Slot, item, PM, and PMI

Slot

A slot is one editable unit inside a slot-based PME entry. The common Slot Editor choices are:

Slot typeResult
CommandRun Python or a Blender operator call.
PropertyDraw or edit a Blender property.
MenuLink to another PME entry.
HotkeyInvoke the action assigned to a Blender keymap item.
CustomDraw a layout with Blender’s UILayout API.

Not every editor accepts every slot type. Modal Operator, Panel Group, Property Stack, and Context Router each add their own structure or restrictions.

If the five common choices sound interchangeable, open Choose Command, Property, Menu, Hotkey, or Custom before adding code. In particular, Custom owns UI drawing; it is not a more powerful Command slot.

Item

Item is the broad user-facing word for an entry inside a menu, dialog, Macro, or similar editor. In ordinary guides, “slot” and “item” can describe the same visible unit; slot is more precise when position or Slot Editor configuration matters.

PM and PMI

Older posts and implementation-oriented discussions often use these abbreviations:

  • PM means one saved PME entry, even when its editor type is not Pie Menu.
  • PMI means one stored PME item or slot inside a slot-based entry.

You rarely need the abbreviations to author a menu, but recognizing them makes older troubleshooting threads easier to follow.

Poll is an availability guard

A Poll expression returns a Boolean result for the current Blender context. When it returns False, PME treats the entry as unavailable on the routes that consult its Poll. Poll is not a second Command slot and should not perform an action.

return C.active_object is not None

Context members can be absent on some execution routes. Guard them before reading a nested value:

return C.area is not None and C.area.type == 'VIEW_3D'

Poll and Context Router solve different problems: Poll answers “may this run here?”; Context Router answers “which target should this context choose?” For a concrete subtype example, see Use a different Pie Menu in each Node Editor.

Blender context words

TermMeaning
WindowA top-level Blender window. A window contains a screen.
AreaOne tile in a Blender screen. An area currently hosts an editor such as the 3D Viewport or Outliner.
Editor typeThe kind of Blender editor hosted by an area. This is separate from a PME editor type.
RegionA sub-part of an area, such as its main window region, header, toolbar, or sidebar.
ModeBlender’s current working state, such as Object, Edit Mesh, Pose, or Sculpt Mode.
KeymapA scoped collection of shortcut assignments. The same key can resolve differently by editor, region, and mode.
OperatorA Blender action exposed through bpy.ops, often with context requirements and an execution mode such as INVOKE_DEFAULT or EXEC_DEFAULT.
PropertyA value exposed by Blender data, context, or an add-on, often drawn as a checkbox, field, menu, or slider.

When an operator works from Blender’s UI but not from PME, compare the area, region, mode, and selection first. Operator context failures explains that boundary.

Scripting shortcuts in PME posts

The archive contains compact PME scripts written with single-letter names. Their availability is not identical:

NameMeaningAvailability
CCurrent Blender context proxyInstalled as a core PME scripting name; its members still depend on the active context.
Dbpy.dataThe current blend-file data registry. It is not a static snapshot.
Obpy.opsStill installed for compatibility and common in older snippets; current PME classifies it as an internal shortcut, so bpy.ops is clearer in new long-lived code.
LCurrent UILayoutAvailable only while PME is drawing UI, such as a Custom slot.
ECurrent Blender eventAvailable only when the execution route owns a scoped input event.
UPME user-data containerSession-only scratch data; it is reset when PME is re-registered or Blender restarts.

Examples:

# Command or Poll context
obj = C.active_object
 
# Custom-slot drawing context
L.label(text="Current frame"); L.prop(C.scene, "frame_current")
 
# Temporary state shared during the current PME session
U.last_tool = "Inset"

Each name is available only in the situations listed above. Use L while drawing UI, check that E exists when a script depends on an input event, and reserve U for temporary data that can be reset when PME is re-registered or Blender restarts.

Continue from here