SI scale factor for a Qto_ value, preferring its explicit Unit and then
resolving against the project's declared units.
An IfcQuantityLength/Area/Volume is stored in the project's raw
author unit exactly like an IfcPropertySingleValue of the matching
measure type — the value is not pre-converted to SI by the exporter. A
consumer that hashes or otherwise compares CollectedQuantity.value
across two files (or against a base-SI literal) as-is therefore reads a
project's choice of length unit as a change in the design itself: the
same 2 m wall authored in millimetres carries the raw value 2000
instead of 2.
1 for Count/Weight/Time/Number — this only scales the three
quantity types that are themselves IfcLengthMeasure-family measures.
Area and Volume scale by the SQUARE and CUBE of the length factor (a
millimetre-authored 1 m² is stored as 1e6, not 1e3) — but only as a
FALLBACK: IFC lets a project declare an explicit AREAUNIT/VOLUMEUNIT
with no arithmetic relationship to LENGTHUNIT, so the file's own
declaration is preferred and the length-derived power is used only when
the project declares none. An explicit member Unit always wins; IFC uses
it specifically to let a quantity depart from its containing project's
assignment.
SI scale factor for a
Qto_value, preferring its explicitUnitand then resolving against the project's declared units.An
IfcQuantityLength/Area/Volumeis stored in the project's raw author unit exactly like anIfcPropertySingleValueof the matching measure type — the value is not pre-converted to SI by the exporter. A consumer that hashes or otherwise comparesCollectedQuantity.valueacross two files (or against a base-SI literal) as-is therefore reads a project's choice of length unit as a change in the design itself: the same 2 m wall authored in millimetres carries the raw value2000instead of2.1forCount/Weight/Time/Number— this only scales the three quantity types that are themselvesIfcLengthMeasure-family measures.Area and Volume scale by the SQUARE and CUBE of the length factor (a millimetre-authored 1 m² is stored as
1e6, not1e3) — but only as a FALLBACK:IFClets a project declare an explicitAREAUNIT/VOLUMEUNITwith no arithmetic relationship toLENGTHUNIT, so the file's own declaration is preferred and the length-derived power is used only when the project declares none. An explicit memberUnitalways wins; IFC uses it specifically to let a quantity depart from its containing project's assignment.