From cc778778ee66da2ac826695c0aeea7daae74cac7 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 9 Oct 2020 21:05:00 +1100 Subject: [PATCH] Add new by query IFC node --- src/ifcsverchok/__init__.py | 1 + src/ifcsverchok/nodes/ifc/by_query.py | 33 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/ifcsverchok/nodes/ifc/by_query.py diff --git a/src/ifcsverchok/__init__.py b/src/ifcsverchok/__init__.py index 697e97ba0e..524190e857 100644 --- a/src/ifcsverchok/__init__.py +++ b/src/ifcsverchok/__init__.py @@ -29,6 +29,7 @@ def nodes_index(): ("ifc.by_id", "SvIfcById"), ("ifc.by_guid", "SvIfcByGuid"), ("ifc.by_type", "SvIfcByType"), + ("ifc.by_query", "SvIfcByQuery"), ])] def make_node_list(): diff --git a/src/ifcsverchok/nodes/ifc/by_query.py b/src/ifcsverchok/nodes/ifc/by_query.py new file mode 100644 index 0000000000..299a0849d3 --- /dev/null +++ b/src/ifcsverchok/nodes/ifc/by_query.py @@ -0,0 +1,33 @@ +import bpy +import ifcopenshell +import ifcopenshell.util.selector +import ifcsverchok.helper +from bpy.props import StringProperty +from sverchok.node_tree import SverchCustomTreeNode +from sverchok.data_structure import updateNode + + +class SvIfcByQuery(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore): + bl_idname = 'SvIfcByQuery' + bl_label = 'IFC By Query' + file: StringProperty(name='file', update=updateNode) + query: StringProperty(name='query', update=updateNode) + + def sv_init(self, context): + self.inputs.new('SvStringsSocket', 'file').prop_name = 'file' + self.inputs.new('SvStringsSocket', 'query').prop_name = 'query' + self.outputs.new('SvStringsSocket', 'entity') + + def process(self): + self.sv_input_names = ['file', 'query'] + super().process() + + def process_ifc(self, file, query): + selector = ifcopenshell.util.selector.Selector() + self.outputs['entity'].sv_set([selector.parse(file, query)]) + +def register(): + bpy.utils.register_class(SvIfcByQuery) + +def unregister(): + bpy.utils.unregister_class(SvIfcByQuery)