mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-18 19:30:25 +00:00
Fix bug and add boolean tests where if you added a boolean that fully clipped something you couldn't edit it due to lack of item ids.
This commit is contained in:
@@ -2888,6 +2888,15 @@ class ImportRepresentationItems(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
else:
|
else:
|
||||||
assert False, "Unexpected mesh type."
|
assert False, "Unexpected mesh type."
|
||||||
|
|
||||||
|
if not item_ids:
|
||||||
|
# It is possible that the user has created a shape that
|
||||||
|
# IfcOpenShell cannot render (i.e. boolean clipped everything), but
|
||||||
|
# we still want to edit items. I'm not sure the best way to handle
|
||||||
|
# this, but for now perhaps we can detect when there are no
|
||||||
|
# item_ids at all.
|
||||||
|
representation = tool.Ifc.get_entity(data)
|
||||||
|
item_ids = [i["item"].id() for i in ifcopenshell.util.representation.resolve_items(representation)]
|
||||||
|
|
||||||
queue = list(set(item_ids))
|
queue = list(set(item_ids))
|
||||||
processed_ids = set()
|
processed_ids = set()
|
||||||
boolean_ids = set()
|
boolean_ids = set()
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
markers =
|
markers =
|
||||||
aggregate
|
aggregate
|
||||||
attribute
|
attribute
|
||||||
|
boolean
|
||||||
brick
|
brick
|
||||||
classification
|
classification
|
||||||
context
|
context
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
@boolean
|
||||||
|
Feature: Boolean
|
||||||
|
Manage boolean hierarchies and boolean results
|
||||||
|
|
||||||
|
Scenario: Ensure added booleans are marked as manual
|
||||||
|
Given an empty IFC project
|
||||||
|
And I open the "Add" menu
|
||||||
|
And I trigger "Add Element"
|
||||||
|
And I set the "Definition" property to "IfcElement"
|
||||||
|
And I set the "Class" property to "IfcFurniture"
|
||||||
|
And I set the "Representation" property to "Custom Extruded Solid"
|
||||||
|
And I click "OK"
|
||||||
|
And the object "IfcFurniture/Unnamed" exists
|
||||||
|
And I toggle edit mode
|
||||||
|
And the object "Item/IfcExtrudedAreaSolid/77" exists
|
||||||
|
And I open the "Add Item" menu
|
||||||
|
When I click "Half Space Solid"
|
||||||
|
And the object "Item/IfcHalfSpaceSolid/90" exists
|
||||||
|
And I deselect all objects
|
||||||
|
And I toggle edit mode
|
||||||
|
And I select the object "IfcFurniture/Unnamed"
|
||||||
|
And I look at the "Property Sets" panel
|
||||||
|
Then I see "BBIM_Boolean"
|
||||||
|
And I see "[91]"
|
||||||
|
|
||||||
|
Scenario: Ensure removed booleans are unmarked as manual
|
||||||
|
Given an empty IFC project
|
||||||
|
And I open the "Add" menu
|
||||||
|
And I trigger "Add Element"
|
||||||
|
And I set the "Definition" property to "IfcElement"
|
||||||
|
And I set the "Class" property to "IfcFurniture"
|
||||||
|
And I set the "Representation" property to "Custom Extruded Solid"
|
||||||
|
And I click "OK"
|
||||||
|
And the object "IfcFurniture/Unnamed" exists
|
||||||
|
And I toggle edit mode
|
||||||
|
And the object "Item/IfcExtrudedAreaSolid/77" exists
|
||||||
|
And I open the "Add Item" menu
|
||||||
|
And I click "Half Space Solid"
|
||||||
|
And I deselect all objects
|
||||||
|
And I toggle edit mode
|
||||||
|
And I select the object "IfcFurniture/Unnamed"
|
||||||
|
And I toggle edit mode
|
||||||
|
And I select the object "Item/IfcHalfSpaceSolid/90"
|
||||||
|
When I delete the selected objects
|
||||||
|
And I toggle edit mode
|
||||||
|
And I select the object "IfcFurniture/Unnamed"
|
||||||
|
And I look at the "Property Sets" panel
|
||||||
|
Then I don't see "BBIM_Boolean"
|
||||||
|
And I don't see "[91]"
|
||||||
Reference in New Issue
Block a user