diff --git a/src/blenderbim/blenderbim/bim/module/spatial/prop.py b/src/blenderbim/blenderbim/bim/module/spatial/prop.py index 35ecf3236d..b17b643af7 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/prop.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/prop.py @@ -44,10 +44,9 @@ def update_elevation(self, context): def update_active_container_index(self, context): - si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) self.active_container_id = self.containers[self.active_container_index].ifc_definition_id self.container_name = self.containers[self.active_container_index].name - self.elevation = self.containers[self.active_container_index].elevation * si_conversion + self.elevation = self.containers[self.active_container_index].elevation def updateContainerName(self, context): @@ -78,7 +77,7 @@ class BIMObjectSpatialProperties(PropertyGroup): class BIMContainer(PropertyGroup): name: StringProperty(name="Name", update=updateContainerName) - elevation: FloatProperty(name="Elevation") + elevation: FloatProperty(name="Elevation", subtype="DISTANCE") level_index: IntProperty(name="Level Index") has_children: BoolProperty(name="Has Children") is_expanded: BoolProperty(name="Is Expanded") diff --git a/src/blenderbim/blenderbim/bim/module/spatial/ui.py b/src/blenderbim/blenderbim/bim/module/spatial/ui.py index 8f73b18a4f..28e65d2982 100644 --- a/src/blenderbim/blenderbim/bim/module/spatial/ui.py +++ b/src/blenderbim/blenderbim/bim/module/spatial/ui.py @@ -147,7 +147,7 @@ class BIM_UL_containers_manager(UIList): split1 = row.split(factor=0.7) split1.prop(item, "name", emboss=False, text="") split2 = row.split(factor=1) - split2.label(text=str(item.elevation), icon="BLANK1") + split2.label(icon="BLANK1", text=tool.Unit.blender_format_unit(item.elevation)) def draw_hierarchy(self, row, item): for i in range(0, item.level_index): diff --git a/src/blenderbim/blenderbim/tool/spatial.py b/src/blenderbim/blenderbim/tool/spatial.py index 3e89449511..1309232183 100644 --- a/src/blenderbim/blenderbim/tool/spatial.py +++ b/src/blenderbim/blenderbim/tool/spatial.py @@ -212,12 +212,13 @@ class Spatial(blenderbim.core.tool.Spatial): @classmethod def create_new_storey_li(cls, element, level_index): + si_conversion = ifcopenshell.util.unit.calculate_unit_scale(tool.Ifc.get()) new = cls.props.containers.add() new.name = element.Name or "Unnamed" new.long_name = element.LongName or "" new.has_decomposition = bool(element.IsDecomposedBy) new.ifc_definition_id = element.id() - new.elevation = ifcopenshell.util.placement.get_storey_elevation(element) + new.elevation = ifcopenshell.util.placement.get_storey_elevation(element) * si_conversion new.is_expanded = element.id() not in cls.contracted_containers new.level_index = level_index diff --git a/src/blenderbim/blenderbim/tool/unit.py b/src/blenderbim/blenderbim/tool/unit.py index 8d39f9fab1..baec38b579 100644 --- a/src/blenderbim/blenderbim/tool/unit.py +++ b/src/blenderbim/blenderbim/tool/unit.py @@ -163,3 +163,13 @@ class Unit(blenderbim.core.tool.Unit): unit = cls.get_project_currency_unit() if unit: return unit.Currency + + @classmethod + def blender_format_unit(cls, value): + return bpy.utils.units.to_string( + bpy.context.scene.unit_settings.system, + "LENGTH", + value, + precision=4, + split_unit=bpy.context.scene.unit_settings.system == "IMPERIAL", + )