mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +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 []
|
return []
|
||||||
schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(ifc_file.schema)
|
schema = ifcopenshell.ifcopenshell_wrapper.schema_by_name(ifc_file.schema)
|
||||||
version = ifc_file.schema
|
version = ifc_file.schema
|
||||||
return [
|
enum_items = [
|
||||||
(t, t, ifcopenshell.util.doc.get_type_doc(version, t).get("description", ""))
|
(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")])
|
for t in sorted([d.name() for d in schema.declarations() if hasattr(d, "declared_type")])
|
||||||
]
|
]
|
||||||
|
enum_items = [("-", "-", "")] + enum_items
|
||||||
|
return enum_items
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def property_template_type(cls) -> list[tuple[str, str, str]]:
|
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)
|
template = IfcStore.pset_template_file.by_id(props.active_prop_template_id)
|
||||||
props.active_prop_template.name = template.Name or ""
|
props.active_prop_template.name = template.Name or ""
|
||||||
props.active_prop_template.description = template.Description 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.template_type = template.TemplateType
|
||||||
props.active_prop_template.enum_values.clear()
|
props.active_prop_template.enum_values.clear()
|
||||||
|
|
||||||
@@ -287,13 +287,18 @@ class EditPropTemplate(bpy.types.Operator, tool.PsetTemplate.PsetTemplateOperato
|
|||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
|
assert IfcStore.pset_template_file
|
||||||
props = context.scene.BIMPsetTemplateProperties
|
props = context.scene.BIMPsetTemplateProperties
|
||||||
|
active_prop_template = props.active_prop_template
|
||||||
if props.active_prop_template.template_type == "P_ENUMERATEDVALUE":
|
if props.active_prop_template.template_type == "P_ENUMERATEDVALUE":
|
||||||
data_type = props.active_prop_template.get_value_name()
|
data_type = props.active_prop_template.get_value_name()
|
||||||
prop = props.active_prop_template
|
prop = props.active_prop_template
|
||||||
enumerators = [getattr(ev, data_type) for ev in prop.enum_values]
|
enumerators = [getattr(ev, data_type) for ev in prop.enum_values]
|
||||||
else:
|
else:
|
||||||
enumerators = None
|
enumerators = None
|
||||||
|
if (primary_measure_type := active_prop_template.primary_measure_type) == "-":
|
||||||
|
primary_measure_type = None
|
||||||
|
|
||||||
ifcopenshell.api.run(
|
ifcopenshell.api.run(
|
||||||
"pset_template.edit_prop_template",
|
"pset_template.edit_prop_template",
|
||||||
IfcStore.pset_template_file,
|
IfcStore.pset_template_file,
|
||||||
@@ -301,7 +306,7 @@ class EditPropTemplate(bpy.types.Operator, tool.PsetTemplate.PsetTemplateOperato
|
|||||||
attributes={
|
attributes={
|
||||||
"Name": props.active_prop_template.name,
|
"Name": props.active_prop_template.name,
|
||||||
"Description": props.active_prop_template.description,
|
"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,
|
"TemplateType": props.active_prop_template.template_type,
|
||||||
"Enumerators": enumerators,
|
"Enumerators": enumerators,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user