Merge pull request #13520 from wwmayer/fix_material

Fix further material issues
This commit is contained in:
Chris Hennes
2024-04-22 11:16:44 -05:00
committed by GitHub
7 changed files with 62 additions and 33 deletions

View File

@@ -143,31 +143,36 @@ int MaterialPy::PyInit(PyObject* args, PyObject* kwds)
return -1;
}
if (diffuse) {
setDiffuseColor(Py::Object(diffuse));
}
try {
if (diffuse) {
setDiffuseColor(Py::Object(diffuse));
}
if (ambient) {
setAmbientColor(Py::Object(ambient));
}
if (ambient) {
setAmbientColor(Py::Object(ambient));
}
if (specular) {
setSpecularColor(Py::Object(specular));
}
if (specular) {
setSpecularColor(Py::Object(specular));
}
if (emissive) {
setEmissiveColor(Py::Object(emissive));
}
if (emissive) {
setEmissiveColor(Py::Object(emissive));
}
if (shininess) {
setShininess(Py::Float(shininess));
}
if (shininess) {
setShininess(Py::Float(shininess));
}
if (transparency) {
setTransparency(Py::Float(transparency));
}
if (transparency) {
setTransparency(Py::Float(transparency));
}
return 0;
return 0;
}
catch (const Py::Exception&) {
return -1;
}
}
// returns a string which represents the object e.g. when printed in python
@@ -200,7 +205,13 @@ Py::Object MaterialPy::getAmbientColor() const
void MaterialPy::setAmbientColor(Py::Object arg)
{
getMaterialPtr()->ambientColor = toColor(*arg);
try {
getMaterialPtr()->ambientColor = toColor(*arg);
}
catch (const Base::Exception& e) {
e.setPyException();
throw Py::Exception();
}
}
Py::Object MaterialPy::getDiffuseColor() const
@@ -215,7 +226,13 @@ Py::Object MaterialPy::getDiffuseColor() const
void MaterialPy::setDiffuseColor(Py::Object arg)
{
getMaterialPtr()->diffuseColor = toColor(*arg);
try {
getMaterialPtr()->diffuseColor = toColor(*arg);
}
catch (const Base::Exception& e) {
e.setPyException();
throw Py::Exception();
}
}
Py::Object MaterialPy::getEmissiveColor() const
@@ -230,7 +247,13 @@ Py::Object MaterialPy::getEmissiveColor() const
void MaterialPy::setEmissiveColor(Py::Object arg)
{
getMaterialPtr()->emissiveColor = toColor(*arg);
try {
getMaterialPtr()->emissiveColor = toColor(*arg);
}
catch (const Base::Exception& e) {
e.setPyException();
throw Py::Exception();
}
}
Py::Object MaterialPy::getSpecularColor() const
@@ -245,7 +268,13 @@ Py::Object MaterialPy::getSpecularColor() const
void MaterialPy::setSpecularColor(Py::Object arg)
{
getMaterialPtr()->specularColor = toColor(*arg);
try {
getMaterialPtr()->specularColor = toColor(*arg);
}
catch (const Base::Exception& e) {
e.setPyException();
throw Py::Exception();
}
}
Py::Float MaterialPy::getShininess() const

View File

@@ -302,7 +302,7 @@ class _ViewProviderFence(ArchComponent.ViewProviderComponent):
def applyColors(self, obj):
if not hasattr(obj.ViewObject, "UseOriginalColors") or not obj.ViewObject.UseOriginalColors:
obj.ViewObject.DiffuseColor = [obj.ViewObject.ShapeAppeaarance.DiffuseColor]
obj.ViewObject.DiffuseColor = [obj.ViewObject.ShapeAppeaarance[0].DiffuseColor]
else:
post = obj.Post
section = obj.Section

View File

@@ -727,7 +727,7 @@ class _ViewProviderSpace(ArchComponent.ViewProviderComponent):
elif prop == "ShapeColor":
if hasattr(vobj,"ShapeColor"):
self.fmat = vobj.ShapeColor.getValue()
self.fmat.diffuseColor.setValue((vobj.ShapeColor[0],vobj.ShapeColor[1],vobj.ShapeColor[2]))
elif prop == "Transparency":
if hasattr(vobj,"Transparency"):

View File

@@ -59,7 +59,7 @@ def debugMarker(vector, label, color=None, radius=0.5):
vector, FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0)
)
if color:
obj.ViewObject.ShapeAppearance.DiffuseColor = color
obj.ViewObject.ShapeColor = color
def debugCircle(vector, r, label, color=None):
@@ -73,7 +73,7 @@ def debugCircle(vector, r, label, color=None):
)
obj.ViewObject.Transparency = 90
if color:
obj.ViewObject.ShapeAppearance.DiffuseColor = color
obj.ViewObject.ShapeColor = color
def addAngle(a1, a2):

View File

@@ -231,7 +231,7 @@ class TaskPanel:
)
self.interpshape.Shape = obj.interpSurface
self.interpshape.ViewObject.Transparency = 60
self.interpshape.ViewObject.ShapeAppearance.DiffuseColor = (1.00000, 1.00000, 0.01961)
self.interpshape.ViewObject.ShapeColor = (1.00000, 1.00000, 0.01961)
self.interpshape.ViewObject.Selectable = False
stock = PathUtils.findParentJob(obj).Stock
self.interpshape.Placement.Base.z = stock.Shape.BoundBox.ZMax

View File

@@ -83,7 +83,7 @@ def debugMarker(vector, label, color=None, radius=0.5):
vector, FreeCAD.Rotation(FreeCAD.Vector(0, 0, 1), 0)
)
if color:
obj.ViewObject.ShapeAppearance.DiffuseColor = color
obj.ViewObject.ShapeColor = color
def debugCylinder(vector, r, height, label, color=None):
@@ -97,7 +97,7 @@ def debugCylinder(vector, r, height, label, color=None):
)
obj.ViewObject.Transparency = 90
if color:
obj.ViewObject.ShapeAppearance.DiffuseColor = color
obj.ViewObject.ShapeColor = color
def debugCone(vector, r1, r2, height, label, color=None):
@@ -112,7 +112,7 @@ def debugCone(vector, r1, r2, height, label, color=None):
)
obj.ViewObject.Transparency = 90
if color:
obj.ViewObject.ShapeAppearance.DiffuseColor = color
obj.ViewObject.ShapeColor = color
class Tag:

View File

@@ -228,7 +228,7 @@ class PathSimulation:
)
self.cutMaterialIn.ViewObject.Proxy = 0
self.cutMaterialIn.ViewObject.show()
self.cutMaterialIn.ViewObject.ShapeAppearance.DiffuseColor = (1.0, 0.85, 0.45, 0.0)
self.cutMaterialIn.ViewObject.ShapeColor = (1.0, 0.85, 0.45, 0.0)
else:
self.cutMaterial = FreeCAD.ActiveDocument.addObject(
"Part::FeaturePython", "CutMaterial"
@@ -236,7 +236,7 @@ class PathSimulation:
self.cutMaterial.Shape = self.job.Stock.Shape
self.cutMaterial.ViewObject.Proxy = 0
self.cutMaterial.ViewObject.show()
self.cutMaterial.ViewObject.ShapeAppearance.DiffuseColor = (0.5, 0.25, 0.25, 0.0)
self.cutMaterial.ViewObject.ShapeColor = (0.5, 0.25, 0.25, 0.0)
# Add cut path solid for debug
if self.debug: