Parm Menu Scripts


PARMmenu.xml

<?xml version="1.0" encoding="UTF-8"?>
<menuDocument>
<menu>
<separatorItem></separatorItem>
<scriptItem id="key_baker">
<label>Key Baker</label>
<scriptPath>$HOME/houdini15.5/scripts/Parm Insert.py</scriptPath>
</scriptItem>
</menu>
</menuDocument>

Key Baker

parm = kwargs["parms"]
framerange = range(int(hou.expandString('$RFSTART')), int(hou.expandString('$RFEND')) + 1 )
for i in parm:
  keyVals = {}
  for kf in framerange:
      keyVals[kf] = i.evalAtFrame(kf)
  i.deleteAllKeyframes()
  for kf in framerange:
      setKey = hou.Keyframe()
      setKey.setFrame(kf)
      setKey.setValue( keyVals[kf] )
      i.setKeyframe(setKey)

Parm Layout Up

from PySide import QtCore
from PySide import QtGui
parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()
class Example(QtGui.QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()
   
    def initUI(self):
        Lbox = QtGui.QVBoxLayout()
       
        mpos = QtGui.QCursor().pos()
        self.setGeometry(mpos.x() - 100 ,mpos.y() - 200 ,250,120)
        self.setWindowTitle('Parm Up & Down')
       
        self.checkBox = QtGui.QCheckBox('Keep in Current Folder', self)
        Lbox.addWidget(self.checkBox)   
       
        upButton = QtGui.QPushButton('Up', self)
        Lbox.addWidget(upButton)
        upButton.clicked.connect( self.upButtonPress )
       
        downButton = QtGui.QPushButton('Down', self)
        Lbox.addWidget(downButton)
        downButton.clicked.connect( self.downButtonPress )
       
        self.setLayout(Lbox)
       
    def HierarchyIndexies(self):
        return parmGroup.findIndices(parmTmp)
       
    def HierarchyFolders(self):
        curFolder = parmGroup
        parmHierarchy = [curFolder]
        for i in self.HierarchyIndexies():
            curItem = curFolder.parmTemplates()[i]
            if curItem.type().name() == "Folder":
                curFolder = curItem
                parmHierarchy.append(curItem)
        return parmHierarchy
       
    def upButtonPress(self):
        index = self.HierarchyIndexies()[-1]
        folder = self.HierarchyFolders()[-1]
        if index == 0:
            parmNext = folder
        else:
            parmNext = folder.parmTemplates()[index-1]
       
        if not (index == 0 and self.checkBox.isChecked()):
            parmGroup.remove(parmTmp)
            parmRef = parmGroup.find(parmNext.name())
            if index != 0 and parmRef.type().name() == "Folder" and not self.checkBox.isChecked():
                parmGroup.appendToFolder(parmRef,parmTmp)
            else:
                parmGroup.insertBefore(parmRef,parmTmp)
            node.setParmTemplateGroup(parmGroup)
   
    def downButtonPress(self):
        index = self.HierarchyIndexies()[-1]
        folder = self.HierarchyFolders()[-1]
        folNum = len(folder.parmTemplates())-1
        if index == folNum:
            parmNext = folder
        else:
            parmNext = folder.parmTemplates()[index+1]
       
        if not (index == folNum and self.checkBox.isChecked()):
            parmGroup.remove(parmTmp)
            parmRef = parmGroup.find(parmNext.name())
            if index != folNum and parmRef.type().name() == "Folder" and not self.checkBox.isChecked():
                if len(parmRef.parmTemplates()) != 0:
                    parmGroup.insertBefore(parmRef.parmTemplates()[0],parmTmp)
                else:
                    parmGroup.appendToFolder(parmRef,parmTmp)
            else:
                parmGroup.insertAfter(parmRef,parmTmp)
            node.setParmTemplateGroup(parmGroup)
dialog = Example()
dialog.show()

Parm Insert

parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()

newParm = hou.FloatParmTemplate("newParm", "NewParm", 1)
parmGroup.insertAfter(parmTmp,newParm)
node.setParmTemplateGroup(parmGroup)

Parm Insert(PySide)

from PySide import QtCore
from PySide import QtGui
parm = kwargs["parms"][0]
parmTmp = parm.parmTemplate()
node = parm.node()
parmGroup = node.parmTemplateGroup()
class Panel(QtGui.QWidget):
    def __init__(self):
        super(Panel, self).__init__()
        self.initUI()
       
    def initUI(self):
        Lbox = QtGui.QGridLayout()
        mpos = QtGui.QCursor().pos()
        self.setGeometry(mpos.x() - 100 ,mpos.y() - 200 ,250,120)
        self.setWindowTitle('Parm Insert')
           
        label_Name = QtGui.QLabel('Name:')
        Lbox.addWidget(label_Name,0,0)
        label_Label = QtGui.QLabel('Label:')
        Lbox.addWidget(label_Label,1,0)
        Type_Label = QtGui.QLabel('Type:')
        Lbox.addWidget(Type_Label,2,0)
       
        text_Name = QtGui.QLineEdit("newParm",self)
        text_Name.textChanged.connect(lambda: self.onTextChanged( text_Name, text_Label ) )
        Lbox.addWidget(text_Name,0,1)
        text_Label = QtGui.QLineEdit("newLabel",self)
        Lbox.addWidget(text_Label,1,1)
        parmType = QtGui.QComboBox(self)
        parmType.addItems(["Float","Vector","Int","String","Ramp_Float", "Ramp_Color"])
        Lbox.addWidget(parmType,2,1)
        button = QtGui.QPushButton("Create Parm" , self)
        button.clicked.connect(lambda: self.pressButton( text_Name.text(),text_Label.text(), parmType.currentText() ) )
        Lbox.addWidget(button,3,1)
        self.onTextChanged( text_Name, text_Label )       
        self.setLayout(Lbox)
   
    def pressButton(self, name, label, ptype):
        if not parmGroup.find(name):
            if ptype == "Float":
                newParm = hou.FloatParmTemplate(name, label, 1)
            elif ptype == "Vector":
                newParm = hou.FloatParmTemplate(name, label, 3)
            elif ptype == "Int":
                newParm = hou.IntParmTemplate(name, label, 1)
            elif ptype == "String":
                newParm = hou.StringParmTemplate(name, label, 1)
            elif ptype == "Ramp_Float":
                newParm = hou.RampParmTemplate(name, label, ramp_parm_type=hou.rampParmType.Float)
            elif ptype == "Ramp_Color":
                newParm = hou.RampParmTemplate(name, label, ramp_parm_type=hou.rampParmType.Color)
            parmGroup.insertAfter(parmTmp,newParm)
            node.setParmTemplateGroup(parmGroup)
        else:
            msgBox = QtGui.QMessageBox(self)
            msgBox.setText( 'F**k! "%s" is Already Exist' % name)
            msgBox.show();
        self.close()
   
    def onTextChanged(self , name, label):
        if not parmGroup.find(name.text()):
            name.setStyleSheet("background-color: rgb(255, 255, 255);")
        else:
            name.setStyleSheet("background-color: rgb(255, 107, 107);")
        text = name.text()
        label.setText( text[0].upper() + text[1:] )
dialog = Panel()
dialog.show()

Make Selection List of the polygon number

import toolutils
viewer = toolutils.sceneViewer()
geo = viewer.selectGeometry()
parm = kwargs["parms"][0]
parm.set(str(geo))