//--------------------------------------------------------------------------- #include #pragma hdrstop #include "mainunit.h" #include "vtkSphereSource.h" #include "vtkPolyDataMapper.h" #include "vtkActor.h" #include "vtkProperty.h" #include #include "vtkAssemblyPath.h" #include "vtkProp.h" #include "vtkPropCollection.h" #include "vtkAssemblyNode.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "vtkBorlandRenderWindow" #pragma resource "*.dfm" TForm1 *Form1; std::vector actorcoll; int count = 0; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::testClick(TObject *Sender) { Label1->Caption = count++; for(double d=0; d<100; d+=1 ) { vtkSphereSource* sphere0 = vtkSphereSource::New(); sphere0->SetRadius( 25 ); sphere0->SetCenter( d,d*d,0 ); // all the times I add spheres at same position. but, who cares?? vtkPolyDataMapper* sphereMapper0 = vtkPolyDataMapper::New(); sphereMapper0->SetInput(sphere0->GetOutput()); vtkActor* sphereActor0 = vtkActor::New(); sphereActor0->SetMapper(sphereMapper0); (sphereActor0->GetProperty())->SetColor( 0, 0, 0 ); vtkBorlandRenderWindow1->GetRenderer()->AddActor( sphereActor0 ); actorcoll.push_back( sphereActor0 ); } vtkBorlandRenderWindow1->GetRenderer()->ResetCameraClippingRange(); vtkBorlandRenderWindow1->GetRenderer()->ResetCamera(); vtkBorlandRenderWindow1->Invalidate(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption = 0; typedef std::vector Tactorcoll; Tactorcoll::iterator it; for( it = actorcoll.begin(); it != actorcoll.end(); it++ ) { vtkActor* actor = *it; if(actor) { vtkBorlandRenderWindow1->GetRenderer()->RemoveProp(actor); // cancella i testi precedenti actor->Delete(); } } actorcoll.clear(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { vtkRenderer* renderer = vtkBorlandRenderWindow1->GetRenderer(); vtkRenderWindow* renwin = vtkBorlandRenderWindow1->GetRenderWindow(); vtkRenderWindowInteractor* RenderWindow = vtkBorlandRenderWindow1->GetInteractor(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { vtkPropCollection *pc; vtkProp *aProp, *aPart; vtkAssemblyPath *path; TvtkBorlandRenderWindow* w = vtkBorlandRenderWindow1; vtkRenderer* ren1 = w->GetRenderer(); vtkRenderWindow* renwin = w->GetRenderWindow(); pc = ren1->GetProps(); for (pc->InitTraversal(); (aProp = pc->GetNextProp()); ) { for (aProp->InitPathTraversal(); (path=aProp->GetNextPath()); ) { aPart=(vtkProp *)path->GetLastNode()->GetProp(); aPart->ReleaseGraphicsResources(renwin); } } } //---------------------------------------------------------------------------