Initial commit using Python-based Superquadric Source Example
This commit is contained in:
commit
07163d86bb
1 changed files with 66 additions and 0 deletions
66
paraview-dns-data-reader.py
Normal file
66
paraview-dns-data-reader.py
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# same imports as earlier.
|
||||||
|
from vtkmodules.vtkCommonDataModel import vtkDataSet
|
||||||
|
from vtkmodules.util.vtkAlgorithm import VTKPythonAlgorithmBase
|
||||||
|
from vtkmodules.numpy_interface import dataset_adapter as dsa
|
||||||
|
|
||||||
|
# new module for ParaView-specific decorators.
|
||||||
|
from paraview.util.vtkAlgorithm import smproxy, smproperty, smdomain
|
||||||
|
|
||||||
|
# to add a source, instead of a filter, use the `smproxy.source` decorator.
|
||||||
|
@smproxy.source(label="Python-based Superquadric Source Example")
|
||||||
|
class PythonSuperquadricSource(VTKPythonAlgorithmBase):
|
||||||
|
"""This is dummy VTKPythonAlgorithmBase subclass that
|
||||||
|
simply puts out a Superquadric poly data using a vtkSuperquadricSource
|
||||||
|
internally"""
|
||||||
|
def __init__(self):
|
||||||
|
VTKPythonAlgorithmBase.__init__(self,
|
||||||
|
nInputPorts=0,
|
||||||
|
nOutputPorts=1,
|
||||||
|
outputType='vtkPolyData')
|
||||||
|
from vtkmodules.vtkFiltersSources import vtkSuperquadricSource
|
||||||
|
self._realAlgorithm = vtkSuperquadricSource()
|
||||||
|
|
||||||
|
def RequestData(self, request, inInfo, outInfo):
|
||||||
|
from vtkmodules.vtkCommonDataModel import vtkPolyData
|
||||||
|
self._realAlgorithm.Update()
|
||||||
|
output = vtkPolyData.GetData(outInfo, 0)
|
||||||
|
output.ShallowCopy(self._realAlgorithm.GetOutput())
|
||||||
|
return 1
|
||||||
|
|
||||||
|
# for anything too complex or not yet supported, you can explicitly
|
||||||
|
# provide the XML for the method.
|
||||||
|
@smproperty.xml("""
|
||||||
|
<DoubleVectorProperty name="Center"
|
||||||
|
number_of_elements="3"
|
||||||
|
default_values="0 0 0"
|
||||||
|
command="SetCenter">
|
||||||
|
<DoubleRangeDomain name="range" />
|
||||||
|
<Documentation>Set center of the superquadric</Documentation>
|
||||||
|
</DoubleVectorProperty>""")
|
||||||
|
def SetCenter(self, x, y, z):
|
||||||
|
self._realAlgorithm.SetCenter(x,y,z)
|
||||||
|
self.Modified()
|
||||||
|
|
||||||
|
# In most cases, one can simply use available decorators.
|
||||||
|
@smproperty.doublevector(name="Scale", default_values=[1, 1, 1])
|
||||||
|
@smdomain.doublerange()
|
||||||
|
def SetScale(self, x, y, z):
|
||||||
|
self._realAlgorithm.SetScale(x,y,z)
|
||||||
|
self.Modified()
|
||||||
|
|
||||||
|
@smproperty.intvector(name="ThetaResolution", default_values=16)
|
||||||
|
def SetThetaResolution(self, x):
|
||||||
|
self._realAlgorithm.SetThetaResolution(x)
|
||||||
|
self.Modified()
|
||||||
|
|
||||||
|
@smproperty.intvector(name="PhiResolution", default_values=16)
|
||||||
|
@smdomain.intrange(min=0, max=1000)
|
||||||
|
def SetPhiResolution(self, x):
|
||||||
|
self._realAlgorithm.SetPhiResolution(x)
|
||||||
|
self.Modified()
|
||||||
|
|
||||||
|
@smproperty.doublevector(name="Thickness", default_values=0.3333)
|
||||||
|
@smdomain.doublerange(min=1e-24, max=1.0)
|
||||||
|
def SetThickness(self, x):
|
||||||
|
self._realAlgorithm.SetThickness(x)
|
||||||
|
self.Modified()
|
||||||
Loading…
Add table
Reference in a new issue