diff --git a/src/App/Material.cpp b/src/App/Material.cpp
index 8962dc33d7..389e2e94c1 100644
--- a/src/App/Material.cpp
+++ b/src/App/Material.cpp
@@ -39,16 +39,15 @@ using namespace App;
Material::Material()
: shininess {0.9000F}
, transparency {}
- , _matType {USER_DEFINED}
+ , _matType {}
{
- setType(STEEL);
- setType(USER_DEFINED);
+ setType(DEFAULT);
}
Material::Material(const char* MatName)
: shininess {0.9000F}
, transparency {}
- , _matType {USER_DEFINED}
+ , _matType {}
{
set(MatName);
}
@@ -56,7 +55,7 @@ Material::Material(const char* MatName)
Material::Material(MaterialType MatType)
: shininess {0.9000F}
, transparency {}
- , _matType {USER_DEFINED}
+ , _matType {}
{
setType(MatType);
}
diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp
index 07452a4de1..3117e5e739 100644
--- a/src/App/PropertyStandard.cpp
+++ b/src/App/PropertyStandard.cpp
@@ -2632,7 +2632,10 @@ TYPESYSTEM_SOURCE(App::PropertyMaterialList, App::PropertyLists)
//**************************************************************************
// Construction/Destruction
-PropertyMaterialList::PropertyMaterialList() = default;
+PropertyMaterialList::PropertyMaterialList()
+{
+ setSizeOne();
+}
PropertyMaterialList::~PropertyMaterialList() = default;
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();