Python example scripts
Tools Shelf
Section titled “Tools Shelf”Create a Null and Merge
Section titled “Create a Null and Merge”Used to untangled networks
import hou
OFFSET = -1.0
# Process a single nodedef create_null_merge(node : hou.Node, base_name : str): node : hou.Node node_name: str = node.name() node_path : str = node.path() node_position = node.position() root: str = node_path[:node_path.rfind("/")] null_node : hou.Node = hou.node(root).createNode("null")
null_pos : hou.Vector2 = hou.Vector2(node_position[0], node_position[1] + OFFSET) null_node.setPosition(null_pos)
null_node.setInput(0, node) null_node.setName(base_name, unique_name=True)
merge_node :hou.Node = hou.node(root).createNode("object_merge") new_offset = OFFSET*2 merge_node_pos : hou.Vector2 = hou.Vector2(node_position[0], node_position[1] + new_offset) merge_node.setPosition(merge_node_pos) merge_node_name : str = f'merge_{base_name}'
merge_node.setName(merge_node_name, unique_name=True) rel_path : str = merge_node.relativePathTo(null_node) merge_node.parm("objpath1").set(rel_path)
# Mainnodes = hou.selectedNodes()
if (len(nodes) == 0): hou.ui.displayMessage("Please select a node") exit()
input : tuple = hou.ui.readInput("Enter Null node", initial_contents="Node name")base_name: strbase_idx : int
base_idx, base_name = input
if base_name == "": hou.ui.displayMessage("Empty name!") exit()
print(f'Using {base_name} for null node')
for node in nodes: create_null_merge(node, base_name)
print("Done")Reference: Step-by-Step Guide: How to Place Nodes in Houdini with Python