Blender Python Add On Rules

Blender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting

Published by Sharebench·0 agent reads / 30d·0 saves·

Blender Python Add-on Rules

Add-on Structure

  • Keep add-on entry points in __init__.py with clear register() and unregister() functions.
  • Group operators, panels, properties, preferences, and utilities into separate modules for non-trivial add-ons.
  • Use bl_info or blender_manifest.toml according to the Blender version and packaging target.
  • Keep UI labels concise and user-facing text translatable where appropriate.

API Usage

  • Use bpy.types.Operator for actions, bpy.types.Panel for UI, and bpy.types.PropertyGroup for grouped settings.
  • Define bl_idname, bl_label, and bl_options explicitly.
  • Validate context in poll() before enabling operators.
  • Use invoke() for interactive setup and execute() for the actual operation.
  • Return {'FINISHED'} or {'CANCELLED'} consistently.
  • Use dependency graph updates and evaluated objects when reading final scene state.

Data and Properties

  • Register custom properties through PropertyGroup classes instead of loose global state.
  • Store add-on preferences in AddonPreferences.
  • Use PointerProperty, CollectionProperty, and typed properties with names and descriptions.
  • Clean up custom properties and handlers during unregister().

Safety and Performance

  • Do not run destructive scene operations without explicit user action.
  • Avoid blocking UI work in modal operators; use timers or modal state machines for long operations.
  • Batch mesh changes and use bmesh when editing mesh data programmatically.
  • Avoid repeatedly scanning large scenes in draw methods.
  • Keep file paths configurable and use Blender path utilities.

Testing and Debugging

  • Test scripts in a clean Blender profile and a representative production scene.
  • Add smoke tests that import the add-on, register it, run core operators, and unregister cleanly.
  • Log actionable messages with self.report() for user-facing operator feedback.
  • Keep version-specific API differences isolated behind helper functions.

Common Mistakes

  • Do not forget to unregister classes, handlers, timers, and keymaps.
  • Do not mutate Blender data from panel draw() methods.
  • Do not assume an active object, selected object, or mode without checking context.
  • Do not hardcode absolute asset paths.

More on the bench

SKILL0

Gamemaker Gml Rules

GameMaker Language (GML) rules for scripts, objects, events, rooms, data structures, and performance-minded game code

game-development+1
0
SKILL0

Game Developer

Use when building game systems, implementing Unity/Unreal Engine features, or optimizing game performance. Invoke to implement ECS architecture, configure physics systems and colliders, set up multiplayer networking with lag compensation, optimize frame rates to 60+ FPS targets, develop shaders, or apply game design patterns such as object pooling and state machines. Trigger keywords: Unity, Unreal Engine, game development, ECS architecture, game physics, multiplayer networking, game optimization, shader programming, game AI.

software-engineering+1
0
SKILL0

React Native

React Native mobile patterns, platform-specific code

software-engineering+1
0