IFClite TypeScript API
    Preparing search index...

    Function scaleMeasureValue

    • Scale a property value to base SI, using the file's declared units.

      An IfcPropertySingleValue measure (IfcLengthMeasure, IfcAreaMeasure, IfcPositiveLengthMeasure, …) is stored in the project's raw author unit — exactly like an IfcElementQuantity (Qto_) quantity, which the IDS property bridge and the model-diff quantity path both already scale before comparing. Nothing scaled the property-value path: a wall re-exported from a metre-authored file (IfcLengthMeasure(2.5)) into a millimetre-authored one (IfcLengthMeasure(2500.)), with no edit to the design at all, hashed to two different dataHash values in every model-diff adapter — the file was misreported as modified · data on every quantified element.

      dataType is the on-demand extractor's IFC measure tag, read off the typed STEP value itself (parsePropertyValue, on-demand-extractors.ts), so this resolves for any project-scoped measure ProjectUnits.unitForMeasure knows — length, area, volume, and the rest of the measure table — not only the three the Qto_ quantity path special-cases. A property whose declared type has no project-scoped unit (a label, an identifier, a dimensionless ratio) resolves no unit and passes through unscaled, same as a value with no dataType at all — this function is a no-op for every property it should not touch. A unit with an additive SI offset (IfcConversionBasedUnitWithOffset, °F) applies it too, so 68 °F scales to 293.15 K.

      Parameters

      • value: unknown
      • dataType: string | undefined
      • projectUnits: ProjectUnits

      Returns unknown