diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index 07b27a09673128e07a95dc0e10385e7f0540b31f..b2afd05c63c5dc619cee6144b8a82595bb96dbfa 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -599,16 +599,17 @@ static void applyOCCMeshConstraints(GModel *m, const void *constraints) // set the mesh as immutable ge->meshAttributes.Method == MESH_NONE; // set the correct tags on the boundary vertices - int numbeg = nodeNum.Value(1); - int numend = nodeNum.Value(n); + bool invert = (nodePar.Value(1) > nodePar.Value(n)); + int numbeg = nodeNum.Value(invert ? n : 1); + int numend = nodeNum.Value(invert ? 1 : n); Msg::Debug("Applying mesh contraints on edge %d: beg=%d end=%d", ge->tag(), numbeg, numend); ge->getBeginVertex()->mesh_vertices[0]->setNum(numbeg); ge->getEndVertex()->mesh_vertices[0]->setNum(numend); // set the mesh on the edge for(int i = 2; i < n; i++){ - int num = nodeNum.Value(i); - double u = nodePar.Value(i); + int num = nodeNum.Value(invert ? n - i + 1 : i); + double u = nodePar.Value(invert ? n - i + 1 : i); GPoint p = ge->point(u); Msg::Debug("... adding vertex on edge %d: num=%d u=%g xyz=(%g,%g,%g)", ge->tag(), num, u, p.x(), p.y(), p.z());