94 std::shared_ptr<curves::NurbsCurve>
curve;
211 int add_loop(
const std::vector<int>& edges,
bool outer =
true);
219 int add_face(
int surface_id,
const std::vector<int>& loops);
227 int add_shell(
const std::vector<int>& faces,
bool closed =
true);
235 int add_body(
const std::vector<int>& shells,
const std::string& name =
"");
250 [[nodiscard]]
size_t num_edges()
const {
return edges_.size(); }
253 [[nodiscard]]
size_t num_faces()
const {
return faces_.size(); }
256 [[nodiscard]]
size_t num_bodies()
const {
return bodies_.size(); }
270 [[nodiscard]]
const TopoEdge&
edge(
int id)
const {
return edges_[id]; }
273 [[nodiscard]]
const TopoFace&
face(
int id)
const {
return faces_[id]; }
282 [[nodiscard]]
const std::vector<TopoLoop>&
all_loops()
const {
return loops_; }
329 [[nodiscard]] std::vector<int>
face_edges(
int face_id)
const;
340 [[nodiscard]] std::vector<int>
edge_faces(
int edge_id)
const;
351 std::vector<TopoVertex> vertices_;
352 std::vector<TopoEdge> edges_;
353 std::vector<TopoLoop> loops_;
354 std::vector<TopoFace> faces_;
355 std::vector<TopoShell> shells_;
356 std::vector<TopoBody> bodies_;
357 std::vector<curves::NurbsSurface> surfaces_;
const TopoEdge & edge(int id) const
按数组索引访问边
const std::vector< TopoLoop > & all_loops() const
获取所有环的只读引用
int add_shell(const std::vector< int > &faces, bool closed=true)
添加壳
bool is_valid() const
检查模型有效性(快速版本)
std::vector< int > vertex_edges(int vertex_id) const
获取顶点的所有相邻边
mesh::HalfedgeMesh to_mesh(double deflection=0.01) const
将 B-Rep 模型 tessellate 为三角网格
int add_face(int surface_id, const std::vector< int > &loops)
添加面
size_t num_bodies() const
体数量
const TopoLoop & loop_by_id(int id) const
按唯一 ID 访问环
size_t num_vertices() const
顶点数量
int add_body(const std::vector< int > &shells, const std::string &name="")
添加体
const TopoVertex & vertex_by_id(int id) const
按唯一 ID 访问顶点(适用于边数据中的 ID 引用)
core::AABB3D bounds() const
计算模型的轴对齐包围盒
int add_edge(int v0, int v1, const curves::NurbsCurve &curve)
添加曲线边
int add_edge(int v0, int v1)
添加直线边
int add_vertex(const Point3D &p)
添加顶点
size_t num_edges() const
边数量
size_t num_faces() const
面数量
std::vector< int > face_edges(int face_id) const
获取面的所有边
const TopoVertex & vertex(int id) const
按数组索引访问顶点
const TopoFace & face(int id) const
按数组索引访问面
int add_loop(const std::vector< int > &edges, bool outer=true)
添加环
const curves::NurbsSurface & surface(int id) const
按数组索引访问曲面
size_t num_surfaces() const
曲面数量
int add_surface(const curves::NurbsSurface &surf)
添加 NURBS 曲面
std::vector< int > edge_faces(int edge_id) const
获取边的所有相邻面
NURBS 曲线(Non-Uniform Rational B-Spline)
AABB< double > AABB3D
双精度三维包围盒
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
foundation::Point3D Point3D
双精度三维点(重新导出)
std::string name
体名称(对应 STEP 中的 PRODUCT)
std::vector< int > shells
壳 ID 列表
bool reversed
是否相对于曲线参数方向反转
std::shared_ptr< curves::NurbsCurve > curve
边的几何曲线(可为空,表示直线)
std::vector< int > loops
环 ID 列表(第一个为外环,后续为内环)
bool is_outer
true = 外环, false = 内环(孔)
std::vector< int > edges
边 ID 序列(按环的遍历顺序)
std::vector< int > faces
面 ID 列表