diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index d693619f3dd02a7185780932256c0ff63762913b..55c356f17f578d17ec923bb0d25d83434412799b 100644 --- a/Geo/GEdge.cpp +++ b/Geo/GEdge.cpp @@ -297,7 +297,7 @@ bool GEdge::XYZToU(const double X, const double Y, const double Z, double uMin = uu.low(); double uMax = uu.high(); - printf("dans GEdge uMin=%g, uMax=%g \n", uMin, uMax); + // printf("dans GEdge uMin=%g, uMax=%g \n", uMin, uMax); SVector3 Q(X, Y, Z), P; diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index db55455256cac03723feac617750f0a8bd8873bf..012d00644bc1a736af107a82234caa2a85d744d6 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -795,7 +795,10 @@ void GModel::_storeElementsInEntities(std::map<int, std::vector<MElement*> > &ma v = new discreteVertex(this, it->first); add(v); } - if(!v->points.empty()) v->points.clear(); // CAD points already have one by default + if(!v->points.empty()) { + v->points.clear(); + v->mesh_vertices.clear(); + } // CAD points already have one by default _addElements(v->points, it->second); } break; diff --git a/Geo/GeomMeshMatcher.cpp b/Geo/GeomMeshMatcher.cpp index e77e44f3d09d895309822c30f21a63c3df015385..9a32a9daafa5f9a5954e6cfc5b6ecb44fc1d4291 100644 --- a/Geo/GeomMeshMatcher.cpp +++ b/Geo/GeomMeshMatcher.cpp @@ -210,6 +210,14 @@ GeomMeshMatcher::matchEdges(GModel* m1, GModel* m2, coresp_e->push_back(Pair<GEdge*,GEdge*>((GEdge*) *entity1 , choice)); choice->setTag(((GEdge*) *entity1)->tag()); + + // This reverses the edge if it's not parametrized in the right direction + if (choice->getBeginVertex() == findMatching<GVertex*>(*coresp_v,v2) && + choice->getEndVertex() == findMatching<GVertex*>(*coresp_v,v1)) { + Msg::Info("Wrong parametrization direction, reversing."); + choice->reverse(); + } + num_matched_edges++; } diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index a666efa23d5bb9a21c16974c44da526e32d039ae..b36767ecd9692f496abaf49265f8768fcb1c43f7 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -258,11 +258,6 @@ static void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve, else reparamOK &= reparamMeshVertexOnEdge(v1, ge, u1); if(reparamOK){ - if (u1 < u0) { - ge->reverse(); - edge = ele->getEdge(i); - double tmp = u0; u0 = u1; u1 = tmp; - } double relax = 1.; while (1){ if(computeEquidistantParameters(ge, u0, u1, nPts + 2, US, relax))