open_slot 的第二次迭代
This commit is contained in:
@@ -18,6 +18,9 @@ from .operation_contracts import materialized_feature_contracts
|
||||
|
||||
_SELECTOR_REQUIRED = frozenset({"fillet", "chamfer"})
|
||||
_SKETCH_ATOM_PREFIXES = ("extrude_", "revolve_")
|
||||
# 开放轮廓(closed=false / role=open)只有"刀具截面补槽口边闭合后作切除"的
|
||||
# 物理意义:仅 extrude 直切类原子支持;add/回转对开放轮廓会造出无意义的封块。
|
||||
_OPEN_PROFILE_ATOMICS = frozenset({"extrude_cut_blind", "extrude_cut_through"})
|
||||
_PRIMARY_ATOMICS = frozenset({
|
||||
"extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind",
|
||||
"extrude_cut_through",
|
||||
@@ -281,6 +284,17 @@ class CapabilityAnalyzer:
|
||||
"The resolved sketch contains no closed profile region",
|
||||
sketch_id=node.sketch_id,
|
||||
))
|
||||
elif (
|
||||
not resolution_error
|
||||
and sketches[node.sketch_id].get("_open_contour")
|
||||
and node.atomic_id not in _OPEN_PROFILE_ATOMICS
|
||||
):
|
||||
blockers.append(self._blocker(
|
||||
node.feature_id, "unsupported_open_profile",
|
||||
"Open profiles are only supported for straight extruded cut features",
|
||||
sketch_id=node.sketch_id,
|
||||
atomic_id=node.atomic_id,
|
||||
))
|
||||
if node.atomic_id.startswith(_SKETCH_ATOM_PREFIXES):
|
||||
# #2 draft:extrudeParams.draft 在 cdsl_schema.json 中被允许,
|
||||
# 但 runtime 的拉伸执行器(build123d Solid.extrude)没有锥形
|
||||
|
||||
Reference in New Issue
Block a user