Hi Natalie,
Some comments follow:

 int dims[3],i,j,k;
 // pointer for casting
 vtkRectilinearGrid *rect_input = vtkRectilinearGrid::New();
 vtkStructuredGrid *structgrid_input = vtkStructuredGrid::New();


vtkDataArray *scaldat = this -> vtkAlgorithm::GetInputArrayToProcess(0,input);
 vtkDataArray *new_scaldat;

 vtkFloatArray *scalars = vtkFloatArray::New();
 vtkFloatArray *new_scalars = vtkFloatArray::New();

scalars = vtkFloatArray::SafeDownCast(scaldat); //this is now the input as vtkFloatArray

This is going to create a memory leak. You New()'d a vtkFloatArray and never called Delete() before reassigning.

if((DataSetType == VTK_RECTILINEAR_GRID) && (rect_input = vtkRectilinearGrid::SafeDownCast(input)))
  {
   rect_input -> GetDimensions(dims);
  }

else if((DataSetType == VTK_STRUCTURED_GRID )&& (structgrid_input = vtkStructuredGrid::SafeDownCast(input)))
 {
 structgrid_input->GetDimensions(dims);
 }


Also these are going to create leaks. You never call Delete() on the data sets you New()'d before reassigning.

My first problem occurs in the part, where I already got the input Scalar array and casted it to vtkFloatArray. In order to perform arithmetic operations with the data in it, I want to assign each point of the vtkFloatArray to a "real" float array, but to do that, I need to get the vtkIDList of the vtkFloatArray , so I can use the GetPoint(vtkId x)-method.

How do I get a vtkIDList of my vtkFloatArray?
There is no GetPoint() method for a vtkFloatArray. Do you mean GetTuple? The Tuples are ordered such the tuple 0 is associated with point/cell 0 for point/cell data arrays. Are you looking to get the points associated with the data set or the scalar values associated with the points?

secondly,
i don´t really now how to set the output correctly.
I want to use a method like CopyStructure() so that the grid is copied from input to output, but as the input is a DataSet and the output StructuredGrid, does this method compute points and so for the structuredGrid Format or do I have to assign them manually?
CopyStructure, does copy the geometry. Both the source and destination data set have to be the same type.


Thirdly, I don´t know how to assign my new vtkFloatArray as Attribute Data to the output. SetScalars() does not work here, the compiler says that this is not a member function of vtkStructuredGrid. But surely there must be a method to assign attribute data to a structured grid?
if you have point data then you can:

output->GetPointData()->AddArray(someArray);

There are similar calls for CellData and FieldData.

I would advise taking a close look at the examples in the vtk user guide. In the filters I have seen you will implement RequestData and get the input and output from an instance of vtkInformation. here is an example using unstructured grids:

int MyPv3Filter::RequestData(
       vtkInformation *req,
       vtkInformationVector **input,
       vtkInformationVector *output)
{
 vtkDataObject *tmpDataObj;
 // Get the inputs
 tmpDataObj
   = input[0]->GetInformationObject(0)->Get(vtkDataObject::DATA_OBJECT());
 vtkUnstructuredGrid *usgIn
   = dynamic_cast<vtkUnstructuredGrid *>(tmpDataObj);
 // Get the outputs
 tmpDataObj
   = output->GetInformationObject(0)->Get(vtkDataObject::DATA_OBJECT());
 vtkUnstructuredGrid *usgOut
   = dynamic_cast<vtkUnstructuredGrid *>(tmpDataObj);

 // do stuff here

 return 1;
}

In regard to the input arrays, they can be easily obtained from PointData, CellData, or FieldData via a call such as

usgIn->GetPointData()->GetArray(x).

thx,
Natalie

------------------------------------------------------------------------
Express yourself instantly with MSN Messenger! MSN Messenger <http://clk.atdmt.com/AVE/go/onm00200471ave/direct/01/>
------------------------------------------------------------------------

_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview


--
Burlen Loring
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x137

_______________________________________________
ParaView mailing list
[email protected]
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to