Compound proxies in ParaQ

From ParaQ Wiki
Jump to navigationJump to search

How to make and use compound filters in ParaQ

1. ParaQ doesn't have support yet for making compound filter definitions. Using the python client (pvpython) is currently the easiest way. An example script is:

# load paraview
from libvtkPVServerManagerPython import *
from libvtkPVServerCommonPython import *

# get proxy manager
pm = vtkSMObject.GetProxyManager()
# create elevation
elevation = pm.NewProxy("filters", "ElevationFilter")
pm.RegisterProxy("filters", "MyElevationFilter", elevation)

#create compound proxy
compound = vtkSMCompoundProxy()
# add elevation to compound proxy
compound.AddProxy("first", elevation)
# expose high point
compound.ExposeProperty("first", "HighPoint", "HighPoint")
# expose input for convenience in connecting pipeline
compound.ExposeProperty("first", "Input", "Input")
# write it out to stdout
definition = compound.SaveDefinition(None)
definition.PrintXML()

The result of that in a valid .xml file is:

<MyCompoundProxies>
  <CompoundProxyDefinition name="MyElevation">
    <CompoundProxy id="4">
      <ExposedProperties>
        <Property name="HighPoint" proxy_name="first" exposed_name="HighPoint"/>
        <Property name="Input" proxy_name="first" exposed_name="Input"/>
      </ExposedProperties>
      <Proxy group="filters" type="ElevationFilter" id="5" compound_name="first">
        <Property name="HighPoint" id="5.HighPoint" number_of_elements="3">
          <Element index="0" value="0"/>
          <Element index="1" value="0"/>
          <Element index="2" value="1"/>
        </Property>
        <Property name="Input" id="5.Input" number_of_elements="0">
          <Domain name="groups" id="5.Input.groups">
            <Group value="sources"/>
            <Group value="filters"/>
          </Domain>
          <Domain name="input_type" id="5.Input.input_type">
            <DataType value="vtkDataSet"/>
          </Domain>
        </Property>
        <Property name="LowPoint" id="5.LowPoint" number_of_elements="3">
          <Element index="0" value="0"/>
          <Element index="1" value="0"/>
          <Element index="2" value="0"/>
        </Property>
        <Property name="ScalarRange" id="5.ScalarRange" number_of_elements="2">
          <Element index="0" value="0"/>
          <Element index="1" value="1"/>
          <Domain name="range" id="5.ScalarRange.range"/>
        </Property>
      </Proxy>
    </CompoundProxy>
  </CompoundProxyDefinition>
</MyCompoundProxies>

2. Startup ParaQ and connect to a server.
3. Open the compound filter dialog from the tools menu.
4. Load an xml file and it shows up in the toolbar.
5. Use the toolbar items as the menu items for sources and filters is used.