mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 17:31:45 +00:00
8f9164bf72
A single selector query cannot express set differences (the grammar only unions groups, and the parent facet cannot negate), so links now carry an Exclude query beside the include, mirroring the drawing Include/Exclude pattern: final set = include (or the default set when empty) minus exclude. Applied in LoadLinkedProject and per link in create_drawing so prints match the viewport. The cache key hashes both strings when an exclude exists - keying on the query alone would let same-include/different-exclude links serve each other's geometry. Include-only filters keep the pre-exclude hash and empty filters the legacy names, so existing caches stay valid. Persistence in IfcDocumentReference.Description stays backwards compatible: a plain include is stored as-is, an exclude promotes the value to a small JSON blob, and non-JSON decodes as a legacy include. The Exclude field appears in Link IFC and the Reload Link dialog (carried through the file browser round trip, SKIP_SAVE like the rest). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>