mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
Fix error editing prop templates with None PrimaryMeasureType
E.g. all qto props have it's None
Error traceback:
Error: Python: Traceback (most recent call last):
File "\bonsai\bim\module\pset_template\operator.py", line 135, in execute
props.active_prop_template.primary_measure_type = template.PrimaryMeasureType
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: bpy_struct: item.attr = val: expected a string enum, not NoneType
This commit is contained in:
@@ -58,10 +58,12 @@ class PsetTemplatesData:
|
||||
return []
|
||||
schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(ifc_file.schema)
|
||||
version = ifc_file.schema
|
||||
return [
|
||||
enum_items = [
|
||||
(t, t, ifcopenshell.util.doc.get_type_doc(version, t).get("description", ""))
|
||||
for t in sorted([d.name() for d in schema.declarations() if hasattr(d, "declared_type")])
|
||||
]
|
||||
enum_items = [("-", "-", "")] + enum_items
|
||||
return enum_items
|
||||
|
||||
@classmethod
|
||||
def property_template_type(cls) -> list[tuple[str, str, str]]:
|
||||
|
||||
@@ -132,7 +132,7 @@ class EnableEditingPropTemplate(bpy.types.Operator):
|
||||
template = IfcStore.pset_template_file.by_id(props.active_prop_template_id)
|
||||
props.active_prop_template.name = template.Name or ""
|
||||
props.active_prop_template.description = template.Description or ""
|
||||
props.active_prop_template.primary_measure_type = template.PrimaryMeasureType
|
||||
props.active_prop_template.primary_measure_type = template.PrimaryMeasureType or "-"
|
||||
props.active_prop_template.template_type = template.TemplateType
|
||||
props.active_prop_template.enum_values.clear()
|
||||
|
||||
@@ -287,13 +287,18 @@ class EditPropTemplate(bpy.types.Operator, tool.PsetTemplate.PsetTemplateOperato
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def _execute(self, context):
|
||||
assert IfcStore.pset_template_file
|
||||
props = context.scene.BIMPsetTemplateProperties
|
||||
active_prop_template = props.active_prop_template
|
||||
if props.active_prop_template.template_type == "P_ENUMERATEDVALUE":
|
||||
data_type = props.active_prop_template.get_value_name()
|
||||
prop = props.active_prop_template
|
||||
enumerators = [getattr(ev, data_type) for ev in prop.enum_values]
|
||||
else:
|
||||
enumerators = None
|
||||
if (primary_measure_type := active_prop_template.primary_measure_type) == "-":
|
||||
primary_measure_type = None
|
||||
|
||||
ifcopenshell.api.run(
|
||||
"pset_template.edit_prop_template",
|
||||
IfcStore.pset_template_file,
|
||||
@@ -301,7 +306,7 @@ class EditPropTemplate(bpy.types.Operator, tool.PsetTemplate.PsetTemplateOperato
|
||||
attributes={
|
||||
"Name": props.active_prop_template.name,
|
||||
"Description": props.active_prop_template.description,
|
||||
"PrimaryMeasureType": props.active_prop_template.primary_measure_type,
|
||||
"PrimaryMeasureType": primary_measure_type,
|
||||
"TemplateType": props.active_prop_template.template_type,
|
||||
"Enumerators": enumerators,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user