FEM Post: FreeCADify the vtk post processing

- Data property for saving/loading vtk data
- Use FreeCAD recompute system instead of vtk pipeline
This commit is contained in:
Stefan Tröger
2016-01-01 14:12:23 +01:00
committed by wmayer
parent 7ad1eae9b7
commit c2a5cfb2f1
15 changed files with 265 additions and 356 deletions

View File

@@ -42,38 +42,21 @@ PROPERTY_SOURCE(Fem::FemPostObject, App::GeoFeature)
FemPostObject::FemPostObject()
{
ADD_PROPERTY(ModificationTime,(0));
ADD_PROPERTY(Data,(0));
}
FemPostObject::~FemPostObject()
{
}
short FemPostObject::mustExecute(void) const
{
return 1;
}
vtkBoundingBox FemPostObject::getBoundingBox() {
DocumentObjectExecReturn* FemPostObject::execute(void) {
if(providesPolyData()) {
polyDataSource->Update();
vtkSmartPointer<vtkPolyData> poly = polyDataSource->GetOutput();
if(static_cast<unsigned long>(ModificationTime.getValue()) != poly->GetMTime()) {
//update the bounding box
m_boundingBox = vtkBoundingBox(poly->GetBounds());
//update the modification time to let the viewprovider know something changed
ModificationTime.setValue(static_cast<long>(poly->GetMTime()));
}
}
vtkBoundingBox box;
return DocumentObject::StdReturn;
}
void FemPostObject::onChanged(const Property* prop)
{
App::GeoFeature::onChanged(prop);
if(Data.getValue() && Data.getValue()->IsA("vtkDataSet"))
box.AddBounds(vtkDataSet::SafeDownCast(Data.getValue())->GetBounds());
//TODO: add calculation of multiblock and Multipiece datasets
return box;
}