diff --git a/src/brep/brep.cpp b/src/brep/brep.cpp index 2fe969d..cc284c6 100644 --- a/src/brep/brep.cpp +++ b/src/brep/brep.cpp @@ -59,16 +59,24 @@ core::AABB3D BrepModel::bounds() const { } bool BrepModel::is_valid() const { - // Basic validity: all referenced IDs must exist for (const auto& e : edges_) { if (e.v_start >= static_cast(vertices_.size()) || - e.v_end >= static_cast(vertices_.size())) + e.v_end >= static_cast(vertices_.size())) { + fprintf(stderr, "is_valid FAIL: edge v=%d/%d vs %zu verts\n", e.v_start, e.v_end, vertices_.size()); return false; + } } for (const auto& f : faces_) { - if (f.surface_id >= static_cast(surfaces_.size())) return false; - for (int li : f.loops) - if (li >= static_cast(loops_.size())) return false; + if (f.surface_id >= static_cast(surfaces_.size())) { + fprintf(stderr, "is_valid FAIL: face.surface_id=%d vs %zu surfaces\n", f.surface_id, surfaces_.size()); + return false; + } + for (int li : f.loops) { + if (li >= static_cast(loops_.size())) { + fprintf(stderr, "is_valid FAIL: loop=%d vs %zu loops\n", li, loops_.size()); + return false; + } + } } return true; }