Thanks for answering! The surface actor update every second，but drawing lines costs 0.5 second（when using vtkIntersectionPolyDataFilter）,vtkProjectedTerrainPath maybe a better way, but I don’t know how to
There is one Python example, it didn’t look too mysterious. The author created a polyline, terrainPaths and set it as the input data. They then went on to use the Mt. St. Helens data as the source connection. I haven’t tried this yet, and I gather that there are several modes that can be used.
Most of the time users wants to have an editable curve, not just one that can only be drawn once. So, I would recommend what we do in 3D Slicer: specify a curve by dropping (and moving) control points on the surface and project the interpolated curve points to the surface.
It is all implemented with VTK-based classes here. The curve generator and projection classes are in the MRML folder.