Revision: 74267
          http://sourceforge.net/p/brlcad/code/74267
Author:   starseeker
Date:     2019-10-30 16:01:46 +0000 (Wed, 30 Oct 2019)
Log Message:
-----------
More tweaks to validity reporting

Modified Paths:
--------------
    brlcad/trunk/src/libbrep/cdt_mesh.cpp
    brlcad/trunk/src/libbrep/cdt_ovlps.cpp

Modified: brlcad/trunk/src/libbrep/cdt_mesh.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_mesh.cpp       2019-10-30 15:53:25 UTC (rev 
74266)
+++ brlcad/trunk/src/libbrep/cdt_mesh.cpp       2019-10-30 16:01:46 UTC (rev 
74267)
@@ -2927,7 +2927,7 @@
        ON_3dVector bdir = bnorm(tri);
        if (tdir.Length() > 0 && bdir.Length() > 0 && ON_DotProduct(tdir, bdir) 
< 0.1) {
            if (verbose > 0) {
-               std::cout << "Still have invalid normals in mesh, triangle (" 
<< tri.v[0] << "," << tri.v[1] << "," << tri.v[2] << ")\n";
+               std::cout << name << " face " << f_id << ": invalid normals in 
mesh, triangle (" << tri.v[0] << "," << tri.v[1] << "," << tri.v[2] << ")\n";
            }
            if (verbose > 1) {
                bu_vls_sprintf(&fname, 
"%d-invalid_normal_tri_%ld_%ld_%ld.plot3", f_id, tri.v[0], tri.v[1], tri.v[2]);
@@ -2948,7 +2948,7 @@
     boundary_edges_update();
     if (problem_edges.size() > 0) {
        if (verbose > 0) {
-           std::cout << name << " face " << f_id << ": still have problem 
edges in mesh\n";
+           std::cout << name << " face " << f_id << ": problem edges in 
mesh\n";
        }
        eret = false;
     }
@@ -2963,6 +2963,11 @@
     }
 
     bu_vls_free(&fname);
+
+    if ((nret && eret) && verbose > 0) {
+       std::cout << name << " face " << f_id << ": valid\n";
+    }
+
     return (nret && eret);
 }
 

Modified: brlcad/trunk/src/libbrep/cdt_ovlps.cpp
===================================================================
--- brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-30 15:53:25 UTC (rev 
74266)
+++ brlcad/trunk/src/libbrep/cdt_ovlps.cpp      2019-10-30 16:01:46 UTC (rev 
74267)
@@ -1977,8 +1977,9 @@
 }
 
 void
-check_faces_validity(std::set<std::pair<cdt_mesh::cdt_mesh_t *, 
cdt_mesh::cdt_mesh_t *>> &check_pairs, int UNUSED(id))
+check_faces_validity(std::set<std::pair<cdt_mesh::cdt_mesh_t *, 
cdt_mesh::cdt_mesh_t *>> &check_pairs)
 {
+    int verbosity = 1;
     std::set<cdt_mesh::cdt_mesh_t *> fmeshes;
     std::set<std::pair<cdt_mesh::cdt_mesh_t *, cdt_mesh::cdt_mesh_t 
*>>::iterator cp_it;
     for (cp_it = check_pairs.begin(); cp_it != check_pairs.end(); cp_it++) {
@@ -1987,10 +1988,11 @@
        fmeshes.insert(fmesh1);
        fmeshes.insert(fmesh2);
     }
+    std::cout << "Full face validity check results:\n";
     std::set<cdt_mesh::cdt_mesh_t *>::iterator f_it;
     for (f_it = fmeshes.begin(); f_it != fmeshes.end(); f_it++) {
        cdt_mesh::cdt_mesh_t *fmesh = *f_it;
-       std::cout << "face " << fmesh->f_id << " validity: " << fmesh->valid(1) 
<< "\n";
+       fmesh->valid(verbosity);
 #if 0
        struct ON_Brep_CDT_State *s_cdt = (struct ON_Brep_CDT_State 
*)fmesh->p_cdt;
        std::string fpname = std::to_string(id) + std::string("_") + 
std::string(s_cdt->name) + std::string("_face_") + std::to_string(fmesh->f_id) 
+ std::string(".plot3");
@@ -2362,6 +2364,7 @@
            cdt_mesh::uedge_t ue = es_it->first;
            std::cout << "Edge: " << ue.v[0] << "<->" << ue.v[1] << ": " << 
es_it->second.size() << " points\n";
        }
+       omesh->fmesh->valid(1);
 
        refine_edge_vert_sets(omesh, &edge_sets);
 
@@ -2386,7 +2389,7 @@
     if (!check_pairs.size()) return 0;
 
     // Sanity check - are we valid?
-    check_faces_validity(check_pairs, 0);
+    check_faces_validity(check_pairs);
 
     // Report our starting overlap count
     int face_ov_cnt = face_fmesh_ovlps(check_pairs);
@@ -2423,7 +2426,7 @@
     int avcnt = adjust_close_verts(ocheck_pairs);
     if (avcnt) {
        std::cout << close_vert_checks << ": Adjusted " << avcnt << " 
vertices\n";
-       check_faces_validity(check_pairs, 1);
+       check_faces_validity(check_pairs);
        face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
        std::cout << "Post vert adjustment " << close_vert_checks << " overlap 
cnt: " << face_ov_cnt << "\n";
        close_vert_checks++;
@@ -2447,7 +2450,7 @@
        int sbfvtri_cnt = split_brep_face_edges_near_verts(&nverts, a_cdt, 
ocheck_pairs, f2omap);
        if (sbfvtri_cnt) {
            std::cout << "Replaced " << sbfvtri_cnt << " triangles by splitting 
edges near vertices\n";
-           check_faces_validity(check_pairs, 2);
+           check_faces_validity(check_pairs);
            face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
            std::cout << "Post edges-near-verts split overlap cnt: " << 
face_ov_cnt << "\n";
 
@@ -2455,7 +2458,7 @@
            avcnt = adjust_close_verts(ocheck_pairs);
            if (avcnt) {
                std::cout << close_vert_checks << ": Adjusted " << avcnt << " 
vertices\n";
-               check_faces_validity(check_pairs, 1);
+               check_faces_validity(check_pairs);
                face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
                std::cout << "Post vert adjustment " << close_vert_checks << " 
overlap cnt: " << face_ov_cnt << "\n";
                close_vert_checks++;
@@ -2486,7 +2489,7 @@
        avcnt = adjust_close_verts(ocheck_pairs);
        if (avcnt) {
            std::cout << close_vert_checks << ": Adjusted " << avcnt << " 
vertices\n";
-           check_faces_validity(check_pairs, 1);
+           check_faces_validity(check_pairs);
            face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
            std::cout << "Post vert adjustment " << close_vert_checks << " 
overlap cnt: " << face_ov_cnt << "\n";
            close_vert_checks++;
@@ -2500,7 +2503,7 @@
        // points and tessellate.
        omesh_interior_edge_verts(ocheck_pairs, nverts);
 
-       check_faces_validity(check_pairs, 4);
+       check_faces_validity(check_pairs);
        face_ov_cnt = face_omesh_ovlps(ocheck_pairs);
        std::cout << "Iteration " << iterations << " post tri split overlap 
cnt: " << face_ov_cnt << "\n";
     }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to