增加了thread几何基础操作

This commit is contained in:
2026-09-03 19:39:06 +08:00
parent ef9626f936
commit bb9e8a8720
6 changed files with 130 additions and 7 deletions
+9 -4
View File
@@ -29,11 +29,16 @@ _ACTIVE_BODY_REQUIRED = frozenset({
})
_BODY_MUTATING_ATOMICS = frozenset({
"extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind",
"revolve_add", "revolve_cut", "sphere_add", *_HOLE_ATOMICS, "fillet", "chamfer",
"revolve_add", "revolve_cut", "sphere_add", "thread_add",
*_HOLE_ATOMICS, "fillet", "chamfer",
})
# A pattern may replay a previous pattern as well as a direct body mutation.
# Context-only features have no geometry definition to instance.
_REPLAYABLE_ATOMICS = _BODY_MUTATING_ATOMICS | frozenset({"pattern_linear", "pattern_mirror"})
# Context-only features have no geometry definition to instance. thread_add is
# excluded: pattern translation does not yet move its parametric axis, so a
# replayed thread would silently re-fuse at the original location.
_REPLAYABLE_ATOMICS = (
_BODY_MUTATING_ATOMICS - frozenset({"thread_add"})
) | frozenset({"pattern_linear", "pattern_mirror"})
_SUPPORTED_EXTENTS = frozenset({
"blind", "mid_plane", "through_all", "through_all_both", "through_all_and_blind",
"up_to_surface", "up_to_vertex", "offset_from_surface", "through_next", "up_to_body",
@@ -427,7 +432,7 @@ class CapabilityAnalyzer:
body_available = True
body_producers = {
"extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind",
"revolve_add", "revolve_cut", "sphere_add",
"revolve_add", "revolve_cut", "sphere_add", "thread_add",
}
document_blockers: list[RuntimeDiagnostic] = []
if not any(node.atomic_id in body_producers for node in plan):