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
 
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一起

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)
View Code

 

 

 

 


posted @ 2018-02-25 06:20  鹏_VFX  阅读(397)  评论(0编辑  收藏  举报