Fix integers in enumerations #1943 (#1946)

* first draft

* small change
This commit is contained in:
Vukas Pajic
2022-01-04 03:10:42 +01:00
committed by GitHub
parent 2c0df1d4f5
commit 53f6454784
2 changed files with 10 additions and 2 deletions
@@ -148,6 +148,7 @@ class EnablePsetEditing(bpy.types.Operator):
new.is_null = data.get(prop_template.Name, None) is None new.is_null = data.get(prop_template.Name, None) is None
new.is_optional = True new.is_optional = True
new.data_type = data_type new.data_type = data_type
new.enum_data_type = prop_template.PrimaryMeasureType
if data_type == "string": if data_type == "string":
new.string_value = "" if new.is_null else data[prop_template.Name] new.string_value = "" if new.is_null else data[prop_template.Name]
+8 -1
View File
@@ -23,6 +23,7 @@ import importlib
import ifcopenshell import ifcopenshell
import ifcopenshell.util.pset import ifcopenshell.util.pset
import blenderbim.bim.handler import blenderbim.bim.handler
import blenderbim.bim.schema
from blenderbim.bim.ifc import IfcStore from blenderbim.bim.ifc import IfcStore
from collections import defaultdict from collections import defaultdict
from bpy.types import PropertyGroup from bpy.types import PropertyGroup
@@ -283,11 +284,17 @@ class Attribute(PropertyGroup):
is_optional: BoolProperty(name="Is Optional") is_optional: BoolProperty(name="Is Optional")
enum_items: StringProperty(name="Value") enum_items: StringProperty(name="Value")
enum_value: EnumProperty(items=getAttributeEnumValues, name="Value", update=updateAttributeValue) enum_value: EnumProperty(items=getAttributeEnumValues, name="Value", update=updateAttributeValue)
enum_data_type: StringProperty(name="Enum Data Type")
def get_value(self): def get_value(self):
if self.is_null: if self.is_null:
return None return None
return getattr(self, str(self.get_value_name()), None) if self.data_type == "enum":
type_map = blenderbim.bim.schema.ifc.type_map
type_fn = {'integer':int, 'string':str, 'float':float, 'bool': bool}[type_map[self.enum_data_type]]
return type_fn(self.enum_value)
else:
return getattr(self, str(self.get_value_name()), None)
def get_value_default(self): def get_value_default(self):
if self.data_type == "string": if self.data_type == "string":