mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 06:58:56 +00:00
Fix bug where unit editing failed for named units
This commit is contained in:
@@ -111,7 +111,7 @@ class BIM_UL_units(UIList):
|
|||||||
op.unit = item.ifc_definition_id
|
op.unit = item.ifc_definition_id
|
||||||
|
|
||||||
if props.active_unit_id == item.ifc_definition_id:
|
if props.active_unit_id == item.ifc_definition_id:
|
||||||
row.operator("bim.edit_unit", text="", icon="CHECKMARK")
|
row.operator("bim.edit_unit", text="", icon="CHECKMARK").unit = item.ifc_definition_id
|
||||||
row.operator("bim.disable_editing_unit", text="", icon="CANCEL")
|
row.operator("bim.disable_editing_unit", text="", icon="CANCEL")
|
||||||
elif props.active_unit_id:
|
elif props.active_unit_id:
|
||||||
row.operator("bim.remove_unit", text="", icon="X").unit = item.ifc_definition_id
|
row.operator("bim.remove_unit", text="", icon="X").unit = item.ifc_definition_id
|
||||||
|
|||||||
@@ -96,12 +96,11 @@ def disable_editing_unit(unit):
|
|||||||
|
|
||||||
def edit_unit(ifc, unit_tool, unit=None):
|
def edit_unit(ifc, unit_tool, unit=None):
|
||||||
attributes = unit_tool.export_unit_attributes()
|
attributes = unit_tool.export_unit_attributes()
|
||||||
unit_class = unit_tool.get_unit_class(unit)
|
if unit_tool.is_unit_class(unit, "IfcMonetaryUnit"):
|
||||||
if unit_class == "IfcMonetaryUnit":
|
|
||||||
ifc.run("unit.edit_monetary_unit", unit=unit, attributes=attributes)
|
ifc.run("unit.edit_monetary_unit", unit=unit, attributes=attributes)
|
||||||
elif unit_class == "IfcDerivedUnit":
|
elif unit_tool.is_unit_class(unit, "IfcDerivedUnit"):
|
||||||
ifc.run("unit.edit_derived_unit", unit=unit, attributes=attributes)
|
ifc.run("unit.edit_derived_unit", unit=unit, attributes=attributes)
|
||||||
elif unit_class == "IfcNamedUnit":
|
elif unit_tool.is_unit_class(unit, "IfcNamedUnit"):
|
||||||
ifc.run("unit.edit_named_unit", unit=unit, attributes=attributes)
|
ifc.run("unit.edit_named_unit", unit=unit, attributes=attributes)
|
||||||
unit_tool.import_units()
|
unit_tool.import_units()
|
||||||
unit_tool.clear_active_unit()
|
unit_tool.clear_active_unit()
|
||||||
|
|||||||
@@ -87,10 +87,6 @@ class Unit(blenderbim.core.tool.Unit):
|
|||||||
def get_si_name_from_unit_type(cls, unit_type):
|
def get_si_name_from_unit_type(cls, unit_type):
|
||||||
return ifcopenshell.util.unit.si_type_names.get(unit_type, None)
|
return ifcopenshell.util.unit.si_type_names.get(unit_type, None)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_unit_class(cls, unit):
|
|
||||||
return unit.is_a()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def import_unit_attributes(cls, unit):
|
def import_unit_attributes(cls, unit):
|
||||||
def callback(name, prop, data):
|
def callback(name, prop, data):
|
||||||
@@ -152,6 +148,10 @@ class Unit(blenderbim.core.tool.Unit):
|
|||||||
def is_scene_unit_metric(cls):
|
def is_scene_unit_metric(cls):
|
||||||
return bpy.context.scene.unit_settings.system in ["METRIC", "NONE"]
|
return bpy.context.scene.unit_settings.system in ["METRIC", "NONE"]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_unit_class(cls, unit, ifc_class):
|
||||||
|
return unit.is_a(ifc_class)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def set_active_unit(cls, unit):
|
def set_active_unit(cls, unit):
|
||||||
bpy.context.scene.BIMUnitProperties.active_unit_id = unit.id()
|
bpy.context.scene.BIMUnitProperties.active_unit_id = unit.id()
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ class TestDisableEditingUnit:
|
|||||||
class TestEditUnit:
|
class TestEditUnit:
|
||||||
def test_editing_monetary_units(self, ifc, unit):
|
def test_editing_monetary_units(self, ifc, unit):
|
||||||
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
||||||
unit.get_unit_class("unit").should_be_called().will_return("IfcMonetaryUnit")
|
unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(True)
|
||||||
ifc.run("unit.edit_monetary_unit", unit="unit", attributes="attributes").should_be_called()
|
ifc.run("unit.edit_monetary_unit", unit="unit", attributes="attributes").should_be_called()
|
||||||
unit.import_units().should_be_called()
|
unit.import_units().should_be_called()
|
||||||
unit.clear_active_unit().should_be_called()
|
unit.clear_active_unit().should_be_called()
|
||||||
@@ -150,7 +150,8 @@ class TestEditUnit:
|
|||||||
|
|
||||||
def test_editing_derived_units(self, ifc, unit):
|
def test_editing_derived_units(self, ifc, unit):
|
||||||
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
||||||
unit.get_unit_class("unit").should_be_called().will_return("IfcDerivedUnit")
|
unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(False)
|
||||||
|
unit.is_unit_class("unit", "IfcDerivedUnit").should_be_called().will_return(True)
|
||||||
ifc.run("unit.edit_derived_unit", unit="unit", attributes="attributes").should_be_called()
|
ifc.run("unit.edit_derived_unit", unit="unit", attributes="attributes").should_be_called()
|
||||||
unit.import_units().should_be_called()
|
unit.import_units().should_be_called()
|
||||||
unit.clear_active_unit().should_be_called()
|
unit.clear_active_unit().should_be_called()
|
||||||
@@ -158,7 +159,9 @@ class TestEditUnit:
|
|||||||
|
|
||||||
def test_editing_named_units(self, ifc, unit):
|
def test_editing_named_units(self, ifc, unit):
|
||||||
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
unit.export_unit_attributes().should_be_called().will_return("attributes")
|
||||||
unit.get_unit_class("unit").should_be_called().will_return("IfcNamedUnit")
|
unit.is_unit_class("unit", "IfcMonetaryUnit").should_be_called().will_return(False)
|
||||||
|
unit.is_unit_class("unit", "IfcDerivedUnit").should_be_called().will_return(False)
|
||||||
|
unit.is_unit_class("unit", "IfcNamedUnit").should_be_called().will_return(True)
|
||||||
ifc.run("unit.edit_named_unit", unit="unit", attributes="attributes").should_be_called()
|
ifc.run("unit.edit_named_unit", unit="unit", attributes="attributes").should_be_called()
|
||||||
unit.import_units().should_be_called()
|
unit.import_units().should_be_called()
|
||||||
unit.clear_active_unit().should_be_called()
|
unit.clear_active_unit().should_be_called()
|
||||||
|
|||||||
@@ -154,13 +154,6 @@ class TestGetSINameFromUnitType:
|
|||||||
assert subject.get_si_name_from_unit_type(key) == value
|
assert subject.get_si_name_from_unit_type(key) == value
|
||||||
|
|
||||||
|
|
||||||
class TestGetUnitClass:
|
|
||||||
def test_run(self):
|
|
||||||
ifc = ifcopenshell.file()
|
|
||||||
assert subject.get_unit_class(ifc.createIfcSIUnit()) == "IfcSIUnit"
|
|
||||||
assert subject.get_unit_class(ifc.createIfcNamedUnit()) == "IfcNamedUnit"
|
|
||||||
|
|
||||||
|
|
||||||
class TestImportUnitAttributes(NewFile):
|
class TestImportUnitAttributes(NewFile):
|
||||||
def test_importing_derived_units(self):
|
def test_importing_derived_units(self):
|
||||||
ifc = ifcopenshell.file()
|
ifc = ifcopenshell.file()
|
||||||
@@ -307,6 +300,13 @@ class TestIsSceneUnitMetric(NewFile):
|
|||||||
assert subject.is_scene_unit_metric() is True
|
assert subject.is_scene_unit_metric() is True
|
||||||
|
|
||||||
|
|
||||||
|
class TestIsUnitClass:
|
||||||
|
def test_run(self):
|
||||||
|
ifc = ifcopenshell.file()
|
||||||
|
assert subject.is_unit_class(ifc.createIfcSIUnit(), "IfcNamedUnit") is True
|
||||||
|
assert subject.is_unit_class(ifc.createIfcSIUnit(), "IfcMonetaryUnit") is False
|
||||||
|
|
||||||
|
|
||||||
class TestSetActiveUnit(NewFile):
|
class TestSetActiveUnit(NewFile):
|
||||||
def test_run(self):
|
def test_run(self):
|
||||||
ifc = ifcopenshell.file()
|
ifc = ifcopenshell.file()
|
||||||
|
|||||||
Reference in New Issue
Block a user