diff --git a/src/Mod/Material/App/MaterialManagerPy.xml b/src/Mod/Material/App/MaterialManagerPy.xml
index f518062bc6..354c403351 100644
--- a/src/Mod/Material/App/MaterialManagerPy.xml
+++ b/src/Mod/Material/App/MaterialManagerPy.xml
@@ -25,6 +25,11 @@
Get a material object by specifying its path and library name
+
+
+ Create a new material object by specifying the UUID of its parent
+
+
List of Material libraries.
diff --git a/src/Mod/Material/App/MaterialManagerPyImpl.cpp b/src/Mod/Material/App/MaterialManagerPyImpl.cpp
index bd31992db6..833fdb0d6c 100644
--- a/src/Mod/Material/App/MaterialManagerPyImpl.cpp
+++ b/src/Mod/Material/App/MaterialManagerPyImpl.cpp
@@ -111,6 +111,27 @@ PyObject* MaterialManagerPy::getMaterialByPath(PyObject* args)
}
}
+PyObject* MaterialManagerPy::inheritMaterial(PyObject* args)
+{
+ char* uuid {};
+ if (!PyArg_ParseTuple(args, "s", &uuid)) {
+ return nullptr;
+ }
+
+ try {
+ auto parent = getMaterialManagerPtr()->getMaterial(QString::fromStdString(uuid));
+
+ // Found the parent. Create a new material with this as parent
+ auto material = new Material();
+ material->setParentUUID(QString::fromLatin1(uuid));
+ return new MaterialPy(material); // Transfers ownership
+ }
+ catch (const MaterialNotFound&) {
+ PyErr_SetString(PyExc_LookupError, "Material not found");
+ return nullptr;
+ }
+}
+
Py::List MaterialManagerPy::getMaterialLibraries() const
{
auto libraries = getMaterialManagerPtr()->getMaterialLibraries();