diff --git a/Mesh/meshGEdgeExtruded.cpp b/Mesh/meshGEdgeExtruded.cpp index 7b408839a9d9d0e7bd014bbb2f7b00458feb6a26..a3ad1bcf75d51a8142c95783c65ff7270c9656fd 100644 --- a/Mesh/meshGEdgeExtruded.cpp +++ b/Mesh/meshGEdgeExtruded.cpp @@ -18,8 +18,11 @@ static void extrudeMesh(GVertex *from, GEdge *to) for(int k = 0; k < ep->mesh.NbElmLayer[j]; k++) { double x = v->x(), y = v->y(), z = v->z(); ep->Extrude(j, k + 1, x, y, z); - if(j != ep->mesh.NbLayer - 1 || k != ep->mesh.NbElmLayer[j] - 1) - to->mesh_vertices.push_back(new MEdgeVertex(x, y, z, to, ep->u(j, k + 1))); + if(j != ep->mesh.NbLayer - 1 || k != ep->mesh.NbElmLayer[j] - 1){ + Range<double> r = to->parBounds(0); + double t = r.low() + ep->u(j, k + 1) * (r.high() - r.low()); + to->mesh_vertices.push_back(new MEdgeVertex(x, y, z, to, t)); + } } } } @@ -38,7 +41,7 @@ static void copyMesh(GEdge *from, GEdge *to) int index = (direction < 0) ? (from->mesh_vertices.size() - 1 - i) : i; MVertex *v = from->mesh_vertices[index]; double x = v->x(), y = v->y(), z = v->z(); - ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1], + ep->Extrude(ep->mesh.NbLayer - 1, ep->mesh.NbElmLayer[ep->mesh.NbLayer - 1], x, y, z); double u; v->getParameter(0, u); @@ -77,9 +80,9 @@ int MeshExtrudedCurve(GEdge *ge) // create elements for(unsigned int i = 0; i < ge->mesh_vertices.size() + 1; i++){ - MVertex *v0 = (i == 0) ? + MVertex *v0 = (i == 0) ? ge->getBeginVertex()->mesh_vertices[0] : ge->mesh_vertices[i - 1]; - MVertex *v1 = (i == ge->mesh_vertices.size()) ? + MVertex *v1 = (i == ge->mesh_vertices.size()) ? ge->getEndVertex()->mesh_vertices[0] : ge->mesh_vertices[i]; MLine* newElem = new MLine(v0, v1); ge->lines.push_back(newElem);