From d76c599477eb1001f3efdc1786c7f23a657d8f94 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 28 Aug 2019 14:56:09 +0200 Subject: [PATCH] geom server client getattr; yield from process() --- src/ifcopenshell-python/ifcopenshell/geom/client.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/geom/client.py b/src/ifcopenshell-python/ifcopenshell/geom/client.py index fc85b4f40c..6e1cc0d645 100644 --- a/src/ifcopenshell-python/ifcopenshell/geom/client.py +++ b/src/ifcopenshell-python/ifcopenshell/geom/client.py @@ -90,6 +90,9 @@ class entity_contents(object): ("extendedData" , json.loads(s.read().strip(b'\x00').decode('ascii').strip(' '))) ] + def __getattr__(self, k): + return [kv for kv in self.structure if kv[0] == k][0][1] + def __repr__(self): def format(x): a, b = x @@ -148,7 +151,8 @@ def process(geomserver_exe, ifc_filename): has_more = cast(read_message(message_headers.MORE).contents, numpy.int32) == 1 if not has_more: break write(message_headers.GET) - print(read_message(message_headers.ENTITY).contents) + geom_data = read_message(message_headers.ENTITY).contents + yield geom_data write(message_headers.NEXT) write(message_headers.BYE) @@ -162,4 +166,5 @@ if __name__ == "__main__": exe_extension = ".exe" if platform.system() == 'Windows' else "" exe = os.environ.get("IFCGEOMSERVER") or ("IfcGeomServer" + exe_extension) for fn in sys.argv[1:]: - process(exe, fn) + for geom_data in process(exe, fn): + print(geom_data)