Tags: IfcOpenShell/IfcOpenShell
Tags
fixes to sequence.create_baseline: - assert isinstance(res, list) was wrong because duplicate_task returns a tuple not a list - removed overkill assertion anyway as the usecase is already typed. - setting optional name or reuse planned schedule name - usecase now returns created baseline work schedule
Fix #9278. calculate_unit_scale raises the SI prefix to the length ex… …ponent for prefixed SQUARE_METRE/CUBIC_METRE units. An SI prefix attaches to the base unit symbol and the prefixed symbol is raised to the power as a whole: DECI CUBIC_METRE is dm3 = a litre = 1e-3 m3, not 0.1 m3. The scale factor previously applied the prefix multiplier linearly for all IfcSIUnits, inflating volumes x100 and areas x10 for such declarations (produced e.g. by MagiCAD for Revit MEP exports). Following the reviewer note in #9278, the exponent is taken from the derived attribute IfcSIUnit.Dimensions rather than from substring matching on the unit name: the multiplier is raised to LengthExponent only when the unit's dimensions are a pure power of length, so prefixed derived units (KILO PASCAL, MEGA NEWTON) and non-length units (KILO GRAM) correctly keep the linear multiplier. This matches the exponent handling already present in convert() and named_dimensions in the same module. Adds regression tests for prefixed AREAUNIT/VOLUMEUNIT and for the linear-prefix behaviour of PRESSUREUNIT/MASSUNIT.
PreviousNext