MCPcopy Create free account
hub / github.com/IfcOpenShell/IfcOpenShell / _collect_elements

Function _collect_elements

src/ifcquery/ifcquery/relations.py:163–179  ·  view source on GitHub ↗

Recursively collect all element refs (dicts with 'id') from a nested structure.

(data: Any, seen: set[int], result: list[dict[str, Any]])

Source from the content-addressed store, hash-verified

161
162
163def _collect_elements(data: Any, seen: set[int], result: list[dict[str, Any]]) -> None:
164 """Recursively collect all element refs (dicts with 'id') from a nested structure."""
165 if isinstance(data, dict):
166 if "id" in data and isinstance(data["id"], int):
167 eid = data["id"]
168 if eid not in seen:
169 seen.add(eid)
170 result.append(
171 {"id": data["id"], "type": data.get("type"), "name": data.get("name")}
172 if "name" in data
173 else {"id": data["id"], "type": data.get("type")}
174 )
175 for v in data.values():
176 _collect_elements(v, seen, result)
177 elif isinstance(data, list):
178 for item in data:
179 _collect_elements(item, seen, result)
180
181
182def relations(

Callers 1

relationsFunction · 0.85

Calls 4

valuesMethod · 0.80
addMethod · 0.45
appendMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected