fix core geometry trests after c4ae957 and 698c648

This commit is contained in:
Andrej730
2024-08-01 17:51:28 +05:00
parent f0ca34d107
commit 4b00b268c0
4 changed files with 36 additions and 2 deletions
+1 -2
View File
@@ -126,8 +126,7 @@ def switch_representation(
if not current_obj_data and geometry.is_text_literal(representation):
return
use_immediate_repr = apply_openings and bool(getattr(entity, "HasOpenings", None))
use_immediate_repr = use_immediate_repr or geometry.has_material_style_override(entity)
use_immediate_repr = geometry.should_use_immediate_representation(entity, apply_openings)
if use_immediate_repr:
# if it has openings make sure to switch to element's mapped representation
representation = geometry.unresolve_type_representation(representation, entity)
+3
View File
@@ -423,6 +423,9 @@ class Geometry:
def unresolve_type_representation(cls, representation, element): pass
def delete_opening_object_placement(cls, opening): pass
def switch_from_representation(cls, obj, representation): pass
def get_blender_offset_type(cls, obj): pass
def has_material_style_override(cls, obj): pass
def should_use_immediate_representation(cls, entity, apply_openings): pass
@interface
@@ -1228,3 +1228,9 @@ class Geometry(blenderbim.core.tool.Geometry):
return
material_style = tool.Material.get_style(materials[0])
return material_style
@classmethod
def should_use_immediate_representation(cls, element: ifcopenshell.entity_instance, apply_openings: bool) -> bool:
use_immediate_repr = apply_openings and bool(getattr(element, "HasOpenings", None))
use_immediate_repr = use_immediate_repr or cls.has_material_style_override(element)
return use_immediate_repr
+26
View File
@@ -26,6 +26,7 @@ class TestEditObjectPlacement:
ifc.get_entity("obj").should_be_called().will_return("element")
geometry.clear_cache("element").should_be_called()
geometry.clear_scale("obj").should_be_called()
geometry.get_blender_offset_type("obj").should_be_called()
surveyor.get_absolute_matrix("obj").should_be_called().will_return("matrix")
ifc.run("geometry.edit_object_placement", product="element", matrix="matrix").should_be_called()
geometry.record_object_position("obj").should_be_called()
@@ -193,6 +194,7 @@ class TestSwitchRepresentation:
def test_switching_to_a_freshly_loaded_representation(self, ifc, geometry):
geometry.is_edited("obj").should_be_called().will_return(False)
geometry.get_object_data("obj").should_be_called().will_return("current_obj_data")
geometry.should_use_immediate_representation("element", True).should_be_called().will_return(False)
geometry.resolve_mapped_representation("mapped_rep").should_be_called().will_return("representation")
geometry.get_representation_data("representation").should_be_called().will_return(None)
geometry.import_representation("obj", "representation", apply_openings=True).should_be_called().will_return(
@@ -220,6 +222,7 @@ class TestSwitchRepresentation:
def test_switching_to_a_reloaded_representation_and_deleting_the_existing_data(self, ifc, geometry):
geometry.is_edited("obj").should_be_called().will_return(False)
geometry.get_object_data("obj").should_be_called().will_return("current_obj_data")
geometry.should_use_immediate_representation("element", True).should_be_called().will_return(False)
geometry.resolve_mapped_representation("mapped_rep").should_be_called().will_return("representation")
geometry.get_representation_data("representation").should_be_called().will_return("existing_data")
geometry.import_representation("obj", "representation", apply_openings=True).should_be_called().will_return(
@@ -248,13 +251,35 @@ class TestSwitchRepresentation:
def test_switching_to_an_existing_representation(self, ifc, geometry):
geometry.is_edited("obj").should_be_called().will_return(False)
ifc.get_entity("obj").should_be_called().will_return("element")
geometry.get_object_data("obj").should_be_called().will_return("current_obj_data")
geometry.should_use_immediate_representation("element", True).should_be_called().will_return(False)
geometry.resolve_mapped_representation("mapped_rep").should_be_called().will_return("representation")
geometry.get_representation_data("representation").should_be_called().will_return("data")
geometry.change_object_data("obj", "data", is_global=True).should_be_called()
geometry.record_object_materials("obj").should_be_called()
geometry.clear_modifiers("obj").should_be_called()
geometry.clear_cache("element").should_be_called()
subject.switch_representation(
ifc,
geometry,
obj="obj",
representation="mapped_rep",
should_reload=False,
is_global=True,
should_sync_changes_first=True,
)
def test_switching_to_an_existing_representation_reuse_representation(self, ifc, geometry):
geometry.is_edited("obj").should_be_called().will_return(False)
ifc.get_entity("obj").should_be_called().will_return("element")
geometry.get_object_data("obj").should_be_called().will_return("current_obj_data")
geometry.should_use_immediate_representation("element", True).should_be_called().will_return(True)
geometry.unresolve_type_representation("mapped_rep", "element").should_be_called().will_return("representation")
geometry.get_representation_data("representation").should_be_called().will_return("data")
geometry.change_object_data("obj", "data", is_global=False).should_be_called()
geometry.record_object_materials("obj").should_be_called()
geometry.clear_modifiers("obj").should_be_called()
geometry.clear_cache("element").should_be_called()
subject.switch_representation(
ifc,
@@ -273,6 +298,7 @@ class TestSwitchRepresentation:
geometry.run_geometry_update_representation(obj="obj").should_be_called()
geometry.does_representation_id_exist("representation_id").should_be_called().will_return(True)
geometry.get_object_data("obj").should_be_called().will_return("current_obj_data")
geometry.should_use_immediate_representation("element", True).should_be_called().will_return(False)
geometry.resolve_mapped_representation("mapped_rep").should_be_called().will_return("representation")
geometry.get_representation_data("representation").should_be_called().will_return("data")
geometry.change_object_data("obj", "data", is_global=False).should_be_called()