Files
IfcOpenShell/src/ifcopenshell-python/test
Richard Brice d19c86c72a Add per-property/quantity Unit-override support to edit_pset/edit_qto, plus unit-scale and candidate-unit helpers
edit_pset()'s unpack_unit_value() couldn't distinguish "no Unit dict was
passed" from "{"Unit": None, ...} passed to explicitly clear an existing
override" -- both collapsed to a bare None, and every consuming call site
checked truthiness, so there was no way to actually clear a previously-set
property Unit override once one existed. Fixed with a private _NO_UNIT
sentinel; bare (unwrapped) values still leave Unit untouched exactly as
before.

edit_qto() had no Unit-handling capability at all: neither
update_existing_property() nor add_new_properties() ever read or wrote a
quantity's Unit attribute. Added the same {"Unit": ..., "NominalValue": ...}
wrapped-dict convention edit_pset() already supports, disambiguated from
the pre-existing IfcPhysicalComplexQuantity dict convention
({"Discrimination": ..., "HasQuantities": ...}) by checking for a "Unit"
key -- a complex-quantity spec never contains one.

ifcopenshell.util.unit gains two small helpers:
- get_unit_scale(unit): dispatches to get_derived_unit_scale/
  get_named_unit_scale depending on unit type, also used to de-duplicate
  calculate_unit_scale()'s own inline dispatch of the same logic.
- get_candidate_units(ifc_file, unit_type): all units in a file matching a
  given unit type, unlike get_project_unit()'s single-default lookup.

Adds regression tests for all of the above, including explicit-clear,
bare-value-preserves-override, and complex-quantity-routing-unaffected
cases.
2026-08-28 08:41:10 -07:00
..
2026-08-10 16:54:37 +05:00
2022-07-20 19:17:52 +02:00
2025-12-19 18:53:14 +05:00
2026-08-10 16:54:37 +05:00
2026-07-26 18:03:09 +10:00
2025-12-19 18:53:14 +05:00
2025-12-19 18:53:14 +05:00
2025-12-19 18:53:14 +05:00
2026-08-22 13:12:36 +02:00
2026-08-10 16:54:37 +05:00
2026-08-10 16:54:37 +05:00
2026-01-26 17:13:18 +05:00
2026-08-10 16:54:37 +05:00
2025-12-19 18:53:14 +05:00