mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-12 18:43:26 +00:00
9637cecf72
Three-part fix in _apply_opening_mirror: 1. Rotation: replace direct Householder on rotation columns with conjugation H@R@H. Direct Householder gives det=-1; IFC's Y=Z×X normalization then introduces a spurious 180°Z rotation (R_z(π−θ) instead of the correct R_z(−θ)). Conjugation keeps det=+1 and produces the correct mirrored rotation for all θ. 2. Geometry: call builder.mirror() on each representation item of the opening so that local vertices/profiles are also mirrored. edit_object_placement only moves the placement frame; without this step the void shape is the original, not its mirror image. 3. Ordering (existing): opening update runs before invert_representation so the internal reload_representation sees correct positions. Generated with the assistance of an AI coding tool. AI effort: 8/10