[vtkusers] vtkAppendPolyData delete the scalars

Alex Malyushytskyy alexmalvtk at gmail.com
Thu Aug 2 19:21:35 EDT 2012


>> appendGreenSubdAndRedBlue->AddInput(otherPolyData);   // what is extrange is that if I comment this line, it works fine
>> appendGreenSubdAndRedBlue->AddInput(myPolyData);

there is nothing strange, if you comment this line there is no
modification were made,
so output is the same as input.

why it removes scalar?
otherPolyData probably does not the same scalar. From documentation:

"All geometry is extracted and appended, but point and cell attributes
(i.e., scalars, vectors, normals) are extracted and appended only if
all datasets have the point and/or cell attributes available. (For
example, if one dataset has point scalars but another does not, point
scalars will not be appended.)"

Regards,
  Alex


On Thu, Aug 2, 2012 at 4:25 AM, Gonzalo Amadio <gonzaloamadio at gmail.com> wrote:
> Hello everyone. Is there some reason whereby vtkAppendPolyData delete the
> scalars when I append 2 polydatas?
>
> Here is my code.
>
>> myPolyData->ShallowCopy(otherPolyData);
>>         SubdividePolyData(myPolyData);   /// Here I modified the polydata,
>> so I need to assign it again the scalar array.
>>
>>
>>
>>         // The problem I think is here in this lines, where I assign the
>> scalar array
>> vtkIntArray* scalars = vtkIntArray::New();
>> scalars->SetNumberOfComponents(1);
>> scalars->SetNumberOfValues(myPolyData->GetNumberOfCells());
>> scalars->SetNumberOfTuples(myPolyData->GetNumberOfCells());
>>
>>
>>
>> for (int i = 0; i < myPolyData->GetNumberOfCells(); i++)
>> scalars->SetValue(i, 1);
>>
>>
>>
>> myPolyData->GetCellData()->SetScalars(scalars);
>>
>>
>>
>>         vtkSmartPointer<vtkAppendPolyData> appendGreenSubdAndRedBlue =
>> vtkSmartPointer<vtkAppendPolyData>::New();
>> appendGreenSubdAndRedBlue->AddInput(otherPolyData);   // what is extrange
>> is that if I comment this line, it works fine
>> appendGreenSubdAndRedBlue->AddInput(myPolyData);
>> appendGreenSubdAndRedBlue->Update();
>>
>>
>>
>> vtkPolyData * finalPolyData = appendGreenSubdAndRedBlue->GetOutput();
>>
>>
>>
>>         vtkIntArray* scalarArray =
>> static_cast<vtkIntArray*>(finalPolyData->GetCellData()->GetScalars());
>>         std::cout  << scalarArray->GetNumberOfTuples() << std::endl;
>> //This line gives me an error
>
>
>
> The error that I obtain is the following :
>
> File :     vtkAbstractArray.h -  line 104
>
>   vtkIdType GetNumberOfTuples()
>     {return (this->MaxId + 1)/this->NumberOfComponents;}
>
> error:
>
> name               type                          value
> this        vtkAbstractArray * const           0x0
>
>
> I can assign "manually" again the scalars to the finalPolyData, but it is
> suppose that the scalars remains when I append them.
>
> Thank you!
>
> --
> --------
> Gonzalo
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK 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