[vtkusers] Changing Cell Color After picking

Dominik Szczerba domi at vision.ee.ethz.ch
Sun Jan 7 15:29:16 EST 2007


well you have to Update() something
--DS

Ricardo Seco VTK wrote:
> Hello. I am trying to change the color of the cell after picking but
> nothing happens...
> Could someone help me?
> 
> Best Regards
> Ricardo Seco
> 
> class vtkMyCallback : public vtkCommand
> {
> public:
>        vtkMyCallback::vtkMyCallback() { m_pvtkActorSelection = NULL; };
>        static vtkMyCallback *New() { return new vtkMyCallback; }
>        void SetSelectionActor(vtkActor* pvtkActorSelection) {
> m_pvtkActorSelection = pvtkActorSelection; };
>        void SetSelectionList(vtkIdList* pvtkIdDeletion) {
> m_pvtkIdDeletion = pvtkIdDeletion; };
>        void SetSelectionDataSet(vtkPolyData* pvtkDataSet) {
> m_pvtkDataSet = pvtkDataSet; };
>        void SetIren(vtkRenderWindowInteractor* pvtkIren) { m_pvtkIren =
> pvtkIren; };
>        virtual void Execute(vtkObject *caller, unsigned long, void*)
>        {
>                double coords[3];
>                int pId;
>                float ptr;
>                vtkCellPicker *picker = (vtkCellPicker
> *)m_pvtkIren->GetPicker();
>                picker->GetPickPosition(coords);
>                // Obter o Id da cell que acabamos de fazer pickin
>                pId = picker->GetCellId();
>               
> m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,0);--------------------------------------------------
> HERE
>                              printf("Cell ID a remover: %d \n",pId);
>                // Inserção da cell na vtkIdList
>                m_pvtkIdDeletion->InsertNextId(pId);
>                // Caso a cell já esteja na vtkIdList ou seja NULL(-1)
>                for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
>                {
>                    if ((pId) == (m_pvtkIdDeletion->GetId(k)) && (k!=0))
>                    {
>                        m_pvtkIdDeletion->DeleteId(pId);
>                        m_pvtkIdDeletion->InsertNextId(pId);
>                    }
>                    if ((pId) == -1)
>                        m_pvtkIdDeletion->DeleteId(pId);
>                }
>               
> printf("-------------------------------------------------------------------------\n");
> 
>                printf("Numero de Cells para
> remocao:%d\n",m_pvtkIdDeletion->GetNumberOfIds());
>                printf("Lista de Cells para remocao:\n");
>                for(int k=0; k<m_pvtkIdDeletion->GetNumberOfIds(); k++)
>                    printf("Pos:%d
> CellId:%d\n",k,m_pvtkIdDeletion->GetId(k));
>                // Renderizar a nossa esfera de picking para a cell
> seleccionada
>                if (picker->GetCellId() != -1)
>                {
>                      if (m_pvtkActorSelection)         
>                          m_pvtkActorSelection->SetPosition(coords);
>                }
>                m_pvtkIren->Render();
>               
> m_pvtkDataSet->GetPointData()->GetScalars()->SetTuple1(pId,1);
>        }
> private:
>        vtkActor* m_pvtkActorSelection;
>        vtkIdList* m_pvtkIdDeletion;
>        vtkPolyData* m_pvtkDataSet;
>        vtkRenderWindowInteractor* m_pvtkIren;
> };
> _______________________________________________
> This is the private VTK discussion list. Please keep messages on-topic.
> Check the FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers



More information about the vtkusers mailing list