c# solidworks 自动标注折弯7 图可视化,清晰定义,画点改画线
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
两面配对标注:候选棱排除两面的公共直线棱,只用轮廓侧非交界棱
节点间外一级占用按折弯节点记账;仅阻塞该节点上同一外一级参与本节点内跨折弯一级—二级
