disable boolean for mesh evaluation (#1466)

Disabling boolean modifier on screen instead of remove / add is enough to get proper mesh representation.
This commit is contained in:
s-leger
2021-05-16 02:20:56 +02:00
committed by GitHub
parent 5aec0718f4
commit ff06f452d5
@@ -46,14 +46,9 @@ class Usecase:
def evaluate_geometry(self): def evaluate_geometry(self):
self.boolean_modifiers = [] self.boolean_modifiers = []
for modifier in self.settings["blender_object"].modifiers: for modifier in self.settings["blender_object"].modifiers:
if not modifier.type == "BOOLEAN": if modifier.type == "BOOLEAN":
continue modifier.show_viewport = False
modifier_data = {}
for name in ["operation", "operand_type", "object", "solver", "use_self"]:
modifier_data[name] = getattr(modifier, name)
self.boolean_modifiers.append(modifier_data)
self.settings["blender_object"].modifiers.remove(modifier)
if self.settings["should_force_triangulation"]: if self.settings["should_force_triangulation"]:
mesh = self.settings["blender_object"].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh() mesh = self.settings["blender_object"].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
bm = bmesh.new() bm = bmesh.new()
@@ -68,10 +63,9 @@ class Usecase:
self.settings["blender_object"].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh() self.settings["blender_object"].evaluated_get(bpy.context.evaluated_depsgraph_get()).to_mesh()
) )
for modifier in self.boolean_modifiers: for modifier in self.settings["blender_object"].modifiers:
new = self.settings["blender_object"].modifiers.new("IfcOpeningElement", "BOOLEAN") if modifier.type == "BOOLEAN":
for key, value in modifier.items(): modifier.show_viewport = True
setattr(new, key, value)
def create_model_representation(self): def create_model_representation(self):
if self.settings["context"].is_a() == "IfcGeometricRepresentationContext": if self.settings["context"].is_a() == "IfcGeometricRepresentationContext":