How to add a custom array to a polydata in paraview?

前端 未结 2 1925
南笙
南笙 2021-01-13 20:56

I know that I can use the Calculator filter for operations on arrays, but I want to perform some more complicated computations. I managed to do it in Paraview python shell,

相关标签:
2条回答
  • 2021-01-13 21:08

    The method which works better with the pipeline is using a programmable filter. (related: Paraview Python -- Reverse operation to servermanager.Fetch()? )

    For saving the new polydata to file: (discovered thanks to http://markmail.org/message/4kp7cxl2ani25cak when importing all ctk modules)

    from paraview.vtk.vtkIOLegacy import *
    writer = vtkPolyDataWriter()
    .....
    

    A more "rough" method is to export the data as csv using numpy.savetxt , then reading the csv and apply the TableToPoints filter or Python scripting.

    It could be possible to use TrivialProducer and GetClientSideObject when client and server share the same memory space (with the builtin server) as explained here http://public.kitware.com/pipermail/paraview/2011-February/020120.html , but I haven't tried it

    0 讨论(0)
  • 2021-01-13 21:20

    Better approach would be use the Programmable Filter to add the array to your input dataset. In ParaView 4.1, the following script can be added to the Script on Properties panel for the Programmager Filter

    polydata = output
    array = vtk.vtkIntArray()
    array.SetNumberOfComponents(0)
    array.SetName("regionsize")
    for i in range(polydata .GetNumberOfPoints()):
        array.InsertNextValue(somecomputedvalue)
    polydata.GetPointData().AddArray(array);
    
    0 讨论(0)
提交回复
热议问题