https://wwamf.lanzouu.com/iJywN3r2gc1c
https://www.bilibili.com/video/BV1Kd7Q6BEnK
折弯标注规则(与 benddim 源码一致,2026-06)

画线替代画点,cursor写的算法用点距离一直算不对,清晰了一些定义:邻接非共用外一级
玩异环到10点就满足了,写代码到10点没啥感觉,要不是突然跑通了,真的是浪费时间,cursor写的c#代码又不能热重载
【折弯角约 90°,±10°】
节点内:
- 禁止:本折弯内弧侧二级面参与一级---二级
- 仅:本折弯外圆柱侧一级面 ↔ 另一侧二级/三级台阶面;一级侧优先图邻接「共享外一级」
- 约 90° 一级---二级:优先草图线---线(两面平行棱),面距仅作候选排序;末端小面(约 60 mm² 等)可走 ⊥ 棱线---线
- 约 90° 一级---三级:外圆柱一级 ↔ 本折弯另一侧来源的三级面(三级作二级入库);须由与当前外一级不同侧的一级面引出
- 三级面内外由路径上二级圆柱/圆弧判定:经内圆柱传出时,不以内侧台阶平面为三级面,改以对侧外一级面为三级面配对
- 三级台阶面距仅设下限(约 0.75×板厚,最小 0.8 mm),无上限;采用 BREP 面距分解 Pick 值,不假定固定台阶深
- 禁止:内圆柱侧一级面参与一级---二级
- 禁止:内弧一级面之间标注
- 禁止:内弧中心 ↔ 二级面
- 已参与节点间(外一级---外一级)标注时:仅「本折弯节点」上的该外一级面不再做本节点内一级---二级/三级(对面折弯占用不阻塞本折弯其它外一级面)
- 节点内草图线---线:skipGlobalMeasureDedup,允许与节点间同数值不同位置各标一次;但与节点间已标面距/面积对重复则跳过
- 边---边 / 线---线:仅用各面上非公共棱;公共棱不参与标注
- 视图中可见边:Select4 绑定工程图边;禁止对可见边中点盲目 SelectByRay
- 视图中不可见棱:限定在所属面上拾取;优先可见边 Select4;边线棱用端点/中点 SelectByRay
- AddDimension2 后:SystemValue 与期望面距、锚点距偏差须 ≤ 容差,否则 EditUndo2 撤销
- 同一次命令相同测量值(0.5 mm 分桶)不重复建尺(混合边内弧点---本折弯二级 / 邻接外一级 除外,registerUniqueMeasure=false)
- 禁止:一级---二级两面不平行时走边---边(90° 改走线---线或面点)
节点间(双侧均约 90° 的图边):
- 仅:两节点外圆柱来源一级面中「非连接面」且法向平行的边---边
- 面距:BREP 分解后优先大跨距 ⊥ 棱 SelectByRay(如法向 <15 mm 且顶点距 ≥80 mm 时取顶点跨距);否则台阶带/沿折弯/面内分量 Pick
- 禁止:两节点内弧中心点距标注
- 禁止:含内弧一级的节点间面---面候选优先于外一级非连接配对(双 pass:先外一级,再内弧一级兜底)
【折弯角非 90°】
节点内:
- 内弧侧两一级面之间:标「角度」;各面一条与折弯轴非平行的直棱,棱中点 SelectByRay(不用 Select4);配对为图邻接大面 + 内法兰小面(如 2823 ↔ 1996)
- 一级---二级:仅内弧草图点---二级面(点---面,斜棱拾取优先);禁止边---边、禁止二级棱
- 内弧草图点---外三级面:台阶带法向距;与节点间已尝试同距/面积对则跳过
- 禁止:外圆柱一级面---二级、约 90° 一级---三级面路径
- 若本节点与约 90° 折弯图邻接(混合边):节点内不再做「内弧点---二级面」「内弧点---外三级面」,留给节点间混合边路径
节点间:
- 双侧均非约 90°:图边相连时,两节点内圆弧中心草图双点标距
- 一侧约 90°、一侧非约 90°(混合图边):不走外圆柱非连接一级面边---边;改走「内弧草图点」两条独立路径,同一图边可各成功一项:
(1) 本折弯二级(种类:节点间·混合边内弧点---本折弯二级)
· 非约 90° 侧内弧草图点 → 本折弯真实二级面(点---面,斜棱拾取 preferSlantEdgePick)
· 候选来源:本折弯 SecondaryFaces,且剔除与约 90° 邻接节点任意一级面共面的面(如 9451 实为邻接 90° 外一级,不得当作 #3 二级)
· 另从内弧一级面沿 ∥ 折弯轴棱传播补全本地二级(内弧一级引出二级)
· 末端小面(约 60 mm²)可参与;不假定固定 mm 台阶深
· 校验:拒绝板厚/弧半径量级;拒绝实测 ≈ 法向面距(斜棱拾取失败)
(2) 邻接非共用外一级(种类:节点间·混合边内弧点---邻接非共用外一级)
· 非约 90° 侧内弧草图点 → 约 90° 侧外圆柱一级面,排除图边连接共用面(如 2823 内弧一级)
· 先斜棱拾取,失败再法向距拾取;与 (1) 独立去重,可同时落尺(如 ~33.5 mm + ~49 mm)
· 成功后占用约 90° 侧该外一级面(仅阻塞本节点内跨折弯一级---二级)
- 禁止:约 90° 与非约 90° 之间外圆柱非连接一级面边---边(该策略仅用于双侧约 90°)
【面层级(构建折弯图)】
-
圆柱面:与折弯轴平行的直线棱 → 邻面为一级面(内外圆柱均扫;90° 标注仅用外圆柱来源一级面)
-
一级面:外圆柱侧一级面用于引出二级面(∥ 轴棱 → 邻面;内圆弧一级不引二级;须平面)
-
邻面为圆柱/圆弧面时:沿 ∥ 折弯轴棱继续传递到下一平面,将该平面当作二级面(三级作二级);记录路径上二级圆弧面;二级面列表按平面去重
-
若传播路径经内圆柱:三级面改用以配对的外一级面代替内侧台阶平面;须与当前外一级面平行
-
约 90° 一级---三级:外圆柱一级 ↔ 本折弯另一侧来源的三级面;图边共用外一级面同样参与且优先,不受节点间占用阻塞
-
圆柱轴垂直于工程图视图时,∥ 轴棱在图纸上常表现为轮廓边线
【命令执行顺序】
-
构建折弯图(节点 + 图边 ConnectedFirstFace)
-
ProcessGraphEdges:先节点间(约 90° 外一级---外一级;混合边走内弧点双路径)
-
逐节点 ProcessBendNode(约 90° 一级---二级/三级;非 90° 角度 + 内弧点路径)
-
ProcessGraphEdgesInnerArcMidpointDimensions(双侧非 90° 内弧中点,约 90° 图边跳过)
-
输出 benddim_reason_stats.log 原因统计
【公共】
-
工程图引用零件:直接读 ReferencedDocument;引用装配体:从视图可见组件中取含边线折弯最多的零件
-
圆柱轴须垂直于工程图视图平面,否则该折弯/图边跳过
-
标注在视图引用配置下取 BREP(与展开图一致)
-
不可见棱:所属面法向偏移后 SelectByRay,或可见时 Select4;可见棱仅 Select4
-
两面配对标注:候选棱排除两面的公共直线棱,只用轮廓侧非交界棱
-
节点间外一级占用按折弯节点记账;仅阻塞该节点上同一外一级参与本节点内跨折弯一级---二级