2.4 KiB
2.4 KiB
辅助标注尺寸阈值过滤实施记录
背景
在 F1 -> 点选/框选 -> 请求 getAuxiliaryAnnotation -> 生成辅助轮廓 -> F1 确认生成对象 的流程里,接口可能返回大量很小的区域或小镂空,影响最终对象质量与后续编辑效率。
目标
- 在工具栏提供尺寸阈值输入框。
- 提供按钮与快捷键,对小于阈值的区域/镂空进行过滤。
- 该能力既能用于
F1生成后的辅助预览,也能用于已确认生成并被选中的polygon对象。 - 不影响正常标注流程。
链路分析
LabelNossr.tsxF1进入support模式。- 再次
F1时调用PaperContainer.saveSupportAnnotationData()完成确认。
usePaperStore.tssupportTool收集点/框提示,调用PaperContainer.renderSupportAnnotation()。
PaperContainer.tsxrenderSupportAnnotation()请求getAuxiliaryAnnotation()。- 接口返回
contours/hollows后,在画布上生成support预览。 saveSupportAnnotationData()将support预览转成正式标注对象。
本次实现
已完成
- 在
components/label/useTopToolsStore.ts增加auxiliarySizeThreshold状态。 - 新增
components/label/utils/geometry/areaFilter.ts,用于按尺寸过滤 multipolygon 外轮廓与洞。 - 在
components/label/components/TopTools.tsx增加:- 尺寸阈值输入框
过滤按钮
- 在
components/label/LabelNossr.tsx增加F2快捷键,触发尺寸过滤。 - 在
components/label/components/PaperContainer.tsx增加:- 辅助预览 geometry 重绘能力
- 对
support预览执行尺寸过滤 - 对已选中
polygon对象执行尺寸过滤 - 若过滤后对象为空,则直接删除对象
- 快捷键说明中补充
F2文案。
当前行为
- 若当前存在
support预览,F2/过滤优先作用于辅助预览。 - 若当前没有
support预览,则对当前选中的一个或多个polygon对象执行批量过滤。 - 输入值含义为“尺寸阈值”,实际面积阈值为“尺寸阈值²”。
- 小外轮廓会被删除;小镂空会被填平。
- 阈值需大于
0才会生效。
验证
- 已执行:
pnpm exec tsc --noEmit - 结果:通过
后续可选项
- 支持一次过滤多个已选中 polygon 对象。
- 在工具栏中增加更明确的阈值单位说明。
- 如果需要,可再补一轮手动回归用例清单。