Return relationships for an element, or hierarchy chain if traverse='up'.
(
model: ifcopenshell.file, element: ifcopenshell.entity_instance, traverse: str | None = None
)
| 180 | |
| 181 | |
| 182 | def relations( |
| 183 | model: ifcopenshell.file, element: ifcopenshell.entity_instance, traverse: str | None = None |
| 184 | ) -> dict[str, Any] | list[dict[str, Any]]: |
| 185 | """Return relationships for an element, or hierarchy chain if traverse='up'.""" |
| 186 | if traverse == "up": |
| 187 | return _traverse_up(element) |
| 188 | result = _all_relations(model, element) |
| 189 | |
| 190 | # Flat list of subject + all referenced elements, deduplicated. |
| 191 | # Allows --format ids to extract all involved IDs without jq. |
| 192 | seen: set[int] = set() |
| 193 | elements: list[dict[str, Any]] = [] |
| 194 | _collect_elements(result, seen, elements) |
| 195 | result["elements"] = elements |
| 196 | |
| 197 | return result |