[vtkusers] vtkDoubleArray -- you can set the number of values but you can't get the number of values?
kent williams
nkwmailinglists at gmail.com
Wed Feb 18 14:38:56 EST 2009
Well as it happens, I'm storing an array in one tuple. There's no
corresponding GetNumberOfValues method in the class. I could just
SetNumberOfValues to 1, and then store each array value in it's own
tuple, I guess, but that seems a little clumsy...
Here's my code. This may seem to be a dumb exercise, but there's a
purpose to it -- I want to save metadata with the vtkPolyData when I
write it to disk. I posted yesterday, asking for how one would add
vtkProperty attributes into a vtkPolyData in order to write it to disk
with the XML writer, and no one answered, so I went ahead and added a
data-array for each value in the vtkProperty.
Here's what I'm doing, for the Double Array case...
static void PolyDataSetDouble(vtkPolyData *p, const char *name, const
double *value, int count)
{
vtkFieldData *fieldData = p->GetFieldData();
vtkDoubleArray *doubleArray = vtkDoubleArray::New();
doubleArray->SetNumberOfComponents(count);
doubleArray->InsertNextTupleValue(value);
doubleArray->SetName(name);
fieldData->AddArray(doubleArray);
doubleArray->Delete();
}
static void PolyDataGetDouble(vtkPolyData *p, const char *name, double
*value, int count)
{
vtkFieldData *fieldData = p->GetFieldData();
vtkDoubleArray *doubleArray =
vtkDoubleArray::SafeDownCast(fieldData->GetArray(name));
if(doubleArray == 0)
{
for(unsigned i = 0; i < count; i++)
{
value[i] = 0.0;
}
}
else
{ // no way to see how many elements actually in this tuple!!!
doubleArray->GetTupleValue(0,value);
}
}
On Wed, Feb 18, 2009 at 12:49 PM, Francois Bertel
<francois.bertel at kitware.com> wrote:
> It is not the number of tuples. It is the number of tuples times the
> number of components, at least according to this implementation:
>
> VTK/Common/vtkDataArrayTemplate.txx:
>
> //----------------------------------------------------------------------------
> // Set the number of n-tuples in the array.
> template <class T>
> void vtkDataArrayTemplate<T>::SetNumberOfTuples(vtkIdType number)
> {
> this->SetNumberOfValues(number*this->NumberOfComponents);
> this->DataChanged();
> }
>
> On Wed, Feb 18, 2009 at 1:44 PM, Michael Jackson
> <mike.jackson at bluequartz.net> wrote:
>> You can also use
>> vtkIdType GetNumberOfTuples ();
>> since vtkArrays are based off the "Tuple" concept. Look at the
>> vtkAbstractArray class which vtkDoubleArray descends from.
>>
>> _________________________________________________________
>> Mike Jackson mike.jackson at bluequartz.net
>> BlueQuartz Software www.bluequartz.net
>> Principal Software Engineer Dayton, Ohio
>>
>>
>>
>> On Feb 18, 2009, at 1:34 PM, kent williams wrote:
>>
>>> I've been staring for some time at the Doxygen man pages for
>>> vtkDoubleArray and vtkDataArray. It seems that there is a member
>>> function vtkDoubleArray::SetNumberOfValues(), but no corresponding
>>> vtkDoubleArray::GetNumberOfValues().
>>>
>>> This seems to indicate that you have to make sure that you never try
>>> to read out more values than you've put in to the array, because
>>> there's no way to check this.
>>>
>>> Or am I missing something?
>>> _______________________________________________
>>> 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
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
> François Bertel, PhD | Kitware Inc. Suite 204
> 1 (518) 371 3971 x113 | 28 Corporate Drive
> | Clifton Park NY 12065, USA
> _______________________________________________
> 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