Python Snippet (二)
// 函数定义时参数数量不定
1 def f(*args,**myvars): 2 print args 3 print myvars.items() 4 f(1,2,name = "Peng",nation = "China")
输出:
1 (1, 2) 2 [('name', 'Peng'), ('nation', 'China')]
一个星号,表示Position Argument,例如 f(1,2,name = "Peng",nation = "China")中的参数1,2; arge是个tuple.
两个星号,表示Key Argument, 比如 name = "Peng",nation = "China" ; myvars 是个字典。
Position Argument 需在Key Argument前面,比如这样写 def f(**myvars,*args) 这样会报错的。
# returns the file before last import commands path = '/Users/myuser/mydata/' c='ls -t '+path+'*.bgeo.sc | tail -2 | head -1' print commands.getstatusoutput(c)[1]
// 定义一个递归函数, 遍历返回节点的所有子节点。
def childrenOfNode(node): result = [] for c in node.children(): result.append(c) result += childrenOfNode(c) return result
执行结果
// Houdini 中 在NetworkEditor中鼠标指定位置创建节点
p = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) position = p.selectPosition() new_node = p.pwd().createNode("box") new_node.setPosition(position)
// 一键key帧 一键归0
添加2个Button参数,一个命名key ,一个zeroAll
![](https://img2023.cnblogs.com/blog/712917/202308/712917-20230830133419068-26091222.jpg)
![](https://img2023.cnblogs.com/blog/712917/202308/712917-20230830133903196-843416448.jpg)
def keyAll(): print("hello world") parms = hou.pwd().parms() k = hou.Keyframe() k.setSlopeAuto(True) k.setInSlopeAuto(True) for p in parms: if p.parmTemplate().type()==hou.parmTemplateType.Float: k.setValue(p.eval()) k.setFrame(hou.intFrame()) p.setKeyframe(k) def zeroAll(): parms = hou.pwd().parms() for p in parms: if p.parmTemplate().type()==hou.parmTemplateType.Float: p.deleteAllKeyframes() p.set(0.0)
// Houdini 里面选中的节点 输出到一个text里面
nodesel = hou.selectedNodes() file = open("D:\debug.txt","w") if len(nodesel)>0: for node in nodesel: path = node.path() file.write(path+"\n")
// 把text里面的节点在houdini里面Merge一起
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
file = open("D:\debug.txt","r") nodepath = file.read() paths = nodepath.split("\n") paths.pop(-1) net = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor) selpos = net.selectPosition() geo = net.pwd() merge = geo.createNode("merge","merge_all") idx = 0 for path in paths: name = path.split("/")[-1] objmerge = geo.createNode("object_merge","get_"+name) objmerge.parm("objpath1").set(path) objmerge.parm("xformtype").set(1) objmerge.setPosition([selpos[0]+idx*2,selpos[1]]) idx += 1 merge.setInput(idx,objmerge) merge.moveToGoodPosition() merge.setDisplayFlag(1) merge.setRenderFlag(1)