From 0096c0f6a20f58b7d9a9a2a4f924b78cbddbf5b9 Mon Sep 17 00:00:00 2001 From: Ryan Schultz Date: Thu, 2 Jul 2026 14:50:21 -0500 Subject: [PATCH] Bonsai: don't wipe link query when reload_link is called without one bpy.ops.bim.reload_link(link_index=...) from a script skips invoke(), so self.query stayed at its empty default and execute() overwrote the link's stored query, reloading everything. Only update link.query when the property was explicitly set (dialog or script argument), and reload using the stored query. Co-Authored-By: Claude Fable 5 --- src/bonsai/bonsai/bim/module/project/operator.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/project/operator.py b/src/bonsai/bonsai/bim/module/project/operator.py index 80ec1e919e..da5ee77fe2 100644 --- a/src/bonsai/bonsai/bim/module/project/operator.py +++ b/src/bonsai/bonsai/bim/module/project/operator.py @@ -1687,9 +1687,13 @@ class ReloadLink(bpy.types.Operator): def execute(self, context): link = tool.Project.get_project_props().links[self.link_index] - link.query = self.query + # An unset query means the operator was called without the dialog + # (e.g. from a script) - preserve the link's stored query instead + # of overwriting it with the empty default. + if self.properties.is_property_set("query"): + link.query = self.query bpy.ops.bim.unload_link(link_index=self.link_index) - return bpy.ops.bim.load_link(link_index=self.link_index, use_cache=False, query=self.query) or {"FINISHED"} + return bpy.ops.bim.load_link(link_index=self.link_index, use_cache=False, query=link.query) or {"FINISHED"} class ToggleLinkSelectability(bpy.types.Operator):