diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 04cedb1320..9af73f441e 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -515,14 +515,18 @@ void DrawViewPart::extractFaces() const std::vector& goEdges = geometryObject->getVisibleFaceEdges(SmoothVisible.getValue(),SeamVisible.getValue()); std::vector::const_iterator itEdge = goEdges.begin(); - std::vector origEdges; + + //make a copy of the input edges so the loose tolerances of face finding are + //not applied to the real edge geometry. See TopoDS_Shape::TShape(). + std::vector copyEdges; for (;itEdge != goEdges.end(); itEdge++) { - origEdges.push_back((*itEdge)->occEdge); + BRepBuilderAPI_Copy copier((*itEdge)->occEdge, true, true); + copyEdges.push_back(TopoDS::Edge(copier.Shape())); } std::vector faceEdges; std::vector nonZero; - for (auto& e:origEdges) { //drop any zero edges (shouldn't be any by now!!!) + for (auto& e:copyEdges) { //drop any zero edges (shouldn't be any by now!!!) if (!DrawUtil::isZeroEdge(e)) { nonZero.push_back(e); } else {