<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY style="MARGIN: 4px 4px 1px; FONT: 10pt Tahoma">
<DIV>Malcolm,</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks for your help, once I figured out some basic vtk'isms your suggestion worked well, albeit roads are sometimes elevated, and/or disappear through my surface (see the below pipeline).&nbsp; Now I need to figure out how to split my road (line segments) into polylines that intersect with my&nbsp;2D&nbsp;mesh so that the probing produces better results.&nbsp; Does anyone have some hints on how to do this?&nbsp; I was naively thinking of the following:</DIV>
<DIV>&nbsp;</DIV>
<DIV>create an empty 2d polydata set -&gt; call this NEW</DIV>
<DIV>for each 2d line segment in my&nbsp; 2d polydata</DIV>
<DIV>&nbsp;&nbsp;&nbsp; for each line in 3d mesh</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if intersection</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create new line segment</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add new line segment to NEW</DIV>
<DIV>&nbsp;</DIV>
<DIV>Then use NEW with the pipeline below insead of Shape2D:</DIV>
<DIV>&nbsp;</DIV>
<DIV>// get the evalation scalars</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;float bounds[6];<BR>&nbsp;Mesh3D-&gt;GetBounds(bounds);</DIV>
<DIV>&nbsp;vtkElevationFilter *Elevation = vtkElevationFilter::New();<BR>&nbsp;Elevation-&gt;SetInput(Mesh3D);<BR>&nbsp;Elevation-&gt;SetLowPoint(0,0,bounds[4]);<BR>&nbsp;Elevation-&gt;SetHighPoint(0,0,bounds[5]);<BR>&nbsp;Elevation-&gt;SetScalarRange(bounds[4], bounds[5]);<BR>&nbsp;Elevation-&gt;Update();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;// convert our 3d mesh to 2d</DIV>
<DIV>&nbsp;<BR>&nbsp;vtkTransform *Transform = vtkTransform::New();<BR>&nbsp;Transform-&gt;Scale(1.0,1.0,0.0);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;vtkTransformPolyDataFilter *transFilter = vtkTransformPolyDataFilter::New();<BR>&nbsp;transFilter-&gt;SetInput((vtkPolyData *) Elevation-&gt;GetOutput());<BR>&nbsp;transFilter-&gt;SetTransform(Transform);<BR>&nbsp;transFilter-&gt;Update();<BR>&nbsp;<BR>&nbsp;//&nbsp;probe 2d mesh with shape data</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;vtkProbeFilter *Probe = vtkProbeFilter::New();<BR>&nbsp;Probe-&gt;SetInput(Shape2D);<BR>&nbsp;Probe-&gt;SetSource(transFilter-&gt;GetOutput());<BR>&nbsp;Probe-&gt;Update();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;//&nbsp;apply the sampled elevation to the overlay</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;vtkWarpScalar *Warp = vtkWarpScalar::New();<BR>&nbsp;Warp-&gt;SetInput(Probe-&gt;GetPolyDataOutput());<BR>&nbsp;Warp-&gt;SetScaleFactor(1.0);<BR>&nbsp;Warp-&gt;Update();<BR></DIV>
<DIV>Ron</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>