拓扑、查询与交换
原生拓扑查询
Model.faces(shape) 返回确定性的零基 Face Handle。Model.subshapes(shape, shape_type) 按指定 OpenCascade 拓扑类型提取子形状。Model.free_boundaries(shape, tolerance=1e-6) 返回开放边界 Wire。
所有子形状仍由相同 Session 持有。其索引只属于当前拓扑,在布尔、圆角、倒角、抽壳或重建后可能变化。
选择层级
| 层级 | 适用情况 | API |
|---|---|---|
| 即时索引 | 选择紧接着作用于拓扑未改变的 Shape | Model.faces、Edge 索引、subshapes |
| 查询谓词 | 可根据可测几何属性重新选择 | cadflow.query、Selection、过滤辅助函数 |
| 语义身份 | 产品工作流需要跨 Graph 操作保留意图 | Tag、GeometryRef、Connector、语义追踪 |
序列化工作流优先使用语义引用或谓词引用,把拓扑索引视为临时实现坐标。
测量
核心 Shape 提供 Volume、Area、Length、Center of Mass、BBox、拓扑数量和 Distance。兼容查询函数还提供选择摘要、极值、曲面或曲线描述符及聚合测量;完整列表见建模符号目录。
测量采用模型坐标和当前长度约定。除表达式或工程领域显式包装外,标量结果本身不携带单位对象。
验证边界
应根据需要证明的结论组合检查:
Shape.validate()用于有限原生测量与基本 Solid 数量证据;free_boundaries()用于开放 Shell 证据;- BREP Inspection 用于详细拓扑邻域与对比;
- 领域 Validator 用于 Assembly、Scene、Physical Connection 与 Simulation Handoff。
拓扑有效的模型仍可能在尺寸、位置、材料分配或连接意图上错误。这些验收标准属于调用应用或领域报告。
交换格式
| 格式 | 读取 | 写出 | 保留内容 |
|---|---|---|---|
| STEP | Model.import_step | Shape.export_step | 精确交换几何与拓扑 |
| BREP | Model.import_brep | 兼容 BREP Exporter | 原生边界表示 |
| STL | Model.import_stl | Shape.export_stl | 仅三角形 |
| GLB | Scene/Preview Reader | Shape.export_preview_glb、Scene Compiler | 渲染网格与展示数据 |
| Model JSON | Serialization API | Serialization API | 声明式操作图与结构化工作流状态 |
文件扩展名不能替代验证。写出后应检查存在性与非零大小;关键交换还应重新导入并对比测量或拓扑。面向浏览器的产物可使用 Scene Package 获得更严格的 Schema 与资源验证。
路径与安全
路径应限制在应用控制的 Root 内。对不可信 Archive 或 JSON,应在分配或解压前执行资源限制。Scene Preflight 辅助函数覆盖 Archive 大小、Member 大小、压缩比、资源数量与 GLB 数量。