mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
4184ec9c94
Three fixes in TrueMirrorElements / _apply_opening_mirror: 1. IfcFacetedBrep support: implement mirroring in mirror_item by negating vertex coordinates along the flipped axes and reversing face winding for an odd number of flipped axes (restores outward normals). 2. Routing: add type_has_reps guard to is_assign_type_path so elements whose IfcTypeProduct carries no RepresentationMaps fall through to direct geometry mirroring instead of a no-op type swap. 3. Opening placement: use H@R@H conjugation (not direct Householder on columns) for the rotation part of _apply_opening_mirror. Direct Householder yields det=-1; IFC's Y=Z×X normalization then introduces a spurious 180°Z rotation. Conjugation keeps det=+1 and produces the correct mirrored rotation. Also call builder.mirror() on each opening representation item so local vertex data is mirrored alongside the placement frame. Generated with the assistance of an AI coding tool. AI effort: 8/10