body 上扫到圆边后,对邻面调 GetFeature(),只接受 HoleWzd/AdvHole 且在 candidates 里的;普通 Cut 直接跳过。这比纯半径可靠,也比特征面直接投影更贴近展开几何。
有相关讨论,但没有一条帖子完全对应咱们这个问题 (展开 FlatPattern body 上 Face.GetFeature() 回 FlatPattern、孔边归属 HoleWzd、工程图平板型式视图自动标螺纹孔)。
下面按「最接近 → 可参考 API 路径」整理。
1. 官方论坛:孔 ↔ 特征关联本身就难
Hole Callout Check(2018)
John Alexander 写宏检查「零件里每个孔是否在工程图上有孔标注」,原话:
I had to do some shenanigans in order to collect my list of hole features and associate the hole callouts with their respective HoleWizardFeatures.
也就是说:SW 没有直接 API 把工程图孔标注/圆边一键绑回 HoleWzd,大家都得绕路------和你们现在的处境一致。
Counting Hole Instances(2018)
用 Feature.GetFaces() 扫 HoleWzd 会漏掉线性阵列/镜像生成的孔,说明从特征面反查实例本身就不完整。
2. 官方论坛:平板型式 + 孔向导几何不一致
Flat pattern is incorrect when hole wizard is applied...(2017)
折叠态/展开态对孔的处理不一致,展开图孔形和 HoleWzd 特征不一定一一对应;帖子里提到图上的孔标注是对的,但展开几何表现异常 ------侧面说明:不能假设 HoleWzd 特征面 = 展开 body 上的边。
3. 官方论坛:平板型式自动标注(但不针对螺纹孔)
Macro to dimension flat pattern
讨论的是 bounding box、折弯线、坐标尺寸等,**没有「从 body 边反查 HoleWzd / GetFeature 归属」**这类内容。
4. 官方 API 索引帖(论坛里的宏合集)
论坛 Macro 搜索索引 里列了这些官方示例,比零散帖子更有用:
| 主题 | 相关性 |
|---|---|
| How to access Hole Wizard feature from Hole-callout in a drawing? | 孔标注 ↔ HoleWzd(反向) |
| How to access information about a hole generated by the Hole Wizard | IWizardHoleFeatureData2 |
| SheetMetal: Using Multi-Body Flat Patterns In a Drawing | 多 body 展开图 |
| Get Corresponding Entities Between Parts and Views | 折叠/展开/视图实体对应 |
5. 第三方社区(比论坛更贴 API 实现)
Selecting Edges and Faces Associated with a Hole Feature(2026,SolidWorks API Forum / CAD Overflow)
结论:不能指望选中孔特征就拿到所有边 ;应走 IFeature.GetFaces + IWizardHoleFeatureData2.GetSketchPoints(),而不是从 body 边反查。
Entities and GetCorresponding (CadBooster)
钣金有折叠/展开两套配置,edge/face 对象在不同配置/视图下不是同一个指针 ,要用 GetCorresponding / GetCorresponding2 映射------这解释了你们「特征边 3D 和可见边对不上」的现象。
Find specific edge in drawing view (CodeStack)
工程图自动化标准套路:零件里定位 edge → GetCorresponding 到视图空间 → 再标注。
On sheet metal unfolding Part 13: hole mapping(Analysis Situs 技术博客)
讲得很直白:展开后「哪个轮廓对应哪个孔」不是天然给的 ,要靠修改历史/特征链 做 mapping------和你们用 body.GetFeatures() + HoleWzd 语义、展开几何分离的思路一致。
6. 论坛里几乎没人讨论的点(正是你们踩的坑)
| 问题 | 论坛情况 |
|---|---|
展开 body 上 Face.GetFeature() 返回 FlatPattern 而非 HoleWzd |
没找到专门帖子 |
平板型式视图 GetVisibleEntities 的边 vs 模型边 3D 不一致 |
散落在 GetCorresponding 类文章里 |
| 多个同半径非攻牙孔 vs 螺纹孔区分 | 没有成熟方案帖 |
结论
- SW 论坛有讨论「孔特征 ↔ 几何 ↔ 工程图标注」难关联 ,尤其是 218874 Hole Callout Check 和孔向导 API 示例索引。
- 没有 找到一篇帖子完整描述「FlatPattern body + GetFeature 失效 + 平板型式自动标 M5」------这属于 API 边界问题,社区常见做法是:
- 语义从 HoleWzd 特征树取 (
IWizardHoleFeatureData2、特征名 M5) - 几何从展开配置 body / 可见边取
- 用 GetCorresponding 或图纸 XY 拼起来(CodeStack / CadBooster 路线)
- 语义从 HoleWzd 特征树取 (
你们现在的分层方案(特征认孔 + FlatPattern body 找边 + 图纸匹配)和论坛/博客里的共识一致;上一版纯靠 GetFeature 标不出来,也和 214328 里「展开几何 ≠ 孔向导特征拓扑」的现象吻合。