feat: Add AI Refine option for Balloon tool and implement refinement process with BEN2

This commit is contained in:
2026-08-20 12:17:06 +08:00
parent 4e1231790b
commit 8afcf48ddf
12 changed files with 478 additions and 5 deletions

View File

@@ -801,6 +801,29 @@ class AddonTest(unittest.TestCase):
self.addon.CLASSES.index(self.balloon.ActivateBalloonTool),
)
def test_balloon_ai_refine_is_registered_and_forwarded_to_ben2(self):
import inspect
self.assertIn(self.balloon.RefineBalloon, self.addon.CLASSES)
operator = self.balloon.ExtractBalloon
self.assertIn("ai_refine", operator.__annotations__)
settings = self.addon.properties.SnapFormSettings.__annotations__
self.assertIn("balloon_ai_refine", settings)
self.assertFalse(settings["balloon_ai_refine"]["default"])
execute_source = inspect.getsource(operator.execute)
invoke_source = inspect.getsource(operator.invoke)
request_source = inspect.getsource(self.balloon.RefineBalloon.request)
response_source = inspect.getsource(self.balloon.RefineBalloon.response)
tool_source = inspect.getsource(self.balloon.BalloonTool.draw_settings)
self.assertIn("bpy.ops.snapform.refine_balloon", execute_source)
self.assertIn("prepare_image_input(", execute_source)
self.assertIn("settings.balloon_ai_refine", invoke_source)
self.assertIn('"polygon": polygon', request_source)
self.assertIn('result.file("contour")', response_source)
self.assertIn("extract_balloon_object(", response_source)
self.assertIn('push_undo("Extract Balloon")', response_source)
self.assertIn('"balloon_ai_refine"', tool_source)
def test_balloon_redo_properties_use_mode_and_meter_resolution(self):
import inspect