I made a script, which recursively iterates down the network, over all the selected nodes' outputs and dependents. I use it to find all the Filecache SOP nodes (just not to overlook something). It can be also used to generate TOP chain.
import wf_network_utils reload(wf_network_utils) # ------------------- # iteration def fc_iterate_downstream (node,go_below_fc) : global dependents global filecaches candidates = list(set( node.outputs() + node.dependents() )) for candidate in candidates : if candidate not in dependents : dependents.append(candidate) # candidate is filecache if candidate.type().name() == "filecache" : filecaches.append(candidate) # go below this filecache if go_below_fc == True : fc_iterate_downstream(candidate,go_below_fc) # candidate is not a filecache else: fc_iterate_downstream(candidate,go_below_fc) # If candidate's parent is a dopnet, check also dopnet, # because Dop I/O is dependent on Dop Object, # which is often independent. parent = candidate.parent() if parent.type().name() == "dopnet" : if parent not in dependents : dependents.append(parent) fc_iterate_downstream(parent,go_below_fc) # ------------------- # init lists dependents = [] filecaches = [] node = hou.selectedNodes()[0] go_below_fc = True # iterate fc_iterate_downstream(node, go_below_fc) # print list and copy to clipboard wf_network_utils.fc_list_print(filecaches)
def fc_list_print (filecaches) : import wf_network_ui reload(wf_network_ui) # remove duplicates filecaches = list(dict.fromkeys(filecaches)) # create search pattern print '\n------- found: -------' pattern = '' pattern_count = 0 for fc in filecaches : # set session Id session_id = fc.sessionId() wf_network_ui.parm_create (fc, "integer", "session_id", "session_id") wf_network_ui.parm_update (fc, "integer", "session_id", hidden="True") fc.parm("session_id").set(session_id) # create search pattern if pattern_count > 0 : pattern += ' | ' pattern += "session_id" + '=' + str(session_id) + '' pattern_count += 1 print 'FILECACHE: ' + str(fc.path()) + '' hou.ui.copyTextToClipboard(pattern) print '--------------------------'