From 93d745235cdccce8652e6eb97309f7b2764bf367 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 15 Apr 2022 12:36:29 +0200 Subject: [PATCH] Fem: scale imported vtk data set --- src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp | 32 +------------------ src/Mod/Fem/Gui/ViewProviderFemPostObject.h | 3 -- src/Mod/Fem/femsolver/elmer/tasks.py | 3 +- 3 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index 243c45c443..bbbf11e30c 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -63,8 +63,6 @@ typedef const vtkIdType* vtkIdTypePtr; typedef vtkIdType* vtkIdTypePtr; #endif -const char* ViewProviderFemPostObject::ScaleEnums[] = { "1", "1000", nullptr }; - PROPERTY_SOURCE(FemGui::ViewProviderFemPostObject, Gui::ViewProviderDocumentObject) ViewProviderFemPostObject::ViewProviderFemPostObject() : m_blockPropertyChanges(false) @@ -73,9 +71,6 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() : m_blockPropertyChanges( ADD_PROPERTY_TYPE(Field, ((long)0), "Coloring", App::Prop_None, "Select the field used for calculating the color"); ADD_PROPERTY_TYPE(VectorMode, ((long)0), "Coloring", App::Prop_None, "Select what to show for a vector field"); ADD_PROPERTY(Transparency, (0)); - ADD_PROPERTY_TYPE(Scale, (0L), "Base", (App::PropertyType)(App::Prop_None), "Scale factor of the mesh"); - Scale.setEnums(ScaleEnums); - Scale.setReadOnly(true); sPixmap = "fem-femmesh-from-shape"; @@ -426,33 +421,11 @@ void ViewProviderFemPostObject::WritePointData(vtkPoints* points, vtkDataArray* if (!points) return; - // we must inherit the Scale of parent meshes (for example for clip filters) - auto parents = pcObject->getInList(); - if (!parents.empty()) { - for (auto itParents = parents.begin(); itParents != parents.end(); ++itParents) { - if ((*itParents)->getTypeId() == Base::Type::fromName("Fem::FemPostPipeline")) { - auto vpObject = dynamic_cast( - Gui::Application::Instance->getViewProvider(*itParents)); - if (vpObject) { - auto propScale = Base::freecad_dynamic_cast( - vpObject->getPropertyByName("Scale")); - if (propScale) { - if (propScale->getValue() != Scale.getValue()) { - Scale.setValue(propScale->getValue()); - break; - } - } - } - } - } - } - m_coordinates->point.setNum(points->GetNumberOfPoints()); SbVec3f* pnts = m_coordinates->point.startEditing(); - double scale = (strcmp(Scale.getValueAsString(), "1") == 0) ? 1.0 : 1000.0; for (int i = 0; i < points->GetNumberOfPoints(); i++) { double* p = points->GetPoint(i); - pnts[i].setValue(p[0] * scale, p[1] * scale, p[2] * scale); + pnts[i].setValue(p[0], p[1], p[2]); } m_coordinates->point.finishEditing(); @@ -594,9 +567,6 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop) { else if (prop == &Transparency) { WriteTransparency(); } - else if (prop == &Scale) { - update3D(); - } ViewProviderDocumentObject::onChanged(prop); } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h index bc2445ec95..e4e12cd61a 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h @@ -77,7 +77,6 @@ public: App::PropertyEnumeration Field; App::PropertyEnumeration VectorMode; App::PropertyPercent Transparency; - App::PropertyEnumeration Scale; void attach(App::DocumentObject *pcObject); void setDisplayMode(const char* ModeName); @@ -146,8 +145,6 @@ protected: vtkSmartPointer m_wireframe, m_wireframeSurface; vtkSmartPointer m_points, m_pointsSurface; - static const char* ScaleEnums[]; - private: void updateProperties(); void update3D(); diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index 53dc45070a..6afb35848e 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -161,6 +161,7 @@ class Results(run.Results): self._createResults() postPath = self._getResultFile() self.solver.ElmerResult.read(postPath) + self.solver.ElmerResult.scale(1000) self.solver.ElmerResult.getLastPostObject().touch() self.solver.Document.recompute() @@ -169,8 +170,6 @@ class Results(run.Results): "Fem::FemPostPipeline", self.solver.Name + "Result") self.solver.ElmerResult.Label = self.solver.Label + "Result" self.analysis.addObject(self.solver.ElmerResult) - # set the scale to 1 (meaning factor 1000) to scale the mesh back for display - self.solver.ElmerResult.ViewObject.Scale = 1 # to assure the user sees something, set the default to Surface self.solver.ElmerResult.ViewObject.DisplayMode = "Surface"