Merge Objects into new Geometry

Hey! long time no post. But, now it’s time to post some stuff again. The first small script I want to share is a script, that has been handy during the last productions. It merges a geo object selection to an new geo and adds it’s material as primitive material. Maybe you were asking, why we sometimes are working like this. Houdini doesn’t display instanced subnets in the viewport and redshift doesn’t render instanced subnets. This is a workaround to fully instance subnet/objects in the viewport and at rendertime. Sure this is just a workflow for small assets, but for smaller products that need to be instanced this can be a solution. Also If you have to do some multi object editing. :).

import hou

#Get Houdini Selection
oSelection = hou.selectedItems()
#Create an empty List
oAllObjsforSubnet = []
#Create an empty Counter
counter = 0

#Check if the selection is empty
if oSelection:
    #The the obj context to the variable obj
    obj = hou.node("/obj")
    #create a new Geo Node on /obj level
    newNode = obj.createNode("geo", str("merged_geo"))
    #Delete the build in File node of the new Geo
    #Create the hero merge node
    oMergeNode = newNode.createNode("merge")
    #Loop over the selected node
    for oNode in oSelection:
        #Check if the type is geo
        if oNode.type().name() == "geo":
            #Create an Obeject Merge node
            currentOBJMerge = newNode.createNode("object_merge")
            #Set the path to the base obj
            #Check if there is an Material assigned
            if(oNode.evalParm("shop_materialpath") != ""):
                #Create a SOP materail node
                currentMaterial = newNode.createNode("material")
                #Convert relative Pathes to absolute pathes
                relPath = oNode.evalParm("shop_materialpath")
                relNode = oNode.node(relPath)
                fullpath = relNode.path()
                #Fill in the right materail path
                #Connect the current obj merge node the the materail node
                #Connect the material node the the hero merge node
            #If there is no Material assigned
                #Connect the Object Merge to the 
            #Increase the ounter, for the next merge node port
            counter +=1
    #Set the diplay Flag