一.跳转到材质
- #Import Modules
- import toolutils
- import hou
-
- #Set Variables
- selected_node = ""
-
- #Define type arrays
- MAT_Detect = ["redshift::Material","redshift_vopnet","principledshader::2.0","materialbuilder","arnold::standard_surface", "arnold_materialbuilder"]
- Sel_Detect = ["geo","instance"]
-
- #Get the Selected Nodes
- selected = hou.selectedNodes()
-
- #Check if there is something selected
- if selected:
- #Compare first selected objects type with the valid object types
- if selected[0].type().name() in Sel_Detect:
- #Set the selected node. Just the fist is valid
- selected_node = selected[0]
- #Force the user to select an object, if the current doesn't match the selection type
- else:
- #Clear the selection
- hou.clearAllSelected()
- #Promt the user to select an new object
- prompt = toolutils.selectionPrompt(hou.objNodeTypeCategory())
- scene_viewer = toolutils.sceneViewer()
- selected_objects = scene_viewer.selectObjects(prompt)
- #Check if an object is selected
- if selected_objects:
- #Set the first selected node to variable
- selected_node = selected_objects[0]
- else:
- #Output an Error
- hou.ui.displayMessage("Nothing Selected")
- #Force the user to select an object, because nothing is selected
- else:
- #Promt the user to select an new object
- prompt = toolutils.selectionPrompt(hou.objNodeTypeCategory())
- scene_viewer = toolutils.sceneViewer()
- selected_objects = scene_viewer.selectObjects(prompt)
- #Check if an object is selected
- if selected_objects:
- #Set the first selected node to variable
- selected_node = selected_objects[0]
- else:
- #Output an Error
- hou.ui.displayMessage("Nothing Selected")
-
- #Check if the selected_node variable is not empty
- if selected_node:
- #Compare selected_node's type with the valid object types
- if selected_node.type().name() not in MAT_Detect :
- #Convert Releative Pathes to Absolute Pathes
- matPath = selected_node.parm("shop_materialpath").eval()
- #Set the targetpath to the node variable
- node = selected_node.node(matPath)
- #Check if node is valid
- if node:
- #Look for child Objects
- if node.children():
- #If there are children, replace node with the fist child
- node = node.children()[0]
- else:
- #Output an Error
- hou.ui.displayMessage("Empty material path")
-
- else:
- node = selected_node
- #Look for child Objects
- if node.children():
- node = node.children()[0]
-
- #Check if the material node exists
- if node:
- #Set some Variables
- pane = ""
- index = 0
- #Loop over the active panes
- while pane is not None:
- #Search for the first network editor
- pane = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor, index)
- #Loop over the panes
- if pane is not None:
- #Get the current state
- ID = pane.linkGroup()
- #Looking for Linkgroup1
- if str(ID) == "paneLinkType.Group1":
- targetPane = pane
- switchorselect = 1
- #Looking for FollowSelection
- if str(ID) == "paneLinkType.FollowSelection":
- targetPane = pane
- switchorselect = 0
- #Looking for Pinned
- if str(ID) == "paneLinkType.Pinned":
- targetPane = pane
- switchorselect = 2
- index += 1
-
- #If there is a PaneType Group1
- if switchorselect == 1:
- #Set the current Node
- targetPane.setCurrentNode(node)
- #If the PaneTypeState is set to Follow selection
- if switchorselect == 0:
- #Selet the material
- node.setSelected(True, clear_all_selected=True)
- #If the PaneTypeState is set to Pinned
- if switchorselect == 2:
- #Retun an errror
- hou.ui.displayMessage("The PaneType is set to Pinned")
二. 选择当前节点跳转到引用此节点参数的节点
- sel = hou.selectedNodes()[0]
- sel.setSelected(False)
- ref = sel.parmsReferencingThis()
- if len(ref) == 1:
- target = ref[0].node()
- elif len(ref) >1:
- list = []
- for i in ref:
- list.append(i.node().path())
- path = hou.ui.selectFromList(list, message='to Jamp referencing Node')
- print (path)
- target = ref[path[0]].node()
- else:
- target = sel
- target.setSelected(True)
- p = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor)
- p.setCurrentNode(target)
- p.homeToSelection()
-
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
说道:顶呱呱