<div class="gmail_quote">Try this:</div><div class="gmail_quote"><br></div><div class="gmail_quote">I didn't really look at the logic, but it compiles and doesn't crash.</div><div class="gmail_quote"><br></div><div class="gmail_quote">
<div class="gmail_quote">#include <vtkPolyDataMapper.h></div><div class="gmail_quote">#include <vtkActor.h></div><div class="gmail_quote">#include <vtkRenderWindow.h></div><div class="gmail_quote">#include <vtkRenderer.h></div>
<div class="gmail_quote">#include <vtkRenderWindowInteractor.h></div><div class="gmail_quote">#include <vtkPolyData.h></div><div class="gmail_quote">#include <vtkTransform.h></div><div class="gmail_quote">
#include <vtkTransformPolyDataFilter.h></div><div class="gmail_quote">#include <vtkAppendPolyData.h></div><div class="gmail_quote">#include <vtkCylinderSource.h></div><div class="gmail_quote">#include <vtkSmartPointer.h></div>
<div class="gmail_quote"><br></div><div class="gmail_quote">int main (int argc, char *argv[])</div><div class="gmail_quote">{</div><div class="gmail_quote"> vtkSmartPointer<vtkCylinderSource> source =</div><div class="gmail_quote">
vtkSmartPointer<vtkCylinderSource>::New();</div><div class="gmail_quote"> source->SetCenter(1,1,1);</div><div class="gmail_quote"> source->Update();</div><div class="gmail_quote"> </div><div class="gmail_quote">
// Determine which axes are flipped</div><div class="gmail_quote"> bool xFlipped=true;</div><div class="gmail_quote"> bool yFlipped=true;</div><div class="gmail_quote"> //bool yFlipped=false;</div><div class="gmail_quote">
</div><div class="gmail_quote"> // Add a new vtkAppendData to deal with the new symmetrical data</div><div class="gmail_quote"> vtkSmartPointer<vtkAppendPolyData> appendData =</div><div class="gmail_quote"> vtkSmartPointer<vtkAppendPolyData>::New();</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"> // Add the source data</div><div class="gmail_quote"> appendData->AddInput(source->GetOutput());</div><div class="gmail_quote"><br></div><div class="gmail_quote">
if(xFlipped)</div><div class="gmail_quote"> {</div><div class="gmail_quote"> // Add a vtkTranform to apply symmetry to the dataset</div><div class="gmail_quote"> vtkSmartPointer<vtkTransform> pTranslationX =</div>
<div class="gmail_quote"> vtkSmartPointer<vtkTransform>::New();</div><div class="gmail_quote"> </div><div class="gmail_quote"> pTranslationX->Translate(1.0, 0.0, 0.0);</div><div class="gmail_quote"> // Apply translation filter to data for given symmetry</div>
<div class="gmail_quote"> vtkSmartPointer<vtkTransformPolyDataFilter> pTransformFilter1 =</div><div class="gmail_quote"> vtkSmartPointer<vtkTransformPolyDataFilter>::New();</div><div class="gmail_quote">
pTransformFilter1->SetInputConnection(source->GetOutputPort());</div><div class="gmail_quote"> pTransformFilter1->SetTransform(pTranslationX);</div><div class="gmail_quote"> pTransformFilter1->Update();</div>
<div class="gmail_quote"> </div><div class="gmail_quote"> // Create a vtkPolyData set and add it to the vtkAppendPolyData for the symmetrical data</div><div class="gmail_quote"> vtkSmartPointer<vtkPolyData> pData1 =</div>
<div class="gmail_quote"> pTransformFilter1->GetOutput();</div><div class="gmail_quote"> appendData->AddInput(pData1);</div><div class="gmail_quote"> }</div><div class="gmail_quote"> </div><div class="gmail_quote">
if(yFlipped)</div><div class="gmail_quote"> {</div><div class="gmail_quote"> vtkSmartPointer<vtkTransform> pTranslationY =</div><div class="gmail_quote"> vtkSmartPointer<vtkTransform>::New();</div>
<div class="gmail_quote"> pTranslationY->Translate(0.0, 1.0, 0.0);</div><div class="gmail_quote"> // Apply translation filter to data for given symmetry</div><div class="gmail_quote"> vtkSmartPointer<vtkPolyData> pTempData =</div>
<div class="gmail_quote"> appendData->GetOutput();</div><div class="gmail_quote"> vtkSmartPointer<vtkTransformPolyDataFilter> pTransformFilter2 =</div><div class="gmail_quote"> vtkSmartPointer<vtkTransformPolyDataFilter>::New();</div>
<div class="gmail_quote"> pTransformFilter2->SetInputConnection(source->GetOutputPort());</div><div class="gmail_quote"> pTransformFilter2->SetTransform(pTranslationY);</div><div class="gmail_quote"> pTransformFilter2->Update();</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"> // Create a vtkPolyData set and add it to the vtkAppendPolyData for the symmetrical data</div><div class="gmail_quote"> vtkPolyData * pData1 = pTransformFilter2->GetOutput();</div>
<div class="gmail_quote"> appendData->AddInput(pData1);</div><div class="gmail_quote"> }</div><div class="gmail_quote"><br></div><div class="gmail_quote"> appendData->Update();</div><div class="gmail_quote"> vtkPolyData* result = appendData->GetOutput();</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"> vtkSmartPointer<vtkPolyDataMapper> mapper = </div><div class="gmail_quote"> vtkSmartPointer<vtkPolyDataMapper>::New();</div><div class="gmail_quote">
mapper->SetInput(result);</div><div class="gmail_quote"> </div><div class="gmail_quote"> vtkSmartPointer<vtkActor> actor = </div><div class="gmail_quote"> vtkSmartPointer<vtkActor>::New();</div><div class="gmail_quote">
actor->SetMapper(mapper);</div><div class="gmail_quote"><br></div><div class="gmail_quote"> vtkSmartPointer<vtkRenderer> renderer =</div><div class="gmail_quote"> vtkSmartPointer<vtkRenderer>::New();</div>
<div class="gmail_quote"><br></div><div class="gmail_quote"> vtkSmartPointer<vtkRenderWindow> renderWindow =</div><div class="gmail_quote"> vtkSmartPointer<vtkRenderWindow>::New();</div><div class="gmail_quote">
renderWindow->AddRenderer(renderer);</div><div class="gmail_quote"><br></div><div class="gmail_quote"> // Add Actor to renderer</div><div class="gmail_quote"> renderer->SetBackground(1,1,1); // Background color white</div>
<div class="gmail_quote"> </div><div class="gmail_quote"> // Add Actor to renderer</div><div class="gmail_quote"> renderer->AddActor(actor);</div><div class="gmail_quote"><br></div><div class="gmail_quote"> vtkSmartPointer<vtkRenderWindowInteractor> interactor =</div>
<div class="gmail_quote"> vtkSmartPointer<vtkRenderWindowInteractor>::New();</div><div class="gmail_quote"> interactor->SetRenderWindow(renderWindow);</div><div class="gmail_quote"> interactor->Start();</div>
<div class="gmail_quote"> </div><div class="gmail_quote"> return 0;</div><div class="gmail_quote">}</div><div><br></div></div><div class="gmail_quote"><br clear="all">Thanks,<br><br>David</div>