From 009652f97d9003bf141c0861a9d1034f590de737 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 13 Jan 2026 11:43:03 +0500 Subject: [PATCH] ifcsverchok - fix by query node --- src/ifcsverchok/nodes/ifc/by_query.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/ifcsverchok/nodes/ifc/by_query.py b/src/ifcsverchok/nodes/ifc/by_query.py index 1bdd88054a..13a6fd6619 100644 --- a/src/ifcsverchok/nodes/ifc/by_query.py +++ b/src/ifcsverchok/nodes/ifc/by_query.py @@ -23,18 +23,30 @@ from bpy.props import StringProperty from sverchok.data_structure import updateNode from sverchok.node_tree import SverchCustomTreeNode -import ifcsverchok.helper +import ifcsverchok.helper as helper from ifcsverchok.ifcstore import SvIfcStore -class SvIfcByQuery(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIfcCore): +class SvIfcByQuery(bpy.types.Node, SverchCustomTreeNode, helper.SvIfcCore): bl_idname = "SvIfcByQuery" bl_label = "IFC By Query" query: StringProperty(name="Query", update=updateNode) - def sv_init(self, context): - self.inputs.new("SvStringsSocket", "query").prop_name = "query" - self.outputs.new("SvStringsSocket", "Entity") + def sv_init(self, context) -> None: + helper.create_socket( + self.inputs, + "query", + description="IFC Query string.", + data_type="list[list[str]]", + prop_name="query", + ) + helper.create_socket( + self.outputs, + "Entity", + description="IFC Entities found by the query.", + data_type="set[ifcopenshell.entity_instance]", + prop_name="Entity", + ) def process(self): if not self.inputs["query"].sv_get()[0][0]: @@ -44,8 +56,8 @@ class SvIfcByQuery(bpy.types.Node, SverchCustomTreeNode, ifcsverchok.helper.SvIf super().process() def process_ifc(self, query: str) -> None: - selector = ifcopenshell.util.selector.Selector() - self.outputs["Entity"].sv_set([selector.parse(self.file, query)]) + elements = ifcopenshell.util.selector.filter_elements(self.file, query) + self.outputs["Entity"].sv_set(elements) def register():