OTL Python Modules

To call back

kwargs["node"].hdaModule().somethingDefName()

Get and Set Geometry info

def test():

geo = hou.pwd().geometry()

bbox = geo.boundingBox().minvec() ###min = minvec(), max = maxvec(). size = sizevec(), center = center()

detail = geo.attribValue("attributeName")

Get and Set Parameter info

def test():

floatparm = hou.Node.evalParm(hou.pwd(), "parm")

vecterParm = hou.Node.evalParmTuple(hou.pwd(), "t") ###You can use it for multiple value

hou.Node.parm(hou.pwd(),"rx").set(50) ###set parameters

hou.Node.parmTuple(hou.pwd(),"r").set([50,50,50]) ###set parameters

Make New Node the example makes object_merge node and merge something from inside of the otl.

def makeMerges(mergeNode,offsetX,offsetY):

node = hou.pwd()

error = ""

pos = node.position()

parent = node.parent()

name = node.name() + "_" + mergeNode + "_merge"

for child in parent.children():

if name == child.name():

error = "ERROR :: Merge Node already exists"

if error:

hou.ui.displayMessage(error)

return 0

merge = parent.createNode("object_merge",name)

merge.move(hou.Vector2(pos[0]+offsetX,pos[1]+offsetY))

merge.parm("objpath1").set(node.path() + "/" + mergeNode)

Copy Rop Nodes

def createmantra():

curROPs = hou.node( hou.pwd().path() + '/ropnet1' ).children()

newROPs = hou.copyNodesTo( curROPs , hou.node('/out') )

for rop in newROPs:

if rop.name() == "ropName":

rop.parm("mantra1_forceobject").set(hou.pwd().name() + "/nodeNameInside")