From e62d883f545170010346e352f555ae8a8754c9f5 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 14 Jul 2016 14:16:37 -0400 Subject: [PATCH] Prevent invisible faces. Warn if Direction == XAxisDirection --- src/Mod/TechDraw/App/DrawViewPart.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewPart.cpp b/src/Mod/TechDraw/App/DrawViewPart.cpp index 0f9723bee055..768cf2129016 100644 --- a/src/Mod/TechDraw/App/DrawViewPart.cpp +++ b/src/Mod/TechDraw/App/DrawViewPart.cpp @@ -245,7 +245,9 @@ void DrawViewPart::extractFaces() std::vector::const_iterator itEdge = goEdges.begin(); std::vector origEdges; for (;itEdge != goEdges.end(); itEdge++) { - origEdges.push_back((*itEdge)->occEdge); + if ((*itEdge)->visible) { //don't make invisible faces! + origEdges.push_back((*itEdge)->occEdge); + } } std::vector faceEdges = origEdges; @@ -659,10 +661,22 @@ bool DrawViewPart::hasGeometry(void) const Base::Vector3d DrawViewPart::getValidXDir() const { + Base::Vector3d X(1.0,0.0,0.0); + Base::Vector3d Y(1.0,0.0,0.0); Base::Vector3d xDir = XAxisDirection.getValue(); - if (xDir.Length() == 0) { + if (xDir.Length() < Precision::Confusion()) { Base::Console().Warning("XAxisDirection has zero length - using (1,0,0)\n"); - xDir = Base::Vector3d(1.0,0.0,0.0); + xDir = X; + } + Base::Vector3d viewDir = Direction.getValue(); + if ((xDir - viewDir).Length() < Precision::Confusion()) { + if (xDir == X) { + xDir = Y; + }else{ + xDir = X; + } + Base::Console().Warning("XAxisDirection cannot equal Direction - using (%.3f,%.3f%.3f)\n", + xDir.x,xDir.y,xDir.z); } return xDir; }