bpy compatibility.
If you write Blender scripts, start with the same broad division described in the Blender API quickstart: application data, current context, and explicit operations. Armorsmith adapts that structure to its documents, body measurements, viewport tools, and command history.
Read copied data
Declare an operation button
measurement and number arguments are control IDs, not a body measurement name or numeric value. The declaration allows the host to resolve the user’s current choice when Apply is clicked.
Python returns result and exits. Armorsmith renders the dialog and executes the validated action on its owning thread. Buttons do not call back into Python. Refresh updates the host dialog’s snapshot and revision; it does not resume the exited script.
Current limits
0.3 does not provide direct Python setters, live collections, operator polling methods, custom operator registration, persistent handlers, or scripted operation batches. You cannot runarm.ops in a Python loop to apply edits immediately. Its current builders connect native actions to dialog buttons.
This structure leaves room for a future request transport with the same copied types and validated commands. That transport, broader domain operators, and plugin registration remain separate work. You can already create a floating control panel with the Python helpers and examples.