mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 17:58:20 +00:00
99f2a0c1e8
The default drawing join criteria compared IfcMaterialLayerSetUsage via "material.Name", which for layered walls resolves to the optional IfcMaterialLayerSet.LayerSetName attribute. Two walls with an identical layer composition (same materials, same thicknesses) can still have a different or unset LayerSetName depending on how the material was assigned (direct instance override vs wall type), which made the 2D cut linework merge fail and left a spurious seam line at mitred or butt joins even though the walls share the same material. Switch to "materials.Name", which resolves the actual list of constituent material names via ifcopenshell.util.element.get_materials, so two elements are only treated as different when their real material composition differs. The redundant "Material.Name" entry is removed, since it never resolved to anything (get_element_value only recognizes the lowercase "material"/"materials" keys), so it was silently matching None for every element. Verified live in headless Blender 5.2 against the reporter's attached Wall joins & visualisation.ifc: before the fix, the mitred wall pair (GUIDs 1KtMvpwxL5PwkIhx8XA6Ro and 1EzeyHDj98PhTMAOhx02Zi, both a brick+concrete layered wall) rendered as two separate SVG groups with a visible internal seam. After the fix they merge into a single group with no seam, and unrelated walls that only coincidentally shared an unset LayerSetName no longer get incorrectly merged together either. Generated with the assistance of an AI coding tool.