mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 14:31:39 +00:00
Fix error starting to edit pset without enum reference/enum values #5707
Traceback
Error: Python: Traceback (most recent call last):
File "\bonsai\bim\module\pset\operator.py", line 62, in execute
core.enable_pset_editing(tool.Pset, pset, self.pset_name, self.pset_type, self.obj, self.obj_type)
File "\bonsai\core\pset.py", line 86, in enable_pset_editing
pset_tool.import_pset_from_existing(pset, props)
File "\bonsai\tool\pset.py", line 121, in import_pset_from_existing
metadata.set_value(prop.EnumerationReference.EnumerationValues[0].wrappedValue)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'EnumerationValues'
This commit is contained in:
@@ -118,12 +118,25 @@ class Pset(bonsai.core.tool.Pset):
|
|||||||
metadata.name = prop.Name
|
metadata.name = prop.Name
|
||||||
metadata.is_null = len(simple_prop.enumerated_value.enumerated_values) == 0
|
metadata.is_null = len(simple_prop.enumerated_value.enumerated_values) == 0
|
||||||
metadata.is_optional = True
|
metadata.is_optional = True
|
||||||
metadata.set_value(prop.EnumerationReference.EnumerationValues[0].wrappedValue)
|
enum_reference = prop.EnumerationReference
|
||||||
|
selected_enum_items = [v.wrappedValue for v in (prop.EnumerationValues or ())]
|
||||||
|
|
||||||
enum_items = [v.wrappedValue for v in prop.EnumerationReference.EnumerationValues]
|
# If there is no reference, then just use the current values.
|
||||||
selected_enum_items = [v.wrappedValue for v in prop.EnumerationValues]
|
if enum_reference is None:
|
||||||
data_type = metadata.get_value_name(display_only=True)
|
enum_items = selected_enum_items
|
||||||
|
else:
|
||||||
|
enum_items = [v.wrappedValue for v in enum_reference.EnumerationValues]
|
||||||
|
|
||||||
|
# In theory there could be no reference and no current values,
|
||||||
|
# nothing to show then, I guess.
|
||||||
|
if not enum_items:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Trigger metadata to detect data_type.
|
||||||
|
metadata.set_value(enum_items[0])
|
||||||
|
data_type = metadata.get_value_name()
|
||||||
|
|
||||||
|
# Fill enum items.
|
||||||
for enum in enum_items:
|
for enum in enum_items:
|
||||||
new = simple_prop.enumerated_value.enumerated_values.add()
|
new = simple_prop.enumerated_value.enumerated_values.add()
|
||||||
setattr(new, data_type, enum)
|
setattr(new, data_type, enum)
|
||||||
|
|||||||
Reference in New Issue
Block a user