<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#003333">
<font size="-1"><font face="Tahoma">Hi karthik,<br>
<br>
Unfortunately, I can't know StartVertex and EndVertex because my
vtk source are compiled in release.<br>
<br>
But here I post a light example which reproduce the problem.
Every second selection will throw the exception.<br>
I also add the polydata (selectedges.vtp)<br>
<br>
//<br>
#include <vtkSmartPointer.h><br>
#include <vtkProperty.h><br>
#include <vtkContourWidget.h><br>
#include <vtkPolyDataMapper.h><br>
#include <vtkActor.h><br>
#include <vtkRenderer.h><br>
#include <vtkRenderWindow.h><br>
#include <vtkRenderWindowInteractor.h><br>
#include <vtkPolygonalSurfacePointPlacer.h><br>
#include <vtkOrientedGlyphContourRepresentation.h><br>
#include <vtkXMLPolyDataReader.h><br>
#include <vtkPolygonalSurfaceContourLineInterpolator.h><br>
<br>
int main(int, char *[])<br>
{<br>
vtkSmartPointer<vtkXMLPolyDataReader> reader =
vtkSmartPointer<vtkXMLPolyDataReader>::New();<br>
reader->SetFileName("./selectedges.vtp");<br>
reader->Update();<br>
<br>
vtkSmartPointer<vtkPolyData> polydata =
vtkSmartPointer<vtkPolyData>::New();<br>
polydata = reader->GetOutput();<br>
<br>
vtkSmartPointer<vtkPolyDataMapper> mapper = <br>
vtkSmartPointer<vtkPolyDataMapper>::New();<br>
mapper->SetInput(polydata);<br>
<br>
vtkSmartPointer<vtkActor> actor = <br>
vtkSmartPointer<vtkActor>::New();<br>
actor->SetMapper(mapper);<br>
actor->GetProperty()->SetInterpolationToFlat();<br>
<br>
vtkSmartPointer<vtkRenderer> renderer = <br>
vtkSmartPointer<vtkRenderer>::New();<br>
renderer->AddActor(actor);<br>
<br>
vtkSmartPointer<vtkRenderWindow> renderWindow = <br>
vtkSmartPointer<vtkRenderWindow>::New();<br>
renderWindow->AddRenderer(renderer);<br>
<br>
vtkSmartPointer<vtkRenderWindowInteractor> interactor =
<br>
vtkSmartPointer<vtkRenderWindowInteractor>::New();<br>
interactor->SetRenderWindow(renderWindow);<br>
<br>
vtkSmartPointer<vtkContourWidget> contourWidget = <br>
vtkSmartPointer<vtkContourWidget>::New();<br>
contourWidget->SetInteractor(interactor);<br>
<br>
vtkOrientedGlyphContourRepresentation* rep = <br>
vtkOrientedGlyphContourRepresentation::SafeDownCast(contourWidget->GetRepresentation());<br>
<br>
vtkSmartPointer<vtkPolygonalSurfacePointPlacer>
pointPlacer =<br>
vtkSmartPointer<vtkPolygonalSurfacePointPlacer>::New(); <br>
pointPlacer->AddProp(actor);<br>
pointPlacer->GetPolys()->AddItem(polydata);<br>
<br>
vtkSmartPointer<vtkPolygonalSurfaceContourLineInterpolator>
interpolator =<br>
vtkSmartPointer<vtkPolygonalSurfaceContourLineInterpolator>::New();<br>
interpolator->GetPolys()->AddItem(polydata);<br>
<br>
rep->GetLinesProperty()->SetColor(1, 0, 0);<br>
rep->GetLinesProperty()->SetLineWidth(3.0);<br>
rep->SetPointPlacer(pointPlacer);<br>
<br>
//setting this will throw an exception<br>
rep->SetLineInterpolator(interpolator);<br>
<br>
contourWidget->EnabledOn();<br>
renderer->ResetCamera();<br>
renderWindow->Render();<br>
interactor->Initialize();<br>
<br>
interactor->Start();<br>
<br>
return EXIT_SUCCESS;<br>
}<br>
//<br>
<br>
Thanks again<br>
</font></font><br>
Le 13/01/2011 19:44, Karthik Krishnan a écrit :
<blockquote
cite="mid:AANLkTi=4i3xthe3Wr6fcDc+o3jspgYCdn72WRC=kiybH@mail.gmail.com"
type="cite">Can you post the polygonal dataset, along with the
StartVertex and EndVertex Id's that were passed onto
vtkDijkstraGraphGeodesicPath<br>
<br>
thx<br>
--<br>
karthik<br>
<br>
<div class="gmail_quote">On Thu, Jan 13, 2011 at 11:36 PM, Nicolas
Sarrasin <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:nsarrasin@phenix-systems.com">nsarrasin@phenix-systems.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid
rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left:
1ex;">
<div bgcolor="#ffffff" text="#003333"> <font size="-1"><font
face="Tahoma">Hi all,<br>
<br>
I'm coding an application to select edges on a
vtkPolyData.<br>
<br>
For my needs, I first have to build a wireframe
vtkPolyData of the input
(vtkPolyline->GetPointIds(...);
vtkCellArray->InsertNextCell(vtkPolyLine); </font></font><font
size="-1"><font face="Tahoma">vtkPolyData->SetPoints(..);
</font></font><font size="-1"><font face="Tahoma">vtkPolyData->SetLines(vtkCellArray);</font></font><font
size="-1"><font face="Tahoma">...)<br>
<br>
This part is ok. Then I use vtkContourWidget with </font></font><font
size="-1"><font face="Tahoma">vtkPolygonalSurfacePointPlacer
and </font></font><font size="-1"><font face="Tahoma">vtkPolygonalSurfaceContourLineInterpolator
</font></font><font size="-1"><font face="Tahoma">:<br>
<br>
<br>
vtkSmartPointer<vtkContourWidget>
contourWidget =
vtkSmartPointer<vtkContourWidget>::New();<br>
contourWidget->SetInteractor(interactor);<br>
<br>
vtkSmartPointer<vtkOrientedGlyphContourRepresentation>
rep = <br>
vtkOrientedGlyphContourRepresentation::SafeDownCast(contourWidget->GetRepresentation());<br>
rep->GetLinesProperty()->SetColor(1, 0.2, 0);<br>
rep->GetLinesProperty()->SetLineWidth(3.0);<br>
<br>
vtkSmartPointer<vtkPolygonalSurfacePointPlacer>
pointPlacer =<br>
vtkSmartPointer<vtkPolygonalSurfacePointPlacer>::New();<br>
pointPlacer->AddProp(actor);<br>
pointPlacer->GetPolys()->AddItem( my_polydata
);<br>
<br>
vtkSmartPointer<vtkPolygonalSurfaceContourLineInterpolator>
interpolator =<br>
vtkSmartPointer<vtkPolygonalSurfaceContourLineInterpolator>::New();<br>
interpolator->GetPolys()->AddItem( </font></font><font
size="-1"><font face="Tahoma">my_</font></font><font
size="-1"><font face="Tahoma">polydata </font></font><font
size="-1"><font face="Tahoma">);<br>
<br>
</font></font><font size="-1"><font face="Tahoma">rep->SetPointPlacer(pointPlacer);</font></font><br>
<font size="-1"><font face="Tahoma">
rep->SetLineInterpolator(interpolator);<br>
<br>
contourWidget->EnabledOn();<br>
<br>
When I pick one point it's ok but after the second
picking I get an exception : "vector subscript out of
range" thrown in the function
vtkDijkstraGraphGeodesicPath::TraceShortestPath().<br>
<br>
It appears only if I the LineInterPolator is </font></font><font
size="-1"><font face="Tahoma">vtkPolygonalSurfaceContourLineInterpolator.
It seems that Dijkstra can't find the path allong the
lines.<br>
<br>
So I'm asking where does this comes from ?<br>
<br>
When I compute a vtkpolyDataConnectivityFilter, it says
me I have only one region, so my data is right connected
(i means I have no holes on my polylines).<br>
<br>
Is there a filter I can pass to my polydata to make it
works ??<br>
<br>
Thanks by advance for helping me.<br>
<br>
Nicolas<br>
</font></font> </div>
<br>
_______________________________________________<br>
Powered by <a moz-do-not-send="true"
href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a
moz-do-not-send="true"
href="http://www.kitware.com/opensource/opensource.html"
target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a
moz-do-not-send="true"
href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a moz-do-not-send="true"
href="http://www.vtk.org/mailman/listinfo/vtkusers"
target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
<br>
</blockquote>
</div>
<br>
</blockquote>
</body>
</html>