diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 4da7160b30..8c44f5a43d 100644 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -2089,6 +2089,18 @@ void setupFilter(Gui::Command* cmd, std::string Name) auto objFilter = App::GetApplication().getActiveDocument()->getActiveObject(); auto femFilter = static_cast(objFilter); + auto selObjectView = static_cast( + Gui::Application::Instance->getViewProvider(selObject) + ); + // use none field color from base filter + Base::color_traits ct {selObjectView->NoneFieldColor.getValue()}; + cmd->doCommand( + Gui::Command::Doc, + "App.activeDocument().ActiveObject.ViewObject.NoneFieldColor = (%d, %d, %d)", + ct.red(), + ct.green(), + ct.blue() + ); // TODO: FIX /* auto selObjectView = static_cast( diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index 24b8116114..a5acbafb4a 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -166,6 +166,13 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() App::Prop_None, "Set wireframe line color." ); + ADD_PROPERTY_TYPE( + NoneFieldColor, + (0.8f, 0.8f, 0.8f), + "Object Style", + App::Prop_None, + "Shape color used if Field property is None." + ); ADD_PROPERTY_TYPE( PlainColorEdgeOnSurface, (false), @@ -689,7 +696,8 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange) } if (Field.getEnumVector().empty() || Field.getValue() == 0) { - m_material->diffuseColor.setValue(SbColor(0.8, 0.8, 0.8)); + Base::Color cNone = NoneFieldColor.getValue(); + m_material->diffuseColor.setValue(SbColor(cNone.r, cNone.g, cNone.b)); float trans = Base::fromPercent(Transparency.getValue()); m_material->transparency.setValue(trans); m_materialBinding->value = SoMaterialBinding::OVERALL; @@ -867,6 +875,9 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop) int child = plainColor ? 1 : 0; m_switchMatEdges->whichChild.setValue(child); } + else if (prop == &NoneFieldColor) { + WriteColorData(ResetColorBarRange); + } ViewProviderDocumentObject::onChanged(prop); } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h index 28afc030d4..fd1cab4e9b 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h @@ -84,6 +84,7 @@ public: App::PropertyPercent Transparency; App::PropertyBool PlainColorEdgeOnSurface; App::PropertyColor EdgeColor; + App::PropertyColor NoneFieldColor; App::PropertyFloatConstraint LineWidth; App::PropertyFloatConstraint PointSize; diff --git a/src/Mod/Fem/femcommands/manager.py b/src/Mod/Fem/femcommands/manager.py index bb2edc3e05..094a112da4 100644 --- a/src/Mod/Fem/femcommands/manager.py +++ b/src/Mod/Fem/femcommands/manager.py @@ -406,6 +406,9 @@ class CommandManager: FreeCADGui.doCommand( 'FreeCAD.ActiveDocument.ActiveObject.ViewObject.SelectionStyle = "BoundBox"' ) + FreeCADGui.doCommand( + f"FreeCAD.ActiveDocument.ActiveObject.ViewObject.NoneFieldColor = {self.selobj.ViewObject.NoneFieldColor}" + ) # hide selected filter FreeCADGui.doCommand(