<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Basically I thought than the vtkSmartPointers were supposed to managed this kind of situations...</div><div><br></div><div><div>=====================</div><div>axes.cpp</div><div>=====================</div></div><div>#include &lt;vtkPolyDataMapper.h&gt;</div><div>#include &lt;vtkActor.h&gt;</div><div>#include &lt;vtkRenderWindow.h&gt;</div><div>#include &lt;vtkRenderer.h&gt;</div><div>#include &lt;vtkRenderWindowInteractor.h&gt;</div><div>#include &lt;vtkPolyData.h&gt;</div><div>#include &lt;vtkSphereSource.h&gt;</div><div>#include &lt;vtkOrientationMarkerWidget.h&gt;</div><div>#include &lt;vtkAxesActor.h&gt;</div><div>#include &lt;vtkPropAssembly.h&gt;</div><div>#include &lt;vtkSmartPointer.h&gt;</div><div><br></div><div><br></div><div>/* Do not use ! */</div><div>void displayAxes(vtkRenderWindowInteractor *renderWindowInteractor)</div><div>{&nbsp;</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt; axes =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt;::New();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt; widget =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOutlineColor( 0.9300, 0.5700, 0.1300 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOrientationMarker( axes );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetInteractor( renderWindowInteractor );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetViewport( 0.0, 0.0, 0.4, 0.4 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetEnabled( 1 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;InteractiveOn();</div><div>}</div><div><br></div><div><br></div><div><br></div><div>int main (int, char *[])</div><div>{</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkSphereSource&gt; sphereSource =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkSphereSource&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;sphereSource-&gt;SetCenter(0.0, 0.0, 0.0);</div><div>&nbsp;&nbsp; &nbsp;sphereSource-&gt;SetRadius(1.0);</div><div>&nbsp;&nbsp; &nbsp;sphereSource-&gt;Update();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;vtkPolyData* polydata = sphereSource-&gt;GetOutput();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Create a mapper</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;mapper-&gt;SetInput(polydata);</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Create an actor</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkActor&gt; actor =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkActor&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;actor-&gt;SetMapper(mapper);</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// A renderer and render window</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderer&gt; renderer =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderer&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindow&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;renderWindow-&gt;AddRenderer(renderer);</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// An interactor</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; renderWindowInteractor =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;renderWindowInteractor-&gt;SetRenderWindow(renderWindow);</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Add the actors to the scene</div><div>&nbsp;&nbsp; &nbsp;renderer-&gt;AddActor(actor);</div><div>&nbsp;&nbsp; &nbsp;renderer-&gt;SetBackground(.2, .3, .4);</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Add the axes</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt; axes =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt;::New();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt; widget =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOutlineColor( 0.9300, 0.5700, 0.1300 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOrientationMarker( axes );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetInteractor( renderWindowInteractor );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetViewport( 0.0, 0.0, 0.4, 0.4 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetEnabled( 1 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;InteractiveOn();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Render the scene</div><div>&nbsp;&nbsp; &nbsp;renderer-&gt;ResetCamera();</div><div>&nbsp;&nbsp; &nbsp;renderWindow-&gt;Render();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;// Begin mouse interaction</div><div>&nbsp;&nbsp; &nbsp;renderWindowInteractor-&gt;Start();</div><div><br></div><div>&nbsp;&nbsp; &nbsp;return EXIT_SUCCESS;</div><div>}</div><div><br></div><div>=====================</div><div>CMakeLists.txt</div><div>=====================</div><div><div>cmake_minimum_required(VERSION 2.6)</div><div>&nbsp;</div><div>PROJECT(AxesIndicator)</div><div>&nbsp;</div><div>FIND_PACKAGE(VTK REQUIRED)</div><div>INCLUDE(${VTK_USE_FILE})</div><div>&nbsp;</div><div>ADD_EXECUTABLE(axes axes.cpp)</div><div>TARGET_LINK_LIBRARIES(axes vtkHybrid vtkWidgets)</div></div><div><div>Le 17 sept. 10 à 16:54, David Doria a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><div><div class="gmail_quote">On Fri, Sep 17, 2010 at 10:57 AM, Benoist Laurent <span dir="ltr">&lt;<a href="mailto:benoist@ibpc.fr">benoist@ibpc.fr</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> <div style="word-wrap:break-word">Hi all,<div><br></div><div>The example works very well.</div><div>However, when I try to put the code relative to the axes in a different fonction the application crashes.</div><div><br></div> <div><div>void displayAxes(vtkRenderWindowInteractor *renderWindowInteractor)</div><div>{&nbsp;</div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt; axes =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkAxesActor&gt;::New();</div><div> <br></div><div>&nbsp;&nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt; widget =&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;vtkSmartPointer&lt;vtkOrientationMarkerWidget&gt;::New();</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOutlineColor( 0.9300, 0.5700, 0.1300 );</div> <div>&nbsp;&nbsp; &nbsp;widget-&gt;SetOrientationMarker( axes );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetInteractor( renderWindowInteractor );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetViewport( 0.0, 0.0, 0.4, 0.4 );</div><div>&nbsp;&nbsp; &nbsp;widget-&gt;SetEnabled( 1 );</div> <div>&nbsp;&nbsp; &nbsp;widget-&gt;InteractiveOn();</div><div>}</div></div><div><br></div><div>So I guess there's something I did not understand with the vtkSmartPointer and/or the vtkWidget.</div><div><br></div><div>An idea ?</div> <div>Thanks,</div><div><br></div><div>Benoist</div><div></div></div></blockquote></div><br></div><div>Benoist,<div><br></div><div>Can you share a compilable piece of code? I'm &nbsp;definitely not a smart pointer expert, but I think the pointers defined in your displayAxes will go out of scope when you leave the function.</div> <div><br>David</div></div></blockquote></div><br></body></html>