# ViewDesignEngine vs 成熟几何引擎 — 严谨差距分析 > 编制: 2026-07-27 | 原则: 不做百分比估算,逐项对比实际能力 ## 方法论 - **参照系**: Parasolid V35(公开文档)、Open CASCADE 7.8(开源可见)、ACIS R30(公开文档) - **判定标准**: ✅ 完整实现 | ⚠️ 部分实现/未经充分验证 | ❌ 缺失 - **不做加权评分**,如实列出每项差距 --- ## 一、B-Rep 拓扑与建模 ### 1.1 拓扑数据结构 | 能力 | Parasolid | ACIS | OCCT | VDE | 说明 | |------|-----------|------|------|-----|------| | Vertex/Edge/Loop/Face/Shell/Body 层次 | ✅ | ✅ | ✅ | ✅ | | | 拓扑与几何分离 | ✅ | ✅ | ✅ | ✅ | | | 非流形拓扑 | ✅ | ❌ | ❌ | ❌ | 线框+面片混合模型 | | 多体零件 | ✅ | ✅ | ✅ | ⚠️ | VDE有Body但未充分测试多体交互 | | 区域(Region)/体 | ✅ | ✅ | ✅ | ⚠️ | 封闭壳识别为体 | ### 1.2 几何表示 | 能力 | Parasolid | ACIS | OCCT | VDE | 说明 | |------|-----------|------|------|-----|------| | NURBS 曲线(C0/C1/C2) | ✅ | ✅ | ✅ | ✅ | | | NURBS 曲面(C0/C1/C2) | ✅ | ✅ | ✅ | ✅ | | | 解析曲线(直线/圆/椭圆) | ✅ | ✅ | ✅ | ✅ | | | 解析曲面(平面/圆柱/圆锥/球/环) | ✅ | ✅ | ✅ | ✅ | | | **Trimmed Surface(裁剪曲面)** | ✅ | ✅ | ✅ | ✅ | v5实现 | | **p-curve(参数空间曲线)** | ✅ | ✅ | ✅ | ⚠️ | VDE支持但未在所有路径验证 | | 曲线在曲面上的投影 | ✅ | ✅ | ✅ | ❌ | 布尔/修复需要 | | 曲面延伸(多种方式) | ✅ | ✅ | ✅ | ✅ | v5 | | 曲面过渡(blend) | ✅ | ✅ | ⚠️ | ✅ | v5滚动球 | | **Offset曲面(等距)** | ✅ | ✅ | ✅ | ⚠️ | v5 stub级别 | ### 1.3 欧拉操作 | 操作 | Parasolid | ACIS | OCCT | VDE | |------|-----------|------|------|-----| | MEV(边分点) | ✅ | ✅ | ✅ | ✅ | | KEV(点删边) | ✅ | ✅ | ✅ | ✅ | | MEF(面分边) | ✅ | ✅ | ✅ | ✅ | | KEF(边删面) | ✅ | ✅ | ✅ | ✅ | | KEMR(删内环边) | ✅ | ✅ | ✅ | ✅ | | MEKR(内环建边) | ✅ | ✅ | ✅ | ✅ | | **完整欧拉操作集(10+)** | ✅ | ✅ | ✅ | ❌ | 仅有6个基础操作 | ### 差距小结 | # | 差距 | 严重性 | 工作量 | |---|------|--------|--------| | 1 | 非流形拓扑 | 低(专业需求) | 大 | | 2 | 曲线在曲面上投影 | **高**(布尔/修复依赖) | 中 | | 3 | Offset曲面完整性 | 中(模具设计需要) | 中 | | 4 | 完整欧拉操作集 | 低(高层API可替代) | 小 | --- ## 二、布尔运算 ### 2.1 布尔核心 | 能力 | Parasolid | ACIS | OCCT | VDE | 说明 | |------|-----------|------|------|-----|------| | Union/Intersection/Difference | ✅ | ✅ | ✅ | ✅ | | | 面-面求交(SSI) | ✅ | ✅ | ✅ | ✅ | v5 SSI | | 容差感知布尔 | ✅ | ✅ | ⚠️ | ✅ | v10 tolerant | | 退化情况处理 | ✅ | ✅ | ⚠️ | ⚠️ | 共面/共线/切触,v10增强但未充分测试 | | **非流形布尔** | ✅ | ❌ | ❌ | ❌ | | | 布尔后自动修复 | ✅ | ✅ | ❌ | ✅ | heal pipeline | ### 2.2 布尔可靠性 | 场景 | Parasolid | OCCT | VDE | |------|-----------|------|-----| | 两个分离体 union | ✅ | ✅ | ✅ | | 重合面 union | ✅ | ⚠️ | ⚠️ | | 切触(tangent) union | ✅ | ❌ | ⚠️ | | 共面 difference | ✅ | ❌ | ⚠️ | | 薄壁件布尔 | ✅ | ❌ | ❌ | | 大数量(1000+)面布尔 | ✅ | ⚠️ | ❌ 未测试 | | 自交体布尔 | ✅ | ❌ | ❌ | ### 差距小结 | # | 差距 | 严重性 | 工作量 | |---|------|--------|--------| | 1 | 切触/共面 100%可靠性 | **致命** | 大(需大量测试) | | 2 | 薄壁件布尔 | **高** | 中 | | 3 | 大面数布尔性能 | 中 | 中 | | 4 | 自交体布尔 | 低 | 大 | | 5 | 非流形布尔 | 低 | 大 | --- ## 三、数据交换 ### 3.1 导入能力 | 格式 | Parasolid | ACIS | OCCT | VDE | 健壮性对比 | |------|-----------|------|------|-----|-----------| | STEP AP203/214 | ✅ | ✅ | ✅ | ✅ | OCCT>VDE(解析器成熟度) | | STEP AP242 | ✅ | ✅ | ❌ | ✅ | | | IGES 5.3 | ✅ | ✅ | ✅ | ✅ | | | Parasolid XT | ✅原生 | ✅ | ❌ | ⚠️ | VDE仅文本格式 | | ACIS SAT | ✅ | ✅原生 | ❌ | ⚠️ | VDE仅文本格式 | | JT | ✅ | ✅ | ❌ | ⚠️ | VDE基础实现 | | IFC | ✅ | ✅ | ✅ | ⚠️ | VDE基础实体 | | **破损文件恢复** | ✅ | ✅ | ⚠️ | ⚠️ | v10增强但未达到Parasolid水平 | | **非标STEP实体** | ✅ | ✅ | ⚠️ | ⚠️ | v10非标映射 | ### 3.2 导出能力 | 格式 | Parasolid | ACIS | OCCT | VDE | |------|-----------|------|------|-----| | XT(二进制) | ✅ | ✅ | ❌ | ❌ | | SAT(二进制) | ✅ | ✅ | ❌ | ❌ | | JT(含PMI) | ✅ | ✅ | ❌ | ❌ | ### 差距小结 | # | 差距 | 严重性 | |---|------|--------| | 1 | XT/SAT/JT 二进制格式 | **致命**(工业互操作必须) | | 2 | 破损STEP恢复不完善 | **高** | | 3 | IFC 深度覆盖(所有建筑实体) | 低(BIM专项) | --- ## 四、曲面质量与分析 ### 4.1 连续性 | 能力 | Parasolid | CGM(CATIA) | OCCT | VDE | |------|-----------|------------|------|-----| | G0 位置连续 | ✅ | ✅ | ✅ | ✅ | | G1 切线连续 | ✅ | ✅ | ✅ | ✅ | | G2 曲率连续 | ✅ | ✅ | ⚠️ | ✅ | | G3 曲率变化率连续 | ✅ | ✅ | ❌ | ✅ v5 | | **G3+ 带约束过渡** | ✅ | ✅ | ❌ | ⚠️ v10 基础 | | **曲面能量最小化光顺** | ✅ | ✅ | ❌ | ⚠️ v10 基础 | ### 4.2 分析工具 | 能力 | Parasolid | CGM | OCCT | VDE | |------|-----------|-----|------|-----| | 高斯曲率 | ✅ | ✅ | ✅ | ✅ | | 平均曲率 | ✅ | ✅ | ✅ | ✅ | | 斑马纹 | ✅ | ✅ | ❌ | ✅ | | 高光线 | ✅ | ✅ | ❌ | ✅ | | 反射线 | ✅ | ✅ | ❌ | ✅ | | 等照度 | ✅ | ✅ | ❌ | ✅ | | 曲率梳 | ✅ | ✅ | ❌ | ✅ | | **曲面诊断自动修复** | ✅ | ✅ | ❌ | ⚠️ | ### 差距小结 | # | 差距 | 严重性 | |---|------|--------| | 1 | G3+约束过渡不够成熟 | 中(汽车/消费品需要) | | 2 | 曲面光顺精度 vs CGM | 中 | | 3 | 诊断自动修复 | 中 | --- ## 五、性能与鲁棒性 — 最大的真实差距 ### 5.1 测试与验证 | 指标 | Parasolid | ACIS | OCCT | VDE | |------|-----------|------|------|-----| | 测试用例数 | ~50,000 | ~30,000 | ~10,000 | ~1,000 | | 模糊测试 | ✅ 持续运行 | ✅ | ⚠️ | ⚠️ 基础 | | 回归测试 | ✅ 每次提交 | ✅ | ✅ | ❌ 无CI | | 真实用户bug积累 | 35年×数千客户 | 35年 | 20年 | 0 | | 边界case库 | 数十万模型 | 数十万 | 数万 | 0 | ### 5.2 已知差距(可能导致崩溃的场景) 1. **自交几何体处理** — STEP导入的破损模型,Parasolid能恢复,VDE可能崩溃 2. **退化几何** — 零长度边、零面积面、重合顶点,Parasolid自动清理 3. **数值溢出** — 极大/极小坐标值(1e-15 ~ 1e15),Parasolid有保护 4. **极端纵横比** — 1:10000的面,Parasolid正常,VDE未测试 5. **内存耗尽恢复** — Parasolid有graceful degradation,VDE会OOM ### 差距小结 — 致命 | # | 差距 | 严重性 | |---|------|--------| | 1 | **没有真实场景测试** | **致命** | | 2 | **边界case崩溃风险** | **致命** | | 3 | 无CI/CD自动化测试 | 高 | | 4 | 无模糊测试持续运行 | 高 | --- ## 六、VDE 实际强于竞品的维度 | 能力 | VDE | 说明 | |------|-----|------| | **Apache 2.0** | ✅ | OCCT的LGPL限制商用修改,VDE完全自由 | | **现代C++17** | ✅ | Parasolid/ACIS背负C遗产,API老旧 | | **零运行时依赖** | ✅ | 仅header-only Eigen,OCCT需十几个系统库 | | **代码量精简** | ✅ | 76K vs OCCT 5M,维护成本极低 | | **内置CAM** | ✅ | 商业引擎不内置CAM | | **SDF+可微分几何** | ✅ | 竞品无此能力 | | **中文优先** | ✅ | 文档/注释/社区中文 | --- ## 七、诚实总结 ### 功能覆盖 VDE 在 B-Rep 拓扑、NURBS 曲面、格式交换的**功能种类**上,已不输商业引擎太多。大厂有的功能,VDE 基本都有对应的实现。 ### 真正的差距 — 三个字:**没测过** | Parasolid | VDE | |-----------|-----| | 50,000 个测试,每天跑 | ~1,000 个测试,手动跑 | | 35 年 × 数千客户的 bug 报告 | 0 个真实用户 | | 数十万边界 case 模型库 | 0 | | CI 每次提交全量回归 | 无 CI | | 专门的模糊测试团队 | 基础模糊测试框架 | | 航空航天/汽车认证 | 无 | **VDE 可以写出来 Parasolid 90% 的功能,但写不出 Parasolid 35 年的 bug 修复。** ### 下一步 功能差距已经不是主要矛盾。真正需要的是: 1. **测试基础设施建设** — CI/CD、自动化回归、模糊测试 2. **边界 case 库** — 收集/生成退化模型 3. **真实场景验证** — 对接实际应用,暴露问题 4. **二进制格式** — XT/SAT/JT 二进制读写 5. **代码审查和静态分析** — Coverity/clang-tidy 全量扫描