feat: 完善 Face 一级关系编辑和稳定性

This commit is contained in:
2026-08-04 09:35:39 +08:00
parent bb44e3920d
commit 5799d5d813
29 changed files with 6295 additions and 189 deletions
@@ -130,6 +130,17 @@ def main() -> int:
if not bool(push_pull_mode.get("enabled", False)):
raise SystemExit("planar cylinder cap push/pull scope should remain available")
huge_push_plan = model.push_pull_plan(face_id, 50.0)
if huge_push_plan.get("status") != "blocked":
raise SystemExit(f"huge planar cylinder cap push/pull should be blocked early: {huge_push_plan}")
old_height = float(huge_push_plan.get("cylindrical_cap_extension_old_height") or 0.0)
new_height = float(huge_push_plan.get("cylindrical_cap_extension_new_height") or 0.0)
if old_height <= 0.0 or new_height <= old_height * 3.0:
raise SystemExit(f"huge cap push/pull should expose the blocked height growth: {huge_push_plan}")
huge_message = str(huge_push_plan.get("message") or "")
if "圆柱高度" not in huge_message and "cylindrical" not in huge_message.lower():
raise SystemExit(f"huge cap push/pull should explain the cylinder-height risk: {huge_push_plan}")
before_height = _bbox_height(model)
push_plan = model.push_pull_plan(face_id, 1.0)
if push_plan.get("status") == "blocked":