That did the trick!!&nbsp; It now works every time no matter how far I move the object or zoom, etc.<br><br>Thanks Joe!!<br><br>-Kerry<br><br><div class="gmail_quote">On Thu, May 22, 2008 at 3:08 PM, Johannes Heitz &lt;<a href="mailto:j.heitz@mediri.com">j.heitz@mediri.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I am not saying it might be a solution... Been there, done that ;(<br>
<br>
double bounds[6];<br>
pRenderer-&gt;ComputeVisiblePropBounds(bounds);<br>
pRenderer-&gt;ResetCameraClippingRange(bounds);<br>
<br>
Would in theory get the extent of the currently visible &quot;actors&quot; and (re)set the clipping range accordingly.<br><font color="#888888">
<br>
J.<br>
</font><br><br>
// Quick (and unclean) test app to find out how and when to get rendered actors to update<br>
// Top of the UI -&gt; wxVTK Window with 8 cone actors<br>
// Bottom of UI -&gt; wxTextCtrl to type commands into<br>
// Commands are<br>
// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;either a number from 0 to 7 followed by an action<br>
// &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Actions are &quot;hide&quot;, &quot;show&quot;, &quot;color&quot;, &quot;hop&quot; and the numbers make the cone # x perform that action<br>
// or &quot;renderon&quot;, &quot;renderoff&quot;, &quot;on&quot; or &quot;off&quot;, (all show that I was wrong ;P),<br>
// &quot;boundson&quot;, &quot;boundsoff&quot; (use the set clipping range or not)<br>
// &quot;allcolor&quot;, &quot;allhop&quot; (color, move all actors at once) or<br>
// clip NEAR FAR (setting the current cameras clipping range)<br>
<br>
// What this might show is that...<br>
<br>
// &nbsp; &nbsp; &nbsp;vtkRenderer-&gt;ComputeVisiblePropBounds(bounds);<br>
// &nbsp; &nbsp; &nbsp;vtkRenderer-&gt;ResetCameraClippingRange(bounds);<br>
<br>
// might &#39;render&#39; all actors no matter what the clipping range is :|<br>
<br>
// Commands are &#39;sent&#39; by hitting return<br>
<br>
<br>
// For compilers that support precompilation, includes &quot;wx/wx.h&quot;.<br>
#include &quot;wx/wxprec.h&quot;<br>
<br>
#ifdef __BORLANDC__<br>
 &nbsp; &nbsp;#pragma hdrstop<br>
#endif<br>
<br>
// for all others, include the necessary headers (this file is usually all you<br>
// need because it includes almost all &quot;standard&quot; wxWindows headers)<br>
#ifndef WX_PRECOMP<br>
 &nbsp; &nbsp;#include &quot;wx/wx.h&quot;<br>
#endif<br>
<br>
#include &quot;wxVTKRenderWindowInteractor.h&quot;<br>
#include &quot;vtkCamera.h&quot;<br>
#include &quot;vtkRenderer.h&quot;<br>
#include &quot;vtkRenderWindow.h&quot;<br>
#include &quot;vtkConeSource.h&quot;<br>
#include &quot;vtkPolyDataMapper.h&quot;<br>
#include &quot;vtkActor.h&quot;<br>
#include &quot;vtkPolyDataReader.h&quot;<br>
#include &quot;vtkProperty.h&quot;<br>
<br>
#include &quot;vtkPNGReader.h&quot;<br>
#include &quot;vtkImageMapper.h&quot;<br>
#include &quot;vtkImageShiftScale.h&quot;<br>
#include &quot;vtkInteractorStyleImage.h&quot;<br>
#include &quot;vtkActor2D.h&quot;<br>
<br>
#include &quot;vtkImageViewer2.h&quot;<br>
#include &quot;vtkImageData.h&quot;<br>
#include &quot;vtkTesting.h&quot;<br>
#include &quot;vtkTestUtilities.h&quot;<br>
<br>
<br>
// the application icon<br>
#ifndef __WXMSW__<br>
 &nbsp; &nbsp;#include &quot;mondrian.xpm&quot;<br>
#endif<br>
<br>
class MyApp;<br>
class MyFrame;<br>
<br>
// Define a new application type, each program should derive a class from wxApp<br>
class MyApp : public wxApp<br>
{<br>
public:<br>
 &nbsp; &nbsp;// this one is called on application startup and is a good place for the app<br>
 &nbsp; &nbsp;// initialization (doing it here and not in the ctor allows to have an error<br>
 &nbsp; &nbsp;// return: if OnInit() returns false, the application terminates)<br>
 &nbsp; &nbsp;virtual bool OnInit();<br>
};<br>
<br>
// Define a new frame type: this is going to be our main frame<br>
class MyFrame : public wxFrame<br>
{<br>
public:<br>
 &nbsp; &nbsp;// ctor(s)<br>
 &nbsp; &nbsp;MyFrame(const wxString&amp; title, const wxPoint&amp; pos, const wxSize&amp; size);<br>
 &nbsp; &nbsp;~MyFrame();<br>
<br>
 &nbsp; &nbsp;// event handlers (these functions should _not_ be virtual)<br>
 &nbsp; &nbsp;void OnQuit(wxCommandEvent&amp; event);<br>
 &nbsp; &nbsp;void OnAbout(wxCommandEvent&amp; event);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void OnTextInput(wxCommandEvent&amp; event);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void doCommand(wxString strCommand);<br>
protected:<br>
 &nbsp; &nbsp;void Setup();<br>
 &nbsp; &nbsp;void Cleanup();<br>
<br>
private:<br>
 &nbsp;wxVTKRenderWindowInteractor* &nbsp;m_pVTKWindow;<br>
 &nbsp;vtkRenderer* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer;<br>
 &nbsp;vtkRenderWindow* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderWindow;<br>
 &nbsp;vtkPolyDataMapper* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeMapper[8];<br>
 &nbsp;vtkActor* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pConeActor[8];<br>
 &nbsp;vtkConeSource* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeSource[8];<br>
 &nbsp;wxTextCtrl* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_pTextCtrl;<br>
 &nbsp;wxPanel* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;panel;<br>
<br>
 &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_autorender;<br>
 &nbsp;bool &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_maxbounds;<br>
<br>
private:<br>
 &nbsp; &nbsp;// any class wishing to process wxWindows events must use this macro<br>
 &nbsp; &nbsp;DECLARE_EVENT_TABLE()<br>
};<br>
<br>
// IDs for the controls and the menu commands<br>
enum<br>
{<br>
 &nbsp; &nbsp;// menu items<br>
 &nbsp; &nbsp;Minimal_Quit = 1,<br>
 &nbsp; &nbsp;Minimal_About<br>
};<br>
<br>
#define MY_FRAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;101<br>
#define MY_VTK_WINDOW &nbsp; 102<br>
#define ID_TEXT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 103<br>
<br>
// the event tables connect the wxWindows events with the functions (event<br>
// handlers) which process them. It can be also done at run-time, but for the<br>
// simple menu events like this the static method is much simpler.<br>
BEGIN_EVENT_TABLE(MyFrame, wxFrame)<br>
 &nbsp; &nbsp;EVT_MENU(Minimal_Quit, &nbsp;MyFrame::OnQuit)<br>
 &nbsp; &nbsp;EVT_MENU(Minimal_About, MyFrame::OnAbout)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;EVT_TEXT_ENTER(ID_TEXT, MyFrame::OnTextInput)<br>
END_EVENT_TABLE()<br>
<br>
// Create a new application object: this macro will allow wxWindows to create<br>
// the application object during program execution (it&#39;s better than using a<br>
// static object for many reasons) and also declares the accessor function<br>
// wxGetApp() which will return the reference of the right type (i.e. MyApp and<br>
// not wxApp)<br>
IMPLEMENT_APP(MyApp)<br>
<br>
// &#39;Main program&#39; equivalent: the program execution &quot;starts&quot; here<br>
bool MyApp::OnInit()<br>
{<br>
<br>
 &nbsp; &nbsp;MyFrame *frame = new MyFrame(_T(&quot;wxWindows-VTK App&quot;),<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wxPoint(50, 50), wxSize(450, 340));<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;frame-&gt;Show(TRUE);<br>
<br>
 &nbsp; &nbsp;return TRUE;<br>
}<br>
<br>
// frame constructor<br>
MyFrame::MyFrame(const wxString&amp; title, const wxPoint&amp; pos, const wxSize&amp; size)<br>
 &nbsp; &nbsp; &nbsp; : wxFrame((wxFrame *)NULL, -1, title, pos, size)<br>
{<br>
#ifdef __WXMAC__<br>
 &nbsp; &nbsp;// we need this in order to allow the about menu relocation, since ABOUT is<br>
 &nbsp; &nbsp;// not the default id of the about menu<br>
 &nbsp; &nbsp;wxApp::s_macAboutMenuItemId = Minimal_About;<br>
#endif<br>
<br>
 &nbsp; &nbsp;SetIcon(wxICON(mondrian));<br>
<br>
 &nbsp; &nbsp;wxMenu *menuFile = new wxMenu(_T(&quot;&quot;), wxMENU_TEAROFF);<br>
 &nbsp; &nbsp;wxMenu *helpMenu = new wxMenu;<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;helpMenu-&gt;Append(Minimal_About, _T(&quot;&amp;About...\tCtrl-A&quot;), _T(&quot;Show about dialog&quot;));<br>
 &nbsp; &nbsp;menuFile-&gt;Append(Minimal_Quit, _T(&quot;E&amp;xit\tAlt-X&quot;), _T(&quot;Quit this program&quot;));<br>
<br>
 &nbsp; &nbsp;wxMenuBar *menuBar = new wxMenuBar();<br>
 &nbsp; &nbsp;menuBar-&gt;Append(menuFile, _T(&quot;&amp;File&quot;));<br>
 &nbsp; &nbsp;menuBar-&gt;Append(helpMenu, _T(&quot;&amp;Help&quot;));<br>
<br>
 &nbsp; &nbsp;SetMenuBar(menuBar);<br>
<br>
<br>
<br>
#if wxUSE_STATUSBAR<br>
 &nbsp; &nbsp;// create a status bar just for fun (by default with 1 pane only)<br>
 &nbsp; &nbsp;CreateStatusBar(2);<br>
 &nbsp; &nbsp;SetStatusText(_T(&quot;Zoom out to see cones&quot;));<br>
#endif // wxUSE_STATUSBAR<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;panel = new wxPanel(this, -1);<br>
 &nbsp; &nbsp;m_pVTKWindow = new wxVTKRenderWindowInteractor(panel, MY_VTK_WINDOW);<br>
 &nbsp; &nbsp;m_pVTKWindow-&gt;UseCaptureMouseOn();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;m_pTextCtrl = new wxTextCtrl(panel, ID_TEXT, &quot;&quot;, wxDefaultPosition, wxDefaultSize,wxTE_PROCESS_ENTER/*|wxTE_MULTILINE*/);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vbox-&gt;Add(m_pVTKWindow, 2,wxEXPAND);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vbox-&gt;Add(m_pTextCtrl, 1,wxEXPAND);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;panel-&gt;SetSizer(vbox);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;m_maxbounds = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;m_autorender = false;<br>
 &nbsp; &nbsp;Setup();<br>
}<br>
<br>
MyFrame::~MyFrame()<br>
{<br>
 &nbsp; Cleanup();<br>
}<br>
<br>
<br>
void MyFrame::Setup()<br>
{<br>
 &nbsp;pRenderer &nbsp; &nbsp; = vtkRenderer::New();<br>
 &nbsp;pRenderWindow = m_pVTKWindow-&gt;GetRenderWindow();<br>
 &nbsp;pRenderWindow-&gt;AddRenderer(pRenderer);<br>
<br>
 &nbsp;for(int iLoop = 0; iLoop &lt; 8; iLoop++)<br>
 &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeMapper[iLoop] &nbsp; = vtkPolyDataMapper::New();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop] &nbsp; &nbsp;= vtkActor::New();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeSource[iLoop] &nbsp; = vtkConeSource::New();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeSource[iLoop]-&gt;SetAngle(60-(5*iLoop));<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeSource[iLoop]-&gt;SetResolution(2*(iLoop+1));<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeMapper[iLoop]-&gt;SetInput(pConeSource[iLoop]-&gt;GetOutput());<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;SetMapper(pConeMapper[iLoop]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;SetPosition(iLoop*(rand()%2==1?-1:1),iLoop*(rand()%2==1?-1:1),iLoop*(rand()%2==1?-1:1));<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;AddActor(pConeActor[iLoop]);<br>
 &nbsp;}<br>
<br>
 &nbsp;pRenderer-&gt;SetBackground(0.4,0.4,0.4);<br>
 &nbsp;pRenderer-&gt;GetActiveCamera()-&gt;Zoom(1.0);<br>
 &nbsp;pRenderer-&gt;GetActiveCamera()-&gt;SetClippingRange(1,1000);<br>
}<br>
<br>
void MyFrame::Cleanup()<br>
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// No check for != 0 and no try/catch<br>
 &nbsp; &nbsp; &nbsp; &nbsp;for(int iLoop = 0; iLoop &lt; 8; iLoop++)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeMapper[iLoop]-&gt;Delete();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;Delete();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeSource[iLoop]-&gt;Delete();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;Delete();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;m_pVTKWindow-&gt;Delete();<br>
}<br>
<br>
<br>
void MyFrame::OnQuit(wxCommandEvent&amp; WXUNUSED(event))<br>
{<br>
 &nbsp; &nbsp;Close(TRUE);<br>
}<br>
<br>
void MyFrame::OnAbout(wxCommandEvent&amp; WXUNUSED(event))<br>
{<br>
 &nbsp; &nbsp;wxString msg;<br>
 &nbsp; &nbsp;msg.Printf( _T(&quot;This is the about dialog of wx-vtk sample.\n&quot;));<br>
 &nbsp; &nbsp;wxMessageBox(msg, _T(&quot;About wx-vtk&quot;), wxOK | wxICON_INFORMATION, this);<br>
}<br>
<br>
void MyFrame::OnTextInput(wxCommandEvent&amp; event)<br>
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doCommand(m_pTextCtrl-&gt;GetValue());<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pTextCtrl-&gt;Clear();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;event.Skip();<br>
}<br>
<br>
void MyFrame::doCommand(wxString strCommand)<br>
{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;// This is rather weak but no time for parsing proper...<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int iPos = strCommand.Find(&quot; &quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if(-1 != iPos)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strOpCode = strCommand.Left(iPos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strOpCode.Trim();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strRemains = strCommand.Right(strCommand.Length()-iPos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strRemains.Trim();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(!strOpCode.IsEmpty())<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strOpCode.MakeLower();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(strOpCode.IsNumber())<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;double dVal;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strOpCode.ToDouble(&amp;dVal);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(dVal&gt;7) return;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strRemains.MakeLower();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strRemains.Trim(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strRemains.CompareTo(&quot;hide&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;RemoveActor(pConeActor[(int)dVal]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strRemains.CompareTo(&quot;show&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;AddActor(pConeActor[(int)dVal]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strRemains.CompareTo(&quot;color&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[(int)dVal]-&gt;GetProperty()-&gt;SetColor((float)(rand()%10)/10,(float)(rand()%10)/10,(float)(rand()%10)/10);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strRemains.CompareTo(&quot;hop&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[(int)dVal]-&gt;SetPosition(rand()%10*(rand()%2==1?-1:1),rand()%10*(rand()%2==1?-1:1),rand()%10*(rand()%2==1?-1:1));<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;clip&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strNear;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strFar;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strRemains = strCommand.Right(strCommand.Length()-iPos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strRemains.Trim(true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strRemains.Trim(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int iPos = strRemains.Find(&quot; &quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(-1 != iPos)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strNear = strRemains.Left(iPos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strFar &nbsp;= strRemains.Right(strRemains.Length()-iPos);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strNear.Trim(true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strNear.Trim(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strFar.Trim(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strFar.Trim(true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(!strNear.IsEmpty() &amp;&amp; !strFar.IsEmpty())<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;double nearVal;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;double farVal;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strNear.ToDouble(&amp;nearVal);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strFar.ToDouble(&amp;farVal);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;GetActiveCamera()-&gt;SetClippingRange(nearVal, farVal);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;else<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;wxString strOpCode = strCommand.Left(iPos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strOpCode.Trim();<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;strOpCode.MakeLower();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;allcolor&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int iLoop = 0; iLoop &lt; 8; iLoop++)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;GetProperty()-&gt;SetColor((float)(rand()%10)/10,(float)(rand()%10)/10,(float)(rand()%10)/10);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;allhop&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(int iLoop = 0; iLoop &lt; 8; iLoop++)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;SetPosition(rand()%10*(rand()%2==1?-1:1),rand()%10*(rand()%2==1?-1:1),rand()%10*(rand()%2==1?-1:1));<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;on&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pVTKWindow-&gt;SetRenderWhenDisabled(true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;RenderWhenDisabled = true&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;off&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pVTKWindow-&gt;SetRenderWhenDisabled(false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;RenderWhenDisabled = false&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;renderon&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_autorender = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;AutoRender = on&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;renderoff&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_autorender = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;AutoRender = off&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;boundsoff&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_maxbounds = false;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;Honor clipping range: use SetClippingRange&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(0 == strOpCode.CompareTo(&quot;boundson&quot;))<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_maxbounds = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetStatusText(&quot;Ignore clipping range: use ComputeVisiblePropBounds&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;double bounds[6];<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/* DBG<br>
 &nbsp; &nbsp; &nbsp; &nbsp;double pos[3];<br>
 &nbsp; &nbsp; &nbsp; &nbsp;char tmp[1000];<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;for(int iLoop = 0; iLoop &lt; 8; iLoop++)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;GetBounds(bounds);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pConeActor[iLoop]-&gt;GetPosition(pos);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sprintf(tmp,&quot;\r\nActor %i is &nbsp;at %f,%f,%f&quot;,iLoop, pos[0],pos[1],pos[2]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pTextCtrl-&gt;AppendText(tmp);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sprintf(tmp,&quot;\r\nActor %i bounds %f,%f,%f&quot;,iLoop, bounds[0],bounds[1],bounds[2],bounds[3],bounds[4],bounds[5]);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pTextCtrl-&gt;AppendText(tmp);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;*/<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if(m_maxbounds)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;ComputeVisiblePropBounds(bounds);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pRenderer-&gt;ResetCameraClippingRange(bounds);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if(m_autorender)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;m_pVTKWindow-&gt;GetRenderWindow()-&gt;Render();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
}<br></blockquote></div><br>