[vtkusers] Changing Cell Color After picking
Ricardo Seco VTK
secolasUA at gmail.com
Sun Jan 7 17:15:59 EST 2007
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
>>
>
>
More information about the vtkusers
mailing list