diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 5afd577707..38f66706d3 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -104,6 +104,7 @@ #include "ViewProviderFeature.h" #include "ViewProviderGeoFeatureGroup.h" #include "ViewProviderGeometryObject.h" +#include "ViewProviderGeometryObjectPy.h" #include "ViewProviderGroupExtension.h" #include "ViewProviderSuppressibleExtension.h" #include "ViewProviderImagePlane.h" @@ -469,6 +470,8 @@ Application::Application(bool GUIenabled) Base::Interpreter().addType(&ViewProviderPy::Type, module, "ViewProvider"); Base::Interpreter().addType( &ViewProviderDocumentObjectPy::Type, module, "ViewProviderDocumentObject"); + Base::Interpreter().addType( + &ViewProviderGeometryObjectPy::Type, module, "ViewProviderGeometryObject"); Base::Interpreter().addType(&ViewProviderLinkPy::Type, module, "ViewProviderLink"); } diff --git a/src/Gui/ViewProviderGeometryObject.cpp b/src/Gui/ViewProviderGeometryObject.cpp index a5820c48dd..661d6be980 100644 --- a/src/Gui/ViewProviderGeometryObject.cpp +++ b/src/Gui/ViewProviderGeometryObject.cpp @@ -71,7 +71,7 @@ const App::PropertyIntegerConstraint::Constraints intPercent = {0, 100, 5}; ViewProviderGeometryObject::ViewProviderGeometryObject() { - App::Material mat = getDefaultMaterial(); + App::Material mat = getUserDefinedMaterial(); long initialTransparency = toPercent(mat.transparency); static const char* dogroup = "Display Options"; @@ -115,7 +115,7 @@ ViewProviderGeometryObject::~ViewProviderGeometryObject() pcBoundColor->unref(); } -App::Material ViewProviderGeometryObject::getDefaultMaterial() const +App::Material ViewProviderGeometryObject::getUserDefinedMaterial() { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); diff --git a/src/Gui/ViewProviderGeometryObject.h b/src/Gui/ViewProviderGeometryObject.h index 6b2d745c31..44ef6dc80a 100644 --- a/src/Gui/ViewProviderGeometryObject.h +++ b/src/Gui/ViewProviderGeometryObject.h @@ -96,6 +96,7 @@ public: /// Get the python wrapper for that ViewProvider PyObject* getPyObject() override; + static App::Material getUserDefinedMaterial(); protected: /// get called by the container whenever a property has been changed @@ -110,7 +111,6 @@ protected: private: void setSoMaterial(const App::Material& source); - App::Material getDefaultMaterial() const; bool isSelectionEnabled() const; protected: diff --git a/src/Gui/ViewProviderGeometryObjectPy.xml b/src/Gui/ViewProviderGeometryObjectPy.xml index a24ec3bfbb..d5a9625f89 100644 --- a/src/Gui/ViewProviderGeometryObjectPy.xml +++ b/src/Gui/ViewProviderGeometryObjectPy.xml @@ -13,5 +13,13 @@ This is the ViewProvider geometry class + + + getUserDefinedMaterial() -> object + + Get a material object with the user-defined colors. + + + diff --git a/src/Gui/ViewProviderGeometryObjectPyImp.cpp b/src/Gui/ViewProviderGeometryObjectPyImp.cpp index 98ba0ac5d4..c7dfba3af8 100644 --- a/src/Gui/ViewProviderGeometryObjectPyImp.cpp +++ b/src/Gui/ViewProviderGeometryObjectPyImp.cpp @@ -28,6 +28,7 @@ #endif #include +#include #include #include "ViewProviderGeometryObjectPy.h" @@ -68,6 +69,12 @@ PyObject* ViewProviderGeometryObjectPy::getCustomAttributes(const char* attr) co return nullptr; } +PyObject* ViewProviderGeometryObjectPy::getUserDefinedMaterial() +{ + App::Material mat = ViewProviderGeometryObject::getUserDefinedMaterial(); + return new App::MaterialPy(new App::Material(mat)); +} + int ViewProviderGeometryObjectPy::setCustomAttributes(const char* attr, PyObject* obj) { ViewProviderGeometryObject* vp = getViewProviderGeometryObjectPtr();