I am building kind of "archetype" node types, and adding my custom Parm Folders before the initial default Folders:
# group initial parms PTG_initial = node_target.parmTemplateGroup() PTG_new = hou.ParmTemplateGroup() entries = PTG_initial.entries() FOLDER_init = hou.FolderParmTemplate("folder", "Initial Parms") FOLDER_init.setFolderType(hou.folderType.Tabs) for entry in entries : FOLDER_init.addParmTemplate(entry) PTG_new.append(FOLDER_init) node_target.setParmTemplateGroup(PTG_new) # copy parms which_folder = "JOB" insert_before_folder = "Initial Parms" node_src = node_archetype node_dst = node_target copypaste_ptg_folder( which_folder, insert_before_folder, node_src, node_dst )
Here is the copypaste_ptg_folder() definition:
def copypaste_ptg_folder( which_folder, insert_before_folder, node_src, node_dst ) : ptg_dst = node_dst.parmTemplateGroup() ptg_src = node_src.parmTemplateGroup() # remove target folder if already exists try: ptg_dst.remove( ptg_dst.findFolder( which_folder ) ) node_dst.setParmTemplateGroup(ptg_dst) except: pass # find and insert the folder, set PTG cargo = ptg_src.findFolder( which_folder ) location = ptg_dst.findFolder( insert_before_folder ) ptg_dst.insertBefore( location , cargo ) node_dst.setParmTemplateGroup(ptg_dst)
Here is the use of saveItemsToFile()
def copypaste_all_contents( container_src, container_dst ) : # copy contents temp_path = hou.getenv("wf_path") + "/temp/__archetype.temp" items = container_src.allItems() container_src.saveItemsToFile(items, temp_path) # paste contents container_dst.loadItemsFromFile(temp_path)