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° 一级---三级:外圆柱一级 ↔ 本折弯另一侧来源的三级面;图边共用外一级面同样参与且优先,不受节点间占用阻塞

  • 圆柱轴垂直于工程图视图时,∥ 轴棱在图纸上常表现为轮廓边线

【命令执行顺序】

  1. 构建折弯图(节点 + 图边 ConnectedFirstFace)

  2. ProcessGraphEdges:先节点间(约 90° 外一级---外一级;混合边走内弧点双路径)

  3. 逐节点 ProcessBendNode(约 90° 一级---二级/三级;非 90° 角度 + 内弧点路径)

  4. ProcessGraphEdgesInnerArcMidpointDimensions(双侧非 90° 内弧中点,约 90° 图边跳过)

  5. 输出 benddim_reason_stats.log 原因统计

【公共】

  • 工程图引用零件:直接读 ReferencedDocument;引用装配体:从视图可见组件中取含边线折弯最多的零件

  • 圆柱轴须垂直于工程图视图平面,否则该折弯/图边跳过

  • 标注在视图引用配置下取 BREP(与展开图一致)

  • 不可见棱:所属面法向偏移后 SelectByRay,或可见时 Select4;可见棱仅 Select4

  • 两面配对标注:候选棱排除两面的公共直线棱,只用轮廓侧非交界棱

  • 节点间外一级占用按折弯节点记账;仅阻塞该节点上同一外一级参与本节点内跨折弯一级---二级

相关推荐
njsgcs2 天前
solidworks装配体显示子零件文档的颜色外观办法
solidworks
solidwork_s2 天前
在SOLIDWORKS中如何将小数点显示为逗号
solidworks
ddsoft1233 天前
CAMWorks 用户自定义车刀教程
软件·solidworks·钣金
njsgcs12 天前
solidworks二次开发文档chm位置 sldworksapi.chm
solidworks
njsgcs18 天前
制作solidworks插件 装配体导出展开耗时分析
开发语言·c#·solidworks
njsgcs18 天前
c# solidworks 标注攻牙
开发语言·c#·solidworks
njsgcs19 天前
c# solidworks GetPartBox无法获得正确实体边界框原因
开发语言·c#·solidworks
solidwork_s22 天前
SOLIDWORKS Simulation 连接类型有那些
solidworks
njsgcs24 天前
c# solidworks createline 拉伸发现有微小两点间隙 导致拉伸变成薄壁特征 改bug画了6个小时 解决结果
c#·bug·solidworks