## 1. 切口与补面构建 - [x] 1.1 用「越界顶点折叠到对称面」替换 `_delete_positive_faces`,删除整体贴平面的面 - [x] 1.2 删除折叠后仍邻接两个面的内部贴平边及其邻接面 - [x] 1.3 把补面边界判据改为「只有一个相邻面且不落在对称面上」 - [x] 1.4 新增 Seam Smooth 按两圈渐变平滑切口环,Fill Smooth 收窄为侧壁内部 - [x] 1.5 保持 FACE、ROTATION、AXIS 属性写入点与最终朝向不变 - [x] 1.6 零厚度与非零厚度输入走同一条折叠路径,不按闭合性分支 ## 2. 节点测试 - [x] 2.1 断言输出不存在越过对称面的顶点、整体贴平面的面或四面共边 - [x] 2.2 断言 Fill Sides 开启时网格封闭、边与顶点流形、镜像成立,并覆盖零厚度与非零厚度输入 - [x] 2.3 断言 Fill Sides 关闭时切口自焊,落在对称面上的边没有开边 - [x] 2.4 断言 Seam Smooth 大于 0 时切口对称轴坐标不漂移,且按两圈渐变影响切口邻域 - [x] 2.5 断言节点组不含布尔节点,接口只新增 Seam Smooth ## 3. 验证 - [x] 3.1 运行 `uv run node-group build --skip-tests` 并确认资产重载校验通过 - [x] 3.2 更新节点测试后运行 `pytest tests/tools/nodes/test_cutout_symmetry.py`,全部通过 - [x] 3.3 运行受影响的 Cutout 对象创建测试 - [x] 3.4 记录样例上折叠前越界量分布,作为折面跨度的验证证据