diff --git a/src/srf/surface.cpp b/src/srf/surface.cpp index 01d5e9e..a7be968 100644 --- a/src/srf/surface.cpp +++ b/src/srf/surface.cpp @@ -1050,9 +1050,18 @@ void SShell::MakeSectionEdgesInto(Vector n, double d, SEdgeList *sel, SBezierLis } void SShell::TriangulateInto(SMesh *sm) { - SSurface *s; - for(s = surface.First(); s; s = surface.NextAfter(s)) { - s->TriangulateInto(this, sm); + std::vector tm(surface.n); + +#pragma omp parallel for + for(int i=0; iTriangulateInto(this, &tm[i]); + } + + // merge the per-surface meshes + for (auto& m : tm) { + sm->MakeFromCopyOf(&m); + m.Clear(); } }