Saturday, March 25, 2017

Python: copy paste buffer

Seems like PyQt4 is the ideal way to go:

Two styles:
##how to get something into the clipboard / copy/paste buffer
from PyQt4 import QtGui
QtGui.QApplication.clipboard().setText(textString)

##and to get it back out
text = QtGui.QApplication.clipboard().text()

##but it will be a QString so you'll probably want to 
textString = str(text)


In some cases PyQt4 seems to be crippled, so you can also use Tkinter, which seems to work well for extracting from clipboard. Haven't had luck putting stuff in though:
import Tkinter
root = Tkinter.Tk()
root.withdraw() # Hide the main window (optional)
rawClip = root.clipboard_get()

Saturday, March 11, 2017

Nukia - smarter switch

Use in text node to find what Switch1 Reads are looking at. [lindex [split [file tail [value [value Switch1.input[expr int([value Switch1.which])].name].file]] -] 0] or lol.. [lindex [split [file tail [value [value [value this.input0.name].input[expr int([value [value this.input0.name].which])].name].file]] -] 0] This is also useful. Root dir: [file dirname [knob [topnode].file] ] File name: [file tail [knob [topnode].file] ] File extension: [file extension [knob [topnode].file] ]

Friday, March 10, 2017

Houville :: rop presets

nodePath = ropnet.createNode('ifd',node_name).path()
hscript = "oppresetloadfile %s %s" % (nodePath, "niceRopLayout.preset")
hou.hscript(hscript)

Friday, March 3, 2017

Houville :: put points in the centre of prims

Points in centre of prim, and delete points:
addpoint(0, @P);
removeprim(0, @primnum, 1);


==EDIT== Just realised it can be handy to pull attributes from the prim on to the newly created points in the same primwrangle.
Here's how:
int newPt = addpoint(0, @P);
addpointattrib(0,"N",{0,0,0});
setpointattrib(0,"N", newPt, @N, "add");
removeprim(0, @primnum, 1);

Sunday, February 19, 2017

Houville :: copying nodes from one part of network to another

Yup, this might come in handy too:
hou.copyNodesTo(hou.node('/obj/mySubnet').glob('*'),hou.node('/obj'))


Houville :: adding params to a obj

Another one I keep forgetting... Here's how to add params to a node in houdini.
n = hou.node('/obj/geo1')
n.addSpareParmTuple(hou.IntParmTemplate('intParm','',1, default_value=(10,),min = 0, max = 20))
n.addSpareParmTuple(hou.FloatParmTemplate('floatParm','',1, default_value=(10,),min = 0, max = 20))


#define some multi line code.  Like a python script
code = """print 'some stuff'
print 'more stuffs'
print 'an\\\\' ting'"""

# is hidden is good for hiding code away
n.addSpareParmTuple(hou.StringParmTemplate('stringParm','',1,default_value=(code,), is_hidden=0))
n.addSpareParmTuple(hou.ButtonParmTemplate('Button','', join_with_next=0, script_callback='exec(hou.parm("stringParm").evalAsString())', script_callback_language=hou.scriptLanguage.Python))

And when you want to delete some parms, remember to get rid of the tuple.  You can access that easily like this:
n.removeSpareParmTuple(n.parm('stringParm').tuple())

And finally, if you don't want to add params one by one you can make a Parameter Template Group to then add as a lump later.
ptg = n.parmTemplateGroup()
ptg.append(hou.IntParmTemplate('intParm','',1, default_value=(10,),min = 0, max = 20))
n.setParmTemplateGroup(ptg)

Not quite sure yet why this is better, but I'll probably find out one day.

Monday, January 23, 2017

Retro bunker


https://omgfacts.com/this-70s-style-bunker-is-part-creepy-part-awesome-c13a7a87e088#.7pi0s2sdg