#https://blender.stackexchange.com/q/99989/3710
import bpy
class FrameSelection(bpy.types.Operator):
"""Add a frame to all selected Nodes"""
bl_idname = "node.frame_selection"
bl_label = "Add Frame"
bl_options = {'REGISTER', 'UNDO'}
@classmethod
def poll(cls, context):
space = context.space_data
return space.type == 'NODE_EDITOR'
def execute(self, context):
space = context.space_data
node_tree = space.node_tree
node_active = context.active_node
node_selected = context.selected_nodes
#context.area.tag_redraw()
#context.space_data.node_tree.update_tag()
'''
if len(node_selected) == 0:
self.report({'ERROR'}, "Nothing in selection")
return {'CANCELLED'}
'''
a = node_tree.nodes.new('ShaderNodeBsdfDiffuse')
a.location = 0,0
b = node_tree.nodes.new('ShaderNodeBsdfDiffuse')
b.location = 200,0
frame = node_tree.nodes.new('NodeFrame')
for node in [a,b]:
node.parent = frame
bpy.ops.node.select_all()
return {'FINISHED'}
def register():
bpy.utils.register_class(FrameSelection)
def unregister():
bpy.utils.unregister_class(FrameSelection)
if __name__ == "__main__":
register()