mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 13:36:25 +00:00
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:
@@ -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":
|
||||||
|
|||||||
Reference in New Issue
Block a user