Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
21 kB
2
Indexable
Never
import sys
import toolutils

outputitem = None
inputindex = -1
inputitem = None
outputindex = -1

num_args = 1
h_extra_args = ''
pane = toolutils.activePane(kwargs)
if not isinstance(pane, hou.NetworkEditor):
    pane = hou.ui.paneTabOfType(hou.paneTabType.NetworkEditor)
    if pane is None:
       hou.ui.displayMessage(
               'Cannot create node: cannot find any network pane')
       sys.exit(0)
else: # We're creating this tool from the TAB menu inside a network editor
    pane_node = pane.pwd()
    if "outputnodename" in kwargs and "inputindex" in kwargs:
        outputitem = pane_node.item(kwargs["outputnodename"])
        inputindex = kwargs["inputindex"]
        h_extra_args += 'set arg4 = "' + kwargs["outputnodename"] + '"\n'
        h_extra_args += 'set arg5 = "' + str(inputindex) + '"\n'
        num_args = 6
    if "inputnodename" in kwargs and "outputindex" in kwargs:
        inputitem = pane_node.item(kwargs["inputnodename"])
        outputindex = kwargs["outputindex"]
        h_extra_args += 'set arg6 = "' + kwargs["inputnodename"] + '"\n'
        h_extra_args += 'set arg9 = "' + str(outputindex) + '"\n'
        num_args = 9
    if "autoplace" in kwargs:
        autoplace = kwargs["autoplace"]
    else:
        autoplace = False
    # If shift-clicked we want to auto append to the current
    # node
    if "shiftclick" in kwargs and kwargs["shiftclick"]:
        if inputitem is None:
            inputitem = pane.currentNode()
            outputindex = 0
    if "nodepositionx" in kwargs and             "nodepositiony" in kwargs:
        try:
            pos = [ float( kwargs["nodepositionx"] ),
                    float( kwargs["nodepositiony"] )]
        except:
            pos = None
    else:
        pos = None

    if not autoplace and not pane.listMode():
        if pos is not None:
            pass
        elif outputitem is None:
            pos = pane.selectPosition(inputitem, outputindex, None, -1)
        else:
            pos = pane.selectPosition(inputitem, outputindex,
                                      outputitem, inputindex)

    if pos is not None:
        if "node_bbox" in kwargs:
            size = kwargs["node_bbox"]
            pos[0] -= size[0] / 2
            pos[1] -= size[1] / 2
        else:
            pos[0] -= 0.573625
            pos[1] -= 0.220625
        h_extra_args += 'set arg2 = "' + str(pos[0]) + '"\n'
        h_extra_args += 'set arg3 = "' + str(pos[1]) + '"\n'
h_extra_args += 'set argc = "' + str(num_args) + '"\n'

pane_node = pane.pwd()
child_type = pane_node.childTypeCategory().nodeTypes()

if 'popwind' not in child_type:
   hou.ui.displayMessage(
           'Cannot create node: incompatible pane network type')
   sys.exit(0)

# First clear the node selection
pane_node.setSelected(False, True)

h_path = pane_node.path()
h_preamble = 'set arg1 = "' + h_path + '"\n'
h_cmd = r'''
if ($argc < 2 || "$arg2" == "") then
   set arg2 = 0
endif
if ($argc < 3 || "$arg3" == "") then
   set arg3 = 0
endif
# Automatically generated script
# $arg1 - the path to add this node
# $arg2 - x position of the tile
# $arg3 - y position of the tile
# $arg4 - input node to wire to
# $arg5 - which input to wire to
# $arg6 - output node to wire to
# $arg7 - the type of this node
# $arg8 - the node is an indirect input
# $arg9 - index of output from $arg6

\set noalias = 1
set saved_path = `execute("oppwf")`
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output (Dop/null)
set _obj_slide_test_vellumsolver2_dopnet1_forces_force_output = `run("opadd -e -n -v null force_output")`
oplocate -x `$arg2 + 0` -y `$arg3 + 0` $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opset -d on -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1 (Dop/vellumrestblend)
set _obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1 = `run("opadd -e -n -v vellumrestblend vellumrestblend1")`
oplocate -x `$arg2 + 0` -y `$arg3 + 6.2583000000000002` $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1
chblockbegin
chadd -t 0 0 $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1 activationframe
chkey -t 0 -v 0 -m 0 -a 0 -A 0 -T a  -F 'ch(opcreator(".")+"/startframe")' $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1/activationframe
chblockend
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1 updatemode ( perframe ) usegroup ( on ) partgroup ( tentacle_pts ) congroup ( 'tetstretch tetvol' ) restsource ( sop ) restsop ( ../../../../REST_GEO )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding (Dop/geometrywrangle)
set _obj_slide_test_vellumsolver2_dopnet1_forces_sliding = `run("opadd -e -n -v geometrywrangle sliding")`
oplocate -x `$arg2 + -0.0029999999999998916` -y `$arg3 + 5.2183999999999999` $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding  bindings ( 0 ) bindfield_num ( 0 ) groupbindings ( 0 )
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding bindgrouptype ( prims ) bindclass ( primitive ) snippet ( 'int pts[] = primpoints(0, @primnum);\nfloat s = 0;\n\nfloat npts = len(pts);\nforeach(int pt; pts){\n   s = max(s, point(1, "slide_mask", pt));\n}\n\n@slidingrate = s;\n//holding power for grippy areas\n@stiffness = 1e6 * (1-s);\n\n' ) bindgeo ( ConstraintGeometry ) bindinputmenu1 ( self ) binddopinput1 ( ConstraintGeometry ) bindinputmenu2 ( sop ) bindgeoinput2 ( ../../../../REST_GEO ) binddopinput2 ( '$OBJID/Geometry' ) bindgeoinput3 ( ../../../../REST_GEO )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir (Dop/visualizegeometry)
set _obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir = `run("opadd -e -n -v visualizegeometry visualize_local_v_dir")`
oplocate -x `$arg2 + 0` -y `$arg3 + 1.1027` $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opspareds '    parm {         name    "clear_visualizers"         baseparm         label   "Clear Previous Visualizers"         export  none     }     parm {         name    "bindgeo"         baseparm         label   "Geometry"         export  none     }     parm {         name    "node_vis_enabled"         label   "Visualization Enabled"         type    toggle         invisible         default { "1" }     }     multiparm {         name    "num_visualizers"         label    "Visualizers"         invisible         default 0         parmtag { "multistartoffset" "0" }          parm {             name    "vis_active#"             label   "Active #"             type    toggle             invisible             default { "0" }         }         parm {             name    "vis_data#"             label   "Raw Data #"             type    string             invisible             nolabel             default { "" }             parmtag { "editor" "1" }         }     }  ' $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir  num_visualizers ( 1 )
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir num_visualizers ( 1 ) vis_active0 ( on ) vis_data0 ( '{\n    "flags":{\n             "type":"int",\n         "value":27\n    },\n    "icon":{\n              "type":"string",\n              "value":"VIEW_visualization_color"\n    },\n    "label":{\n             "type":"string",\n              "value":"Color 1"\n     },\n    "name":{\n              "type":"string",\n              "value":"vis_color_1"\n },\n    "parameters":{\n                "type":"string",\n              "value":"{\\nversion 0.8\\nstyle\\t[ 0\\tlocks=0 ]\\t(\\t\\"vector\\"\\t)\\nclass\\t[ 0\\tlocks=0 ]\\t(\\t\\"point\\"\\t)\\nattrib\\t[ 0\\tlocks=0 ]\\t(\\tlocalvdir\\t)\\nvisibility\\t[ 0\\tlocks=0 ]\\t(\\t\\"always\\"\\t)\\ndecorradius\\t[ 0\\tlocks=0 ]\\t(\\t0.5\\t)\\ngroup\\t[ 0\\tlocks=0 ]\\t(\\t\\"\\"\\t)\\npointsize\\t[ 0\\tlocks=0 ]\\t(\\t3\\t)\\nlengthscale\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\nunitlength\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\nnormalize\\t[ 0\\tlocks=0 ]\\t(\\t\\"off\\"\\t)\\narrowheads\\t[ 0\\tlocks=0 ]\\t(\\t\\"off\\"\\t)\\nvectorcoloring\\t[ 0\\tlocks=0 ]\\t(\\t\\"fixed\\"\\t)\\ncolorattrib\\t[ 0\\tlocks=0 ]\\t(\\tCd\\t)\\nramptype\\t[ 0\\tlocks=0 ]\\t(\\t\\"false\\"\\t)\\ncolorramp\\t[ 0\\tlocks=0 ]\\t(\\t3\\t)\\nrangespec\\t[ 0\\tlocks=0 ]\\t(\\t\\"min-max\\"\\t)\\nminscalar\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nmaxscalar\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\ncenterscalar\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nwidthscalar\\t[ 0\\tlocks=0 ]\\t(\\t2\\t)\\nclamptype\\t[ 0\\tlocks=0 ]\\t(\\t\\"edge\\"\\t)\\ntreatasscalar\\t[ 0\\tlocks=0 ]\\t(\\t\\"off\\"\\t)\\nusing\\t[ 0\\tlocks=0 ]\\t(\\t\\"comp\\"\\t)\\ncomponent\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nrefvec\\t[ 0\\tlocks=0 ]\\t(\\t0\\t1\\t0\\t)\\nmarkercolor\\t[ 0\\tlocks=0 ]\\t(\\t0\\t1\\t0\\t1\\t)\\ntrail\\t[ 0\\tlocks=0 ]\\t(\\t1\\t1\\t0\\t0.5\\t)\\ntextcolor\\t[ 0\\tlocks=0 ]\\t(\\t0.25\\t0.75\\t0.75\\t)\\nfontsize\\t[ 0\\tlocks=0 ]\\t(\\t\\"guidefont\\"\\t)\\nxcolor\\t[ 0\\tlocks=0 ]\\t(\\t1\\t0\\t0\\t1\\t)\\nycolor\\t[ 0\\tlocks=0 ]\\t(\\t0\\t1\\t0\\t1\\t)\\nzcolor\\t[ 0\\tlocks=0 ]\\t(\\t0\\t0\\t1\\t1\\t)\\ncolorramp1pos\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\ncolorramp1c\\t[ 0\\tlocks=0 ]\\t(\\t0\\t0\\t1\\t)\\ncolorramp1interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\ncolorramp2pos\\t[ 0\\tlocks=0 ]\\t(\\t0.5\\t)\\ncolorramp2c\\t[ 0\\tlocks=0 ]\\t(\\t1\\t1\\t1\\t)\\ncolorramp2interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\ncolorramp3pos\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\ncolorramp3c\\t[ 0\\tlocks=0 ]\\t(\\t1\\t0\\t0\\t)\\ncolorramp3interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\n}\\n"},\n     \n      "scope":{\n             "type":"int",\n         "value":2\n     },\n    "type":{\n              "type":"string",\n              "value":"vis_marker"\n  }\n}\n' )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide (Dop/geometrywrangle)
set _obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide = `run("opadd -e -n -v geometrywrangle geometrywrangle_visualize_slide")`
oplocate -x `$arg2 + -0.0029999999999998916` -y `$arg3 + 3.1406000000000001` $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide  bindings ( 0 ) bindfield_num ( 0 ) groupbindings ( 0 )
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide bindgrouptype ( points ) snippet ( '\nf@viz_slidingrate = point(1, "slide_mask", @ptnum);\n' ) bindinputmenu1 ( self ) bindinputmenu2 ( sop ) bindgeoinput2 ( ../../../../REST_GEO ) binddopinput2 ( ConstraintGeometry )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate (Dop/visualizegeometry)
set _obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate = `run("opadd -e -n -v visualizegeometry visualize_sliding_rate")`
oplocate -x `$arg2 + 0` -y `$arg3 + 2.1027` $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opspareds '    parm {         name    "clear_visualizers"         baseparm         label   "Clear Previous Visualizers"         export  none     }     parm {         name    "bindgeo"         baseparm         label   "Geometry"         export  none     }     parm {         name    "node_vis_enabled"         label   "Visualization Enabled"         type    toggle         invisible         default { "1" }     }     multiparm {         name    "num_visualizers"         label    "Visualizers"         invisible         default 0         parmtag { "multistartoffset" "0" }          parm {             name    "vis_active#"             label   "Active #"             type    toggle             invisible             default { "0" }         }         parm {             name    "vis_data#"             label   "Raw Data #"             type    string             invisible             nolabel             default { "" }             parmtag { "editor" "1" }         }     }  ' $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate  num_visualizers ( 1 )
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate num_visualizers ( 1 ) vis_active0 ( on ) vis_data0 ( '{\n   "flags":{\n             "type":"int",\n         "value":27\n    },\n    "icon":{\n              "type":"string",\n              "value":"VIEW_visualization_color"\n    },\n    "label":{\n             "type":"string",\n              "value":"viz_slidingrate"\n     },\n    "name":{\n              "type":"string",\n              "value":"viz_slidingrate"\n     },\n    "parameters":{\n                "type":"string",\n              "value":"{\\nversion 0.8\\ncolortype\\t[ 0\\tlocks=0 ]\\t(\\t\\"attribramped\\"\\t)\\nclass\\t[ 0\\tlocks=0 ]\\t(\\t\\"point\\"\\t)\\nattrib\\t[ 0\\tlocks=0 ]\\t(\\tviz_slidingrate\\t)\\nuvattrib\\t[ 0\\tlocks=0 ]\\t(\\tuv\\t)\\ndistortiontype\\t[ 0\\tlocks=0 ]\\t(\\t\\"global\\"\\t)\\nrangesection\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nrangespec\\t[ 0\\tlocks=0 ]\\t(\\t\\"min-max\\"\\t)\\nminscalar\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nmaxscalar\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\ncenterscalar\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nwidthscalar\\t[ 0\\tlocks=0 ]\\t(\\t2\\t)\\nclamptype\\t[ 0\\tlocks=0 ]\\t(\\t\\"edge\\"\\t)\\nconstcolor\\t[ 0\\tlocks=0 ]\\t(\\t1\\t0\\t0\\t1\\t)\\nusethreevtxcolor\\t[ 0\\tlocks=0 ]\\t(\\t\\"on\\"\\t)\\ncolorthreevtx\\t[ 0\\tlocks=0 ]\\t(\\t1\\t1\\t0\\t)\\nusefourvtxcolor\\t[ 0\\tlocks=0 ]\\t(\\t\\"on\\"\\t)\\ncolorfourvtx\\t[ 0\\tlocks=0 ]\\t(\\t0.5\\t0.69999999999999996\\t1\\t)\\nusenvtxcolor\\t[ 0\\tlocks=0 ]\\t(\\t\\"on\\"\\t)\\ncolornvtx\\t[ 0\\tlocks=0 ]\\t(\\t1\\t0\\t0\\t)\\ntreatasscalar\\t[ 0\\tlocks=0 ]\\t(\\t\\"off\\"\\t)\\nusing\\t[ 0\\tlocks=0 ]\\t(\\t\\"comp\\"\\t)\\ncomponent\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nrefvec\\t[ 0\\tlocks=0 ]\\t(\\t0\\t1\\t0\\t)\\nrandseed\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\nvalsep\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\nrampsection\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\ncolorramppreset\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\ncolorramp\\t[ 0\\tlocks=0 ]\\t(\\t4\\t)\\ncolorramp1pos\\t[ 0\\tlocks=0 ]\\t(\\t0\\t)\\ncolorramp1c\\t[ 0\\tlocks=0 ]\\t(\\t0\\t0\\t0\\t)\\ncolorramp1interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\ncolorramp2pos\\t[ 0\\tlocks=0 ]\\t(\\t0.33333000540733337\\t)\\ncolorramp2c\\t[ 0\\tlocks=0 ]\\t(\\t1\\t0\\t0\\t)\\ncolorramp2interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\ncolorramp3pos\\t[ 0\\tlocks=0 ]\\t(\\t0.66667002439498901\\t)\\ncolorramp3c\\t[ 0\\tlocks=0 ]\\t(\\t1\\t1\\t0\\t)\\ncolorramp3interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\ncolorramp4pos\\t[ 0\\tlocks=0 ]\\t(\\t1\\t)\\ncolorramp4c\\t[ 0\\tlocks=0 ]\\t(\\t1\\t1\\t1\\t)\\ncolorramp4interp\\t[ 0\\tlocks=0 ]\\t(\\t\\"linear\\"\\t)\\n}\\n"},\n  \n      "scope":{\n             "type":"int",\n         "value":2\n     },\n    "type":{\n              "type":"string",\n              "value":"vis_color"\n   }\n}\n' )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opcf $arg1

# Node $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1 (Dop/popwind)
set _obj_slide_test_vellumsolver2_dopnet1_forces_popwind1 = `run("opadd -e -n -v popwind popwind1")`
oplocate -x `$arg2 + 0` -y `$arg3 + 4.1805000000000003` $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opparm $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1 uselocalwind ( on ) localwindexpression ( '#include <pbd_constraints.h>\n\nint prims[] = pointprims(1, @ptnum);\nint tet = -1;\nforeach(int prim; prims)\n{\n    string type = prim(1, "type", prim);\n    if (isTetARAP(type))\n    {\n        tet = prim;\n        break;\n    }\n}\nif (tet < 0)\n    return;\n\nvector4 quat = prim(1, "restvector", tet);\nvector localvdir = normalize(qrotate(quat, v@materialW));\n\nwind = localvdir * 10;\n\n\n// visualization attribute for local push direction\nsetpointattrib(geoself(), "localvdir", @ptnum, localvdir);\n\n\n' ) amp ( 2 ) swirlsize ( 0.25 ) swirlscale ( 1 1 0 ) offset ( -2 1 -0.5000000074505806 0.40000000596046448 ) bindinputmenu2 ( dopdata ) binddopinput2 ( '$OBJID/ConstraintGeometry' )
opset -d off -r off -h off -f off -y off -t off -l off -s off -u off -F on -c on -e on -b off $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opexprlanguage -s hscript $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opuserdata -n '___Version___' -v '' $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opuserdata -n '___toolcount___' -v '2' $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opuserdata -n '___toolid___' -v 'dynamics_popwind' $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
opset -p on $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1

opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
opcf $arg1
opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_vellumrestblend1 -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding
opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_local_v_dir
opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1 -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide
opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_geometrywrangle_visualize_slide -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_visualize_sliding_rate
opcf $arg1
opwire -n $_obj_slide_test_vellumsolver2_dopnet1_forces_sliding -0 $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1

set oidx = 0
if ($argc >= 9 && "$arg9" != "") then
    set oidx = $arg9
endif

if ($argc >= 5 && "$arg4" != "") then
    set output = $_obj_slide_test_vellumsolver2_dopnet1_forces_popwind1
    opwire -n $output -$arg5 $arg4
endif
if ($argc >= 6 && "$arg6" != "") then
    set input = $_obj_slide_test_vellumsolver2_dopnet1_forces_force_output
    if ($arg8) then
        opwire -n -i $arg6 -0 $input
    else
        opwire -n -o $oidx $arg6 -0 $input
    endif
endif
opcf $saved_path
'''
hou.hscript(h_preamble + h_extra_args + h_cmd)