How To?¶
Every question users ask, grouped by theme. Click a question to open its answer.
Reading this page
Answers are short and step-based. When a subject has a full page, the answer links to it at the end.
Menus¶
How to create a simple menu?
A Simple Menu is a flat grid of buttons that opens at your cursor — no directions to aim at.
- Edit > Preferences > Add-ons > PieMaster.
- Select a Preset in the left column (or click + New Preset).
- Click Add Menu and pick the type Simple.
- Name it, then open the Shortcut tab: set the Key, the Context (
3D View), and click Save Keymaps. - Click + Add Button, set Type =
OPERATOR, a Label, an Icon and the operator (object.shade_smooth). - Repeat for the other buttons, and set Columns to choose how many buttons per row.
- Click Preview to see it live, then press your key in the viewport.
How to create a pie menu?
Same path, but click Add Pie Menu. A pie has directions (slots distributed around the center) instead of a flat list.
- Add Pie Menu → name it → Shortcut tab → key + context → Save Keymaps.
- Select a direction, click + Add Button, configure it.
- A direction can hold several buttons — they become a small grid in that slot.
→ Pie Menu
How to create a floating panel menu (Layout)?
Add Menu → type Layout. A Layout is made of columns, each with its own buttons and its own width.
- + Add Column creates a new column.
- Each column has its own name, width, number of columns, condition and toggle condition.
- Set Position Mode to
Basic(opens at the cursor) orLocked(fixed screen position).
How to make a menu that stays visible all the time?
Use a Layout (or Simple) menu with Position Mode = Locked:
- In the menu settings, switch Position Mode to Locked.
- Set Position X / Y — this is where it will always appear.
- Set Direction and Expand From to control which way it grows.
- Enable Auto Show in the menu list so it appears with no shortcut at all.
A LOCKED menu with a Condition hides itself the moment the condition becomes false, and comes back when it is true again.
How to make a menu appear next to the selected object?
Create a menu of type Object:
- Add Menu → type Object.
- In Anchor on Object, pick the cell of the 3×3 grid where the menu should sit relative to the object.
- Adjust Offset X / Y, and Fade After + Opacity if you want it to dim after a while.
- Object menus have no keymap — they show up on selection when their conditions pass.
Info
If several object menus match at the same time, the first one in the list wins.
How to open a menu without any shortcut?
Two ways:
| Way | How |
|---|---|
| Auto Show | Toggle Auto Show in the menu list. LOCKED and Object menus only. The menu shows itself whenever its condition is true (always, if it has no condition). |
| Called from another menu | Set the menu's key to NONE and open it from a PIE_CALL / MENU_CALL / LAYOUT_CALL button in another menu. |
How to organize a big preset?
- Group menus into folders in the menus list — pure organization, it changes nothing at runtime.
- Use one Preset per project or per workflow (
Modeling,Sculpt,Client X). - Use Duplicate on a menu to create a variation instead of rebuilding it.
How to duplicate or copy a menu into another preset?
- Select the menu in the middle column.
- Click Duplicate for a copy in the same preset.
- For another preset: click Copy, select the target preset, click Paste.
→ Presets
Calling other menus¶
How to call an existing PieMaster menu from a button?
Use one of the three call buttons — pick the one matching the target menu type:
| Button type | Opens |
|---|---|
PIE_CALL |
a Pie Menu |
MENU_CALL |
a Simple Menu |
LAYOUT_CALL |
a Layout Menu |
- Add a button, set its Type to
PIE_CALL(orMENU_CALL/LAYOUT_CALL). - Choose the target menu in the dropdown.
- Optional: enable Auto Open on Hover so moving toward the button opens the sub-menu without clicking.
How to call a native Blender menu from a button?
Use an OPERATOR button with Blender's own menu operators:
# Regular dropdown menu
bpy.ops.wm.call_menu(name='VIEW3D_MT_object')
# Right-click context menu
bpy.ops.wm.call_menu(name='VIEW3D_MT_object_context_menu')
# Add menu
bpy.ops.wm.call_menu(name='VIEW3D_MT_add')
# A native Blender pie menu
bpy.ops.wm.call_menu_pie('INVOKE_DEFAULT', name='VIEW3D_MT_shading_pie')
The Unified Search popup already lists the common ones under Add Menus, Object Menus, File Menus and Pie Menus — no typing needed.
Finding a menu name
Enable Developer Extras (Preferences > Interface), then hover a menu entry: Blender shows the class name (VIEW3D_MT_…).
How to open a Blender panel (Snapping, Overlays…) from a button?
Same idea with wm.call_panel in an OPERATOR button:
bpy.ops.wm.call_panel(name='VIEW3D_PT_snapping')
bpy.ops.wm.call_panel(name='VIEW3D_PT_overlay')
bpy.ops.wm.call_panel(name='VIEW3D_PT_shading')
bpy.ops.wm.call_panel(name='VIEW3D_PT_tools_active')
These are in the Panel Menus category of the Unified Search too.
How to build a nested pie system?
Chain pies with PIE_CALL buttons:
Q → Main Pie
├── [Modeling] → PIE_CALL → Modeling Pie
├── [Sculpting] → PIE_CALL → Sculpt Pie
└── [Shading] → PIE_CALL → Shading Pie
- Nesting depth is unlimited.
- The trigger key is inherited through every level, so Quick Direction keeps working down the tree.
- Enable Auto Open on Hover on the call buttons for a continuous gesture.
How to go back to the previous pie?
Enable Chain Mode. Each parent pie leaves a small circle behind; clicking it walks back up the chain.
- Global switch in the add-on preferences, plus a per-menu override (
Default / On / Off). - Chain Back Zone enlarges the click target of those circles.
- Chain Mode is ignored when Center Placement is on — every circle would land on the same spot.
How to add a dropdown list inside a menu?
Use a GPU_MENU button:
- Add a button, set Type =
GPU_MENU. - Add child buttons inside it — each child is one line of the dropdown.
- Children accept any button type (operator, property, python, …), tooltips and conditions included.
Only one dropdown or drawer is open at a time.
How to add a drawer (slide-out panel)?
- Add a button, Type =
DRAWER. - Add children inside it.
- Tune the block as a whole: Items Width / Height, items per row, Items Direction, arrow side, icon-only children, auto-close on pick.
- Enable Auto Open on Hover to open it without clicking.
How to group buttons under a title?
Use a SECTION button: it holds children under a header with its own label and icon (both can be dynamic), and the label/icon position is adjustable (left, center, right). Sections can be nested inside sections.
For a lighter separation, use a LABEL button or a SEPARATOR (Space, Full line, Centered line, Dotted, Double dotted).
Buttons¶
How to add a button in two seconds?
Right-click any button in Blender's interface → PieMaster: Add to Pie.
Operator ID, properties, label and icon are captured automatically and inserted into the currently selected direction/column. It works on add-on buttons too, not only native ones, and on properties (checkbox, slider, dropdown, color).
How to call this add-on's operator? (an operator from another add-on)
A third-party operator is an operator like any other — nothing special to enable.
Fastest: right-click the add-on's button in its panel → PieMaster: Add to Pie.
Manually:
- Run the action once from the add-on's UI.
- Open an Info editor — the last line is the exact call, e.g.
bpy.ops.speedflow.smart_modifier(mode='BEVEL'). - In the button, Type =
OPERATOR, then either:- put
speedflow.smart_modifierin Operator andmode: BEVELin Properties, or - paste the whole call
bpy.ops.speedflow.smart_modifier(mode='BEVEL')in Operator — both forms work.
- put
The add-on must be enabled
bpy.ops.<addon>.<operator> only exists while the add-on is registered. If the operator is missing, the button does nothing and the console prints the error.
Operators that open a popup or a modal
Those need the menu gone before they can take the event stream — PieMaster closes the menu for them automatically. If an add-on operator needs a specific mode or selection, add a Condition so the button only shows when it can actually run.
How to find an operator ID?
| Method | How |
|---|---|
| Tooltip | Hover the button in Blender — the tooltip ends with bpy.ops.object.shade_smooth(). The ID is what sits between bpy.ops. and (). |
| Right-click capture | Right-click → PieMaster: Add to Pie. Everything filled in. |
| Info editor | Run the action, then read the last line of the Info editor — with its real parameters. |
| Unified Search | Search any operator from inside the editor, without leaving Preferences. |
How to find a property path?
- Right-click the value in Blender → PieMaster: Add to Pie (most reliable).
- Or enable Developer Extras (Preferences > Interface) and hover the property: the tooltip shows the full Python path.
- Or test it in the Python Console:
C.space_data.overlay.show_wireframesshould return a value.
How to run several actions from one button (macro)?
Put them on one line separated by ; in an OPERATOR button:
bpy.ops.mesh.primitive_cube_add();bpy.ops.object.modifier_add(type='BEVEL');bpy.context.active_object.modifiers[-1].width = 0.3;bpy.context.active_object.modifiers[-1].segments = 4;bpy.ops.object.shade_smooth()
Each part runs in sequence. For anything longer, use a PYTHON button with a .py file.
How to run a Python script from a button?
Type = PYTHON, then:
- Command — an inline expression, evaluated on click.
- Python File — path to a
.pyfile, executed on click. Use this for anything multi-line.
Both can be filled: the file runs first, so the command line can call a function the file defines.
Warning
Use bpy.context, not the console shortcut C. Test the code in Blender's Text Editor first.
How to make a button that toggles a setting?
Type = PROPERTY, Property Path = the path, Value empty.
An empty value means toggle. The button also highlights itself with the Active color when the property is True, so the current state is readable at a glance.
How to show a button as pressed when a setting is active?
Add a Depress Condition — a one-line Python expression. When true, the button is drawn pressed and highlighted.
Works on any button type, including operators and Python buttons.
How to make a button whose label and icon change with the scene?
Use a Dynamic Label and a Dynamic Icon on the same button:
# Label
{'Cycles' if C.scene.render.engine == 'CYCLES' else 'Eevee'}
# Dynamic Icon (switch on one property value)
C.scene.render.engine: CYCLES = shading_rendered, BLENDER_EEVEE = shading_texture
# Operator
bpy.context.scene.render.engine = 'BLENDER_EEVEE' if bpy.context.scene.render.engine == 'CYCLES' else 'CYCLES'
Dynamic icons also accept rules (expr = icon, expr = icon) or a bare property path, and results are cached — they cost nothing per frame.
How to put several lines, sizes and colors in one label?
Labels and tooltips share the same mini-syntax:
| Code | Effect |
|---|---|
{expr} |
shows a live value — Res {C.scene.render.resolution_x} |
{expr:spec} |
with a Python format spec |
\n |
line break |
\l \c \r |
align that line left / center / right |
\sNN |
font size of that line, in % (\s150 = 1.5×) |
\xNN |
extra spacing above that line, in % |
(text;(r,g,b,a)) |
a colored run inside a line |
Angles are converted to degrees automatically.
How to give one button several actions (Shift+click, drag…)?
Use Trigger Variants. One button, many interactions: Shift / Ctrl / Alt + click, drag up / down / left / right, key hold — over 40 combinations.
Typical use: Shade Smooth on click, Shade Flat on Shift+click, instead of two buttons.
How to show a button only in a certain mode?
Add a Condition — one line, must evaluate to True or False:
context.mode == 'EDIT_MESH'
mode() == 'SCULPT' # helper, valid in every menu type
bool(context.active_object) and context.active_object.type == 'MESH'
not in_camera()
Helpers available: view3d(), perspective(), in_camera(), mode(), has_area(), plus getattr / hasattr.
How to hide a whole group of buttons at once?
Use a Group Condition on the container instead of repeating the condition on each button:
| Where | What it hides |
|---|---|
| Grid / pie slot | the slot and every button in it |
| Layout column | the column and its buttons — remaining columns close the gap |
| Section | the header and everything under it |
A hidden container never evaluates its children's conditions, so a big conditional menu stays fast.
How to build tabs inside a single menu?
Use BUTTON_TOGGLE buttons:
- Add a toggle button and give it an ID (e.g.
tab_model). - On the buttons that belong to that tab, set Toggle Condition = the same ID.
- Keep Exclusive on so only one tab is active at a time (turn it off to allow several).
- A toggle can start active when Blender launches.
Columns and sections accept a Toggle Condition too, so one click can swap a whole side of the menu.
How to add a slider, an enum or a color?
| Need | Type |
|---|---|
| Draggable value | SLIDER |
| Set of options as pills or a dropdown | ENUM_PROP |
| Color swatch | COLOR_PROP |
| Searchable name list (vertex groups, collections…) | SEARCH_PROP |
A COLOR_PROP in Basic mode edits the property; in Set mode it writes a fixed color into it — several Set swatches sharing one path make a palette.
→ Widgets
How to change the color of a single button?
Enable Override Button Colors on the button and pick the colors. The fields also accept an expression, so the color can react to the scene:
How to add an image or a GIF in a tooltip?
In the button's tooltip settings, set an image or a GIF file. Tooltips also accept the label syntax (\n, \s, \x, {expr}), so they can display live values.
Info
A GIF is decoded frame by frame and cached on disk. The very first playback can take a moment — afterwards it is instant.
How to make a button apply to every selected object?
Set the Selection row of the button to On.
| Value | Behavior |
|---|---|
| Default | properties and sliders apply to the selection; operators run on the active object only |
| On | applies to every selected object |
| Off | active object only |
Available on OPERATOR, PROPERTY, SLIDER, ENUM_PROP and COLOR_PROP.
Limits of On for operators
Object Mode only, no F9 Adjust Last Operation, and modal / popup operators are skipped — they need the real event stream.
How to reuse a value across several buttons?
Use the variable store:
- A
SEARCH_PROPbutton (orpm.set) writes a named variable. - Read it in any text field with
{{name}}, or in Python withpm.var('name').
pm.set('work', 'Cube') # write (scene scope)
pm.var('work') # read, "" when unset
pm.var('work', 'Cube') # read with a fallback
Scopes: scene, window manager, or a global JSON file that survives file changes.
Shortcuts¶
How to set the shortcut that opens a menu?
In the Shortcut tab of the menu:
- Click the Key field and press your key.
- Tick Ctrl / Shift / Alt / OS if needed.
- Set the Context (
3D View,Node Editor,Sculpt,Window, …). - Click Save Keymaps.
Always save the keymap
Blender stores shortcuts separately. Without Save Keymaps, the shortcut is gone after a restart.
How to add a shortcut to a button?
Every button inside a menu can be fired from the keyboard while the menu is open — fill its Hotkey field.
| Written | Meaning |
|---|---|
a |
one key |
az |
a sequence — press a then z |
az, z, f2 |
alternates — any of them fires the button |
Numpad keys are supported, and a button with no label can carry a hotkey too. Menus whose buttons are bound show a K icon in the menu list.
How to fire an existing Blender shortcut from a button?
Use a SHORTCUT button — it reproduces a key combination instead of hunting for the operator behind it.
- Type =
SHORTCUT. - Set the key + modifiers, and the Held Key modifier if the binding needs one.
- Pick the event: Press, Release, Click, Double Click, or Click Drag (with a drag direction).
- Pick the mode:
| Mode | What it does |
|---|---|
| Operator | Finds the operator bound to that key in the current context and calls it. Works anywhere a keymap can reach. |
| Raw Key | Sends a real key event to the OS — the only way to reach keys with no operator behind them (ESC, arrows, Return). Windows and X11 only; falls back to Operator mode elsewhere. |
How to disable a menu's shortcut without deleting the menu?
Set the Key to NONE. The menu still exists and can be opened by a PIE_CALL / MENU_CALL / LAYOUT_CALL button, or by Auto Show.
How to solve a shortcut conflict?
- Go to Edit > Preferences > Input and search your key to see what already uses it.
- Prefer a specific Context (
3D View,Sculpt) overWindow— global shortcuts conflict easily. - PieMaster keymaps appear in Preferences > Input under the
pmc.open_pieoperator; if you edit them there, use the Sync button to read the change back.
How to close a menu?
ESCcloses any menu.- Right Mouse closes by default (and RMB + drag moves the menu). If you use RMB for something else, disable close on RMB —
ESCstill works. - Toggle Menus: press the opening shortcut again to close, wherever the mouse is.
Libraries and sharing¶
How to make a library?
PieMaster has three user folders. Set them in Preferences > PieMaster > Options > User Presets Folder:
| Folder | What lands in it | Where it shows up |
|---|---|---|
| User Presets Folder | your own preset .json files |
the Load Preset list, under User |
| User Buttons Folder | single buttons and whole grids you save | the Button Library, under User |
| User Menus Folder | whole menus you save | the Menu Library, under User |
Leave a field empty and saving to that library is simply off.
On disk, a button library is organized as <root>/<category>/<name>.json, with icons/, scripts/ and tooltip media stored beside it — so a category folder can be zipped and shared as is, and it survives add-on updates.
How to save a button to my library?
- Set the User Buttons Folder (see above).
- On the button, click the disk icon — save it alone, or save the whole grid / slot it belongs to.
- Choose a category (the subfolder) and a name.
Icons and Python files used by the button are copied next to it automatically.
To use it later: Add from Library → source User → click the entry. The Button Library also lists every button of every loaded preset (source Presets) and the ones shipped with the add-on (source Add-on).
How to save a whole menu to my library?
Same thing one level up: set the User Menus Folder, then click the disk icon on the menu. It shows up in the Menu Library under User, next to the menus of your presets and the ones shipped with PieMaster.
Inserting from the Menu Library adds a copy of the menu, with a fresh ID, to the preset currently selected.
How to turn a folder of assets into a drawer library?
A DRAWER can build itself from a folder on disk instead of static buttons:
- Add a
DRAWERbutton. - Set Items From to Asset Folder.
- Set the Folder path, and the Extensions to list (
.blend,.obj,.fbx, …). - Optional: Thumbnails folder, Subfolders (nested drawers), Sort, Max Items, Thumbnail Size, Show Names.
One button per file, its thumbnail as icon, a click importing it. Layout = Auto recognizes the common library shapes (files/ + icons/, or blends/ + previews/).
Tip
A drawer panel does not scroll — keep Max Items reasonable, extra files go behind a page strip at the end.
How to share my menus with someone?
- Select the Preset.
- Click Export as Package → a
.zipbundling menus, custom icons, Python scripts and tooltip media. - The recipient clicks Import Preset and picks the
.zip.
A plain Export (.json) is lighter but does not carry custom icons — use the package for sharing.
How to import a preset?
- Import Preset → browse to a
.jsonor.zip. - Or Load Preset → pick from the list of shipped presets and of your User Presets Folder — no file browser involved.
How to back up my menus?
Everything lives in user_pies.json in the add-on folder — or at the path you set in Options > Auto-save Preferences.
- Set an auto-save path outside the add-on folder so an update can never touch it.
- Copy that file somewhere safe before updating PieMaster.
- Export your presets as
.zippackages from time to time.
Design¶
How to change the look of one menu?
Open the Design tab of that menu. Every color, size, font, border radius, glow, shadow and spacing is per menu.
→ Design
How to reuse the same design on other menus?
In the Design tab, Design Presets box:
- Type a name in the field and click the save icon.
- On another menu, pick the preset in the dropdown and click Load.
- Tick Apply colors only to keep the target menu's sizes and font.
Design presets are stored in the folder set by Design Presets Path (empty = add-on folder), so they can be shared.
How to recolor a whole design at once?
In the Design tab, Color Shift box: move HUE / Saturation / Value, then click Apply Color Shift. Reset Color Shift puts it back.
How to resize a menu?
- Menu Scale in the Design tab — a non-destructive multiplier for that menu only. Perfect for adapting an imported preset to your screen.
- Auto Area Scale (Options) shrinks a menu that opens in a small editor.
- Keep Menu In Area nudges it back inside the editor so nothing is clipped.
How to use my own icons?
- Add your PNG folders in Preferences > PieMaster > User Icon Directories, with a label each.
- They then appear in the icon picker next to the ~700 bundled icons and Blender's own icons, with search, favorites and recents.
- Custom icons used by a button are bundled automatically when you export a package or save the button to your library.
How to make buttons look like one block?
Set the spacing to 0 and enable Merge Button Borders — the outlines between connected buttons disappear and a single contour is drawn around the group. The hovered button keeps its own outline.
How to change where the icon sits in a button?
Per button: Icon Side (left, right, top) and Label Align (default, left, center, right). Works on drawers and sections too — handy to align a list of labels like a real menu.
Opening behavior¶
How to fire a button without clicking?
| Feature | How it works |
|---|---|
| Quick Direction | Flick past a distance threshold and release the shortcut key — the button fires. Adjustable distance, can include grid directions. |
| Spring Loaded | The menu lives only while the key is held; release fires the highlighted button. |
| Auto Fire on Hover | The action runs on hover, with no click at all. Off by default — it runs the real action. |
| Button hotkeys | Press the button's Hotkey while the menu is open. |
How to open a menu by holding a key?
Enable Key Hold (Hold to Open) — the menu opens after the hold time (default 0.2s). Move to a button and release the key to fire it.
Combined with a trigger variant, a short click and a hold on the same button can do two different things.
How to open a sub-menu just by hovering?
Enable Auto Open on Hover on PIE_CALL, GPU_MENU and DRAWER buttons.
Use Hover Open Delay to control it: 0 = instant, 0.2 = you can pass over the button without triggering it. Set globally or per button.
How to keep a pie open to click several buttons?
Click the center circle of the open pie — it freezes in place. Click as many buttons as you want, then click the center again or press ESC.
How to make a pie invisible until I hesitate?
Enable Pie Flash Mode. While Quick Direction is armed, only the button you flick toward is drawn; hold instead of flicking and the full pie appears as usual.
Flash Time sets how long the fired button stays on screen (0 = off). The action always runs immediately.
How to always open menus at the center of the editor?
Enable Center Placement. Useful on large screens or when your cursor position varies a lot.
Info
Chain Mode and Pie Flash Mode are ignored while Center Placement is on.
Editing workflow¶
How to see my menu while I edit it?
Click Preview — the menu opens live in the 3D View and every change in the editor is reflected instantly. No need to close and reopen.
How to move buttons around directly in the viewport?
In Preview, toggle Edit Mode (button in the menu header, or its keymap shortcut — customizable in the keymap settings).
| Action | Result |
|---|---|
| Drag a button | reorder / move it |
| Drag its right edge | change its Col Span |
| Double-click | open its settings popup |
| Right-click | context menu: add, remove, move outside a section |
Ctrl+C / Ctrl+X / Ctrl+V |
copy, cut, paste the selected button |
Ctrl+Z |
undo the last edit (does not touch the scene's undo) |
Grid and column settings (name, width, columns, conditions) are editable from the same popup.
How to add a button without going back to Preferences?
In Preview, right-click inside the live menu → Add Button. You can build a whole menu from the viewport.
How to copy a button from one menu to another?
One clipboard covers everything: pie slots, simple menus, layout columns, drawers, nested drawers and dropdowns. Duplicate, Copy and Paste are available at every level, in Preferences and in Preview-Edit.
How to find an operator, property or condition without leaving the editor?
Open the Unified Search popup. It browses operators, properties, conditions and the button library, keeps a Last Used list, and its Library tab can either insert a new button or replace the one you opened it from.
Popup widths (Edit, Capture, Button Library, Search) are adjustable in the preferences.
Still stuck?¶
- The menu does not open, a button does not show, a condition never fires → Troubleshooting
- A word you do not know → Glossary
- The complete feature list → All Features