fix issues assigning material sets and material lists

This commit is contained in:
Andrej730
2024-07-29 12:45:41 +05:00
parent 11b62a0fdc
commit 46b3bfecd1
4 changed files with 8 additions and 3 deletions
+1 -1
View File
@@ -118,7 +118,6 @@ def assign_material(
continue
ifc.run("material.assign_material", products=[element], type=material_type, material=material)
material_tool.ensure_material_assigned(elements=[element], material_type=material_type, material=material)
assigned_material = material_tool.get_material(element)
assert assigned_material # Type checker.
@@ -128,6 +127,7 @@ def assign_material(
material_tool.add_material_to_set(material_set=material, material=default_material)
elif material_tool.is_a_material_set(assigned_material):
material_tool.add_material_to_set(material_set=assigned_material, material=material)
material_tool.ensure_material_assigned(elements=[element], material_type=material_type, material=material)
def unassign_material(ifc: tool.Ifc, material_tool: tool.Material, objects: list[bpy.types.Object]) -> None:
+2 -1
View File
@@ -321,7 +321,8 @@ class Material(blenderbim.core.tool.Material):
) -> None:
"""Ensure blender materials are updated after a material assignment.
Designed to be called after material.assign_material API call."""
Designed to be called after material.assign_material API call.
For material sets it should be called after some item is already added to the material set."""
# NOTE: adding/editing/removing layers/profiles/constituents is not supported.
# Adding support for profiles/layers it only will be possible when we'll be adding styles
+2 -1
View File
@@ -1308,7 +1308,8 @@ class Model(blenderbim.core.tool.Model):
obj = next(iter(mesh_users))
element = tool.Ifc.get_entity(obj)
own_material = ifcopenshell.util.element.get_material(element, should_inherit=False)
assert element # Type checker.
own_material = next(iter(ifcopenshell.util.element.get_materials(element, should_inherit=False)), None)
inherited_mstyle = tool.Geometry.get_inherited_material_style(element)
if assigned_material: