create_object_merge ()
Creates Object Merge SOP, new node references the actual selection.
recook_container ()
Recooks all the nodes in the actual container (parent of actual node).
source code
the following code is maintained also on my github
thank you, great people, I couldn't do this without you.
import re import hou import wf_selection reload(wf_selection) import wf_network_parm reload(wf_network_parm) def selection_switch () : nodes = hou.selectedNodes() count = len(nodes) if count > 1 : # if few nodes are selected, then initialize, save that selection selection_stack = ','.join(node.path() for node in nodes) hou.putenv('selection_stack', selection_stack ) hou.putenv('selection_current', '0' ) hou.putenv('selection_count' , str(count) ) # even if one node is selected... selection_stack = hou.getenv('selection_stack', 'none') selection_current = hou.getenv('selection_current', 'none') selection_count = hou.getenv('selection_count', 'none') # go to next node... stack = selection_stack.split(',') current = int(selection_current) + 1 count = int(selection_count) if current == count : current = 0 # update the saved variable hou.putenv('selection_current', str(current) ) # select that node in current pane target = hou.node(stack[current]) parm_pane = wf_selection.pane_linkGroup( hou.paneTabType.Parm ) parm_pane.setCurrentNode(target,True) def go_parm(node,parm) : parm = parm.rawValue() path = re.findall('["'](.*?)["']',parm)[0] path = path[:path.rindex('/')] target = node.node(path) parm_pane = wf_selection.pane_linkGroup( hou.paneTabType.Parm ) parm_pane.setCurrentNode(target,True) def find_parm(parmname) : if parmname == None : text = hou.ui.readInput("Search text:", buttons=("Search", "Cancel"))[1] else : text = parmname container = wf_selection.container() nodes = container.allSubChildren() pattern = '' pattern_count = 0 print '---- found: ----' for node in nodes : parms = node.parms() for parm in parms : raw = parm.rawValue() if raw.find(text) > -1 : if pattern_count > 0 : pattern += ' | ' pattern += parm.name() + '~=*' + text + '*' pattern_count += 1 print 'NODE: ' + str(node) + ' // PARM: ' + parm.description() + " // RAW: " + raw print '--------------------------' hou.ui.copyTextToClipboard(pattern) def create_node(type) : nodes = hou.selectedNodes() connections = hou.selectedConnections() if nodes : if type == 'merge' or type == 'switch' : # one node, multiple inputs node_create = nodes[0].parent().createNode( type ) for node in nodes: node_create.setNextInput(node) node_create.moveToGoodPosition(relative_to_inputs=True, move_inputs=False, move_outputs=True, move_unconnected=False) if type == 'null' or type == 'xform' or type == 'attribwrangle' or type == 'geo': # multiple nodes, one input for node in nodes: node_create = node.createOutputNode( type ) node_create.moveToGoodPosition(relative_to_inputs=True, move_inputs=False, move_outputs=True, move_unconnected=False) # set current parm_pane = wf_selection.pane_linkGroup( hou.paneTabType.NetworkEditor ) parm_pane.setCurrentNode(node_create) # set display # wf_network_parm.flag_display () if connections : for connection in connections : node_up = connection.inputNode() node_dn = connection.outputNode() node_up_index = connection.outputIndex() node_dn_index = connection.inputIndex() node_create = node_dn.createInputNode(node_dn_index, type ) node_create.setNextInput(node_up, node_up_index) node_create.moveToGoodPosition(relative_to_inputs=False, move_inputs=False, move_outputs=True, move_unconnected=False) # set current parm_pane = wf_selection.pane_linkGroup( hou.paneTabType.NetworkEditor ) parm_pane.setCurrentNode(node_create) # set display # wf_network_parm.flag_display () def create_object_merge () : offsetx = 3 offsety = 0 color = hou.Color(0.0, 0.0, 0.0) for node_src in hou.selectedNodes() : name_src = node_src.name() posx = node_src.position()[0] + offsetx posy = node_src.position()[1] + offsety #create, name, pos container = node_src.parent().path() name_mrg = "IN_" + name_src node_mrg = hou.node(container).createNode('object_merge',name_mrg) node_mrg.setPosition( [posx,posy] ) #parm path_src = node_src.path() parm_path = node_mrg.parm("objpath1") parm_path.set(path_src) parm_transform = node_mrg.parm("xformtype") parm_transform.set(1) #setcol node_src.setColor(color) node_mrg.setColor(color) def recook_container () : container = wf_selection.parmnode() nodes = container.allSubChildren() for node in nodes : node.cook(force=True)