Extract surface and keep numbering

Hi there,

from what I’ve seen, ExtractSurface renumbers the vertices of the mesh. I’d like to find a way to keep the initial number of the nodes from the full 3D mesh. It could be by creating blocks (1 with the inner volume, 1 with the outer surface), or just assigning flags to vertices… any idea how to do that in ParaView?

Thanks !

I believe the easiest solution is for you to create a field that contains the id of each point in the mesh. Then when you run Extract Surface, the field of ids will be permuted appropriately. The easiest way to create ids for points (and cells) is to use the Generate Ids filter.

So, to run Extract Surface while preserving the initial point ids, do the following.

  1. Add the Generate Ids filter. Apply.
  2. Add the Extract Surface filter. Apply.

The result of Extract Surface will have a point id field containing the original point ids.

Hi Kenneth, this is exactly the kind of things I was looking for, thank you!
Now i’m trying to access the node coordinates and IDs through Python.

Can you explain what you are trying to do with the data ?

Hi Mathieu, sure.

I want to import vtu meshes into Blender. I want to work either with the 3D models I have, or just the extracted surfaces. I do that using the x3d file format which preserves the node numbering, in order to deform the mesh in Blender according to the simulation results. Volumic datasets work OK, but I had trouble extracting the surfaces with the correct node numbering.
Now I want to pipeline all the different tools into a single script, that’s why I’m trying to access the IDs in ParaView through the Python API.

Does it make more sense now? Cheers.

If you want to save your data as a specific format, not yet supported by ParaView, and you want to write in python, you should use a python programmable filter.


That sounds like a good way for me to do it, thanks. I need to get more familiar again with the way to access data of objects but that will do the job, thanks !