内螺纹 thread_cut 算子的增加
This commit is contained in:
@@ -26,18 +26,22 @@ _PRIMARY_ATOMICS = frozenset({
|
||||
_HOLE_ATOMICS = frozenset({"hole_blind", "hole_countersink", "hole_counterbore", "hole_wizard"})
|
||||
_ACTIVE_BODY_REQUIRED = frozenset({
|
||||
"extrude_cut_blind", "revolve_cut", *_HOLE_ATOMICS, "fillet", "chamfer",
|
||||
# thread_cut 是 cut 型特征:必须在已有主体(宿主)上做布尔差,不能凭空
|
||||
# 造实体;无宿主时按 active_body 前置阻止而非让 executor 在 None 上崩溃。
|
||||
"thread_cut",
|
||||
})
|
||||
_BODY_MUTATING_ATOMICS = frozenset({
|
||||
"extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind",
|
||||
"revolve_add", "revolve_cut", "sphere_add", "thread_add",
|
||||
"revolve_add", "revolve_cut", "sphere_add", "thread_add", "thread_cut",
|
||||
*_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. 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.
|
||||
# Context-only features have no geometry definition to instance. thread_add
|
||||
# and thread_cut are excluded: pattern translation does not yet move their
|
||||
# parametric axis, so a replayed thread would silently re-run at the original
|
||||
# location.
|
||||
_REPLAYABLE_ATOMICS = (
|
||||
_BODY_MUTATING_ATOMICS - frozenset({"thread_add"})
|
||||
_BODY_MUTATING_ATOMICS - frozenset({"thread_add", "thread_cut"})
|
||||
) | frozenset({"pattern_linear", "pattern_mirror"})
|
||||
_SUPPORTED_EXTENTS = frozenset({
|
||||
"blind", "mid_plane", "through_all", "through_all_both", "through_all_and_blind",
|
||||
@@ -433,6 +437,9 @@ class CapabilityAnalyzer:
|
||||
body_producers = {
|
||||
"extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind",
|
||||
"revolve_add", "revolve_cut", "sphere_add", "thread_add",
|
||||
# thread_cut 与 extrude_cut_blind/revolve_cut 一致:无宿主时由
|
||||
# active_body 前置阻止,文档含该类特征即视为携带可执行几何。
|
||||
"thread_cut",
|
||||
}
|
||||
document_blockers: list[RuntimeDiagnostic] = []
|
||||
if not any(node.atomic_id in body_producers for node in plan):
|
||||
|
||||
Reference in New Issue
Block a user