|
ViewDesignEngine
3.1.0
高性能 CAD 计算几何引擎
|
B-Rep 模型 更多...
#include <brep.h>
Public 成员函数 | |
| BrepModel ()=default | |
| int | add_vertex (const Point3D &p) |
| 添加顶点 更多... | |
| int | add_edge (int v0, int v1) |
| 添加直线边 更多... | |
| int | add_edge (int v0, int v1, const curves::NurbsCurve &curve) |
| 添加曲线边 更多... | |
| int | add_loop (const std::vector< int > &edges, bool outer=true) |
| 添加环 更多... | |
| int | add_face (int surface_id, const std::vector< int > &loops) |
| 添加面 更多... | |
| int | add_shell (const std::vector< int > &faces, bool closed=true) |
| 添加壳 更多... | |
| int | add_body (const std::vector< int > &shells, const std::string &name="") |
| 添加体 更多... | |
| int | add_surface (const curves::NurbsSurface &surf) |
| 添加 NURBS 曲面 更多... | |
| size_t | num_vertices () const |
| 顶点数量 更多... | |
| size_t | num_edges () const |
| 边数量 更多... | |
| size_t | num_faces () const |
| 面数量 更多... | |
| size_t | num_bodies () const |
| 体数量 更多... | |
| size_t | num_surfaces () const |
| 曲面数量 更多... | |
| const TopoVertex & | vertex (int id) const |
| 按数组索引访问顶点 更多... | |
| const TopoVertex & | vertex_by_id (int id) const |
| 按唯一 ID 访问顶点(适用于边数据中的 ID 引用) 更多... | |
| const TopoEdge & | edge (int id) const |
| 按数组索引访问边 更多... | |
| const TopoFace & | face (int id) const |
| 按数组索引访问面 更多... | |
| const curves::NurbsSurface & | surface (int id) const |
| 按数组索引访问曲面 更多... | |
| const TopoLoop & | loop_by_id (int id) const |
| 按唯一 ID 访问环 更多... | |
| const std::vector< TopoLoop > & | all_loops () const |
| 获取所有环的只读引用 更多... | |
| core::AABB3D | bounds () const |
| 计算模型的轴对齐包围盒 更多... | |
| bool | is_valid () const |
| 检查模型有效性(快速版本) 更多... | |
| mesh::HalfedgeMesh | to_mesh (double deflection=0.01) const |
| 将 B-Rep 模型 tessellate 为三角网格 更多... | |
| std::vector< int > | face_edges (int face_id) const |
| 获取面的所有边 更多... | |
| std::vector< int > | edge_faces (int edge_id) const |
| 获取边的所有相邻面 更多... | |
| std::vector< int > | vertex_edges (int vertex_id) const |
| 获取顶点的所有相邻边 更多... | |
B-Rep 模型
完整的三维边界表示模型,包含几何和拓扑数据。
| 容差 | 典型值 | 用途 |
|---|---|---|
| 顶点容差 | 1e-6 | 判断两点是否视为同一点 |
| 边曲线容差 | 1e-5 | 曲线拟合精度 |
| tessellation | 0.01 | 曲面转网格的弦高误差 |
|
default |
| int vde::brep::BrepModel::add_body | ( | const std::vector< int > & | shells, |
| const std::string & | name = "" |
||
| ) |
添加体
| shells | 壳 ID 列表 |
| name | 体名称 |
| int vde::brep::BrepModel::add_edge | ( | int | v0, |
| int | v1 | ||
| ) |
添加直线边
| v0 | 起点顶点 ID |
| v1 | 终点顶点 ID |
| int vde::brep::BrepModel::add_edge | ( | int | v0, |
| int | v1, | ||
| const curves::NurbsCurve & | curve | ||
| ) |
添加曲线边
| v0 | 起点顶点 ID |
| v1 | 终点顶点 ID |
| curve | 边的几何曲线 |
| int vde::brep::BrepModel::add_face | ( | int | surface_id, |
| const std::vector< int > & | loops | ||
| ) |
添加面
| surface_id | 关联曲面 ID |
| loops | 环 ID 列表 |
| int vde::brep::BrepModel::add_loop | ( | const std::vector< int > & | edges, |
| bool | outer = true |
||
| ) |
添加环
| edges | 环中边的 ID 序列(顺序连接) |
| outer | true = 外环, false = 内环 |
| int vde::brep::BrepModel::add_shell | ( | const std::vector< int > & | faces, |
| bool | closed = true |
||
| ) |
添加壳
| faces | 面 ID 列表 |
| closed | 是否为封闭壳 |
| int vde::brep::BrepModel::add_surface | ( | const curves::NurbsSurface & | surf | ) |
添加 NURBS 曲面
| surf | NURBS 曲面定义 |
| int vde::brep::BrepModel::add_vertex | ( | const Point3D & | p | ) |
添加顶点
| p | 顶点坐标 |
|
inline |
| core::AABB3D vde::brep::BrepModel::bounds | ( | ) | const |
计算模型的轴对齐包围盒
遍历所有顶点,取最小/最大坐标。
| std::vector<int> vde::brep::BrepModel::edge_faces | ( | int | edge_id | ) | const |
获取边的所有相邻面
反向查找:哪些面包含此边。 在流形网格中每条边应有恰好 2 个相邻面。
| edge_id | 边 ID |
| std::vector<int> vde::brep::BrepModel::face_edges | ( | int | face_id | ) | const |
获取面的所有边
展开面的所有环,收集其中包含的边 ID。
| face_id | 面 ID |
| bool vde::brep::BrepModel::is_valid | ( | ) | const |
检查模型有效性(快速版本)
进行基本检查:是否有顶点/边/面,ID 引用是否有效。 完整验证请使用 brep_validate.h 中的 validate()。
| const TopoLoop& vde::brep::BrepModel::loop_by_id | ( | int | id | ) | const |
按唯一 ID 访问环
|
inline |
| mesh::HalfedgeMesh vde::brep::BrepModel::to_mesh | ( | double | deflection = 0.01 | ) | const |
将 B-Rep 模型 tessellate 为三角网格
所有曲面和曲线以给定的弦高误差 tessellate 为三角形。
| deflection | 弦高误差(控制 tessellation 精度,默认 0.01) |
|
inline |
| const TopoVertex& vde::brep::BrepModel::vertex_by_id | ( | int | id | ) | const |
按唯一 ID 访问顶点(适用于边数据中的 ID 引用)
| std::vector<int> vde::brep::BrepModel::vertex_edges | ( | int | vertex_id | ) | const |
获取顶点的所有相邻边
| vertex_id | 顶点 ID |