[vtkusers] Changing Cell Color After picking
Ricardo Seco VTK
secolasUA at gmail.com
Sun Jan 7 19:28:57 EST 2007
Could you please be more specific?
Thanks
Ricardo Seco
Dominik Szczerba escreveu:
> enable coloring the dataset with a scalar, set the right one
> --ds
>
> Ricardo Seco VTK wrote:
>
>> Still no results :(
>>
>> 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; };
>> void SetSelectionMapper(vtkPolyDataMapper* pvtkDataMapper) {
>> m_pvtkDataMapper = pvtkDataMapper; };
>> 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);
>> ------------------------------------------------------------
>>
>> m_pvtkDataSet->Update();------------------------------------------------------------------------------------------------------
>>
>>
>> m_pvtkDataMapper->SetInput(m_pvtkDataSet);--------------------------------------------------------------------------------
>>
>> 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;
>> vtkPolyDataMapper* m_pvtkDataMapper;
>> };
>>
>>
>>
>> Dominik Szczerba escreveu:
>>
>>> you may need to set/update the range in the mapper
>>> --ds
>>>
>>> Ricardo Seco VTK wrote:
>>>
>>>
>>>> well i did after setting the tuple the update of my polydata object and
>>>> nothing....
>>>> any more sugestions?
>>>>
>>>> Ricardo Seco
>>>>
>>>> Dominik Szczerba escreveu:
>>>>
>>>>
>>>>> 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
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>>
>>>
>>>
>> _______________________________________________
>> 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