- boxPointPicker->bbSetOutputPoint( vecPoint );
- boxPointPicker->bbSetOutputMesh( picker->GetProp3D() );
- boxPointPicker->bbSetOutputPointId( picker->GetPointId() );
- boxPointPicker->bbSetOutputCellId( picker->GetCellId() );
- boxPointPicker->bbSignalOutputModification();
- } else {
-// printf("creaVtkCallbackPointPicker EED picker --\n");
- } // if
- }
+ boxPointPicker->bbSetOutputPoint( vecPoint );
+ boxPointPicker->bbSetOutputMesh( picker->GetProp3D() );
+ boxPointPicker->bbSetOutputPointId( picker->GetPointId() );
+
+ boxPointPicker->bbSetOutputCellId( picker->GetCellId() );
+ vtkDataSet *dataset = picker->GetDataSet();
+ if (strcmp(dataset->GetClassName(),"vtkPolyData")==0)
+ {
+ vtkPolyData *polydata = (vtkPolyData*)dataset;
+ vtkPointData *pointdata = polydata->GetPointData();
+ vtkDataArray *dataarray;
+ double *pValue;
+ /*
+ int i,size=pointdata->GetNumberOfArrays();
+ for(i=0;i<size;i++)
+ {
+ dataarray=pointdata->GetArray(i);
+ printf("EED creaVtkCallbackPointPicker::Execute dataarray=%s n=%ld p=%ld\n", dataarray->GetName(),dataarray->GetNumberOfValues() ,polydata->GetNumberOfPoints() );
+ } // for i
+ */
+ dataarray = pointdata->GetNormals();
+ if (dataarray!=NULL)
+ {
+ pValue = dataarray->GetTuple3( picker->GetPointId() );
+ std::vector<double> lstNormal;
+ lstNormal.push_back(pValue[0]);
+ lstNormal.push_back(pValue[1]);
+ lstNormal.push_back(pValue[2]);
+ boxPointPicker->bbSetOutputNormal( lstNormal );
+ } // if dataarray
+ } // if ClassName
+ boxPointPicker->bbSignalOutputModification();
+ } // if
+ } // if Active