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

Method parse

src/ifcfm/ifcfm/__init__.py:100–128  ·  view source on GitHub ↗
(self, ifc_file: ifcopenshell.file, name=None)

Source from the content-addressed store, hash-verified

98
99 # TODO: name is unused?
100 def parse(self, ifc_file: ifcopenshell.file, name=None):
101 for category_name, category_config in self.config["categories"].items():
102 for element in category_config["get_category_elements"](ifc_file):
103 get_element_data: Union[GetElementDataCallBack, dict[str, Any]]
104 get_element_data = category_config["get_element_data"]
105
106 if isinstance(get_element_data, dict):
107 data = {}
108 for key, query in get_element_data.items():
109 data[key] = ifcopenshell.util.selector.get_element_value(element, query)
110 elif isinstance(get_element_data, Callable):
111 data = get_element_data(ifc_file, element) or {}
112
113 get_custom_element_data = self.get_custom_element_data.get(category_name, lambda x, y: None)
114 if isinstance(get_custom_element_data, dict):
115 custom_data = {}
116 for key, query in get_custom_element_data.items():
117 custom_data[key] = ifcopenshell.util.selector.get_element_value(element, query)
118 elif isinstance(get_custom_element_data, Callable):
119 custom_data = get_custom_element_data(ifc_file, element) or {}
120
121 data.update(custom_data)
122
123 if data:
124 key = "-".join([str(data[k]) for k in category_config["keys"]])
125 # TODO: duplicate_keys are never used?
126 if key in self.categories[category_name]:
127 self.duplicate_keys.append((self.categories[category_name][key], data))
128 self.categories[category_name][key] = data
129
130 def federate(self, paths: list[str]) -> None:
131 for path in paths:

Callers 2

executeMethod · 0.95
__main__.pyFile · 0.45

Calls 6

get_element_dataFunction · 0.70
itemsMethod · 0.45
getMethod · 0.45
updateMethod · 0.45
joinMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected