Material: Material appearance

Uses new material system for appearance

Each feature object now has a property called ShapeMaterial that
describes its physical properties. If it has a shape, it has a
material.

The ShapeColor attribute is replaced by a ShapeAppearance attribute.
This is a material list that describes all appearance properties, not
just diffuse color. As a list in can be used for all elements of a
shape, such as edges and faces.

A new widget is provided to allow the user to select materials in a
consistent fashion. It can also launch the material editor with its
more advanced capabilities.
This commit is contained in:
David Carter
2024-03-17 18:37:56 -04:00
committed by Chris Hennes
parent 37c38acd19
commit ba20441935
121 changed files with 4682 additions and 1685 deletions

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.ShapeColor = color
obj.ViewObject.ShapeAppearance.DiffuseColor = 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.ShapeColor = color
obj.ViewObject.ShapeAppearance.DiffuseColor = 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.ShapeColor = (1.00000, 1.00000, 0.01961)
self.interpshape.ViewObject.ShapeAppearance.DiffuseColor = (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.ShapeColor = color
obj.ViewObject.ShapeAppearance.DiffuseColor = 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.ShapeColor = color
obj.ViewObject.ShapeAppearance.DiffuseColor = 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.ShapeColor = color
obj.ViewObject.ShapeAppearance.DiffuseColor = color
class Tag:

View File

@@ -108,7 +108,7 @@ class _ViewProviderFixture:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)
@@ -129,7 +129,7 @@ class _ViewProviderFixture:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)

View File

@@ -94,7 +94,7 @@ class ViewProvider:
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
self.deleteOnReject = True

View File

@@ -228,7 +228,7 @@ class PathSimulation:
)
self.cutMaterialIn.ViewObject.Proxy = 0
self.cutMaterialIn.ViewObject.show()
self.cutMaterialIn.ViewObject.ShapeColor = (1.0, 0.85, 0.45, 0.0)
self.cutMaterialIn.ViewObject.ShapeAppearance.DiffuseColor = (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.ShapeColor = (0.5, 0.25, 0.25, 0.0)
self.cutMaterial.ViewObject.ShapeAppearance.DiffuseColor = (0.5, 0.25, 0.25, 0.0)
# Add cut path solid for debug
if self.debug:

View File

@@ -70,7 +70,7 @@ class _ViewProviderComment:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)
@@ -91,7 +91,7 @@ class _ViewProviderComment:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)

View File

@@ -77,7 +77,7 @@ class _ViewProviderStop:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)
@@ -98,7 +98,7 @@ class _ViewProviderStop:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)

View File

@@ -59,7 +59,7 @@ class ViewProvider:
vobj.setEditorMode("DisplayMode", mode)
vobj.setEditorMode("BoundingBox", mode)
vobj.setEditorMode("Selectable", mode)
vobj.setEditorMode("ShapeColor", mode)
vobj.setEditorMode("ShapeAppearance", mode)
vobj.setEditorMode("Transparency", mode)
vobj.setEditorMode("Visibility", mode)
self.vobj = vobj