From 7bb904513a0cad0665f4aff351a2207befe5aa8c Mon Sep 17 00:00:00 2001 From: jfa Date: Mon, 16 May 2011 12:31:57 +0000 Subject: [PATCH] Mantis issue 0021263: EDF 1868: Several use cases fail (regressions). --- src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx | 55 ++++++++++++++----- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx index 8b1d434f8..854cd37c0 100644 --- a/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IAdvancedOperations.cxx @@ -419,6 +419,7 @@ bool GEOMImpl_IAdvancedOperations::MakeGroups(Handle(GEOM_Object) theShape, int bool addGroup; bool circularFoundAndAdded = false; + bool circularFound10 = false; bool incidentPipeFound = false; bool mainPipeFound = false; bool mainPipeFoundAndAdded = false; @@ -519,6 +520,14 @@ bool GEOMImpl_IAdvancedOperations::MakeGroups(Handle(GEOM_Object) theShape, int addGroup = true; circularFoundAndAdded = true; aGroup->SetName("CIRCULAR_QUARTER_PIPE"); + if (nbEdges == 10) { + circularFound10 = true; + } + } + else if (!circularFound10 && nbEdges == 10) { + circularFound10 = true; + addGroup = true; + aGroup->SetName("CIRCULAR_QUARTER_PIPE"); } } else if (nbEdges == 8) { @@ -526,31 +535,39 @@ bool GEOMImpl_IAdvancedOperations::MakeGroups(Handle(GEOM_Object) theShape, int mainPipeFound = true; flangeFound = false; - TopExp_Explorer Ex(aGroupShapeTrsfInv,TopAbs_VERTEX); + bool isNearZ0 = false; + bool isBelowZ0 = false; + + TopExp_Explorer Ex (aGroupShapeTrsfInv,TopAbs_VERTEX); while (Ex.More()) { - gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(Ex.Current())); + gp_Pnt aP = BRep_Tool::Pnt(TopoDS::Vertex(Ex.Current())); double x=aP.X(), y=aP.Y(), z=aP.Z(); // tuy_princ_long_avant & tuy_princ_long_apres - bool isMain = (((z < Precision::Confusion()) || (x < Precision::Confusion())) && - ((y <= aR1Ext + Precision::Confusion()) || - (y <= -(aR1Ext + Precision::Confusion())) || - (y <= theR1 + Precision::Confusion()) || - (y == -(theR1 + Precision::Confusion())))); + //bool isMain = (((z < Precision::Confusion()) || (x < Precision::Confusion())) && + // ((y <= aR1Ext + Precision::Confusion()) || + // (y <= -(aR1Ext + Precision::Confusion())) || + // (y <= theR1 + Precision::Confusion()) || + // (y == -(theR1 + Precision::Confusion())))); + bool isMain = ((z < Precision::Confusion() || x < Precision::Confusion()) && + (fabs(y) > theR1 - Precision::Confusion() || + fabs(y) < Precision::Confusion())); if (!isMain) { mainPipeFound = false; } // collerette - if (z < Precision::Confusion()) { - flangeFound = true; - if (!flangeFoundAndAdded) { - flangeFoundAndAdded = true; - addGroup = true; - aGroup->SetName("FLANGE"); - } - } + //if (z < Precision::Confusion() && !isMain) { + // flangeFound = true; + // if (!flangeFoundAndAdded) { + // flangeFoundAndAdded = true; + // addGroup = true; + // aGroup->SetName("FLANGE"); + // } + //} + if (fabs(z) < Precision::Confusion()) isNearZ0 = true; + if (z < - Precision::Confusion()) isBelowZ0 = true; // tuyau incident if ((Abs(x) > aR2Ext + Precision::Confusion()) || @@ -567,6 +584,14 @@ bool GEOMImpl_IAdvancedOperations::MakeGroups(Handle(GEOM_Object) theShape, int addGroup = true; aGroup->SetName("HALF_LENGTH_INCIDENT_PIPE"); } + if (isNearZ0 && !isBelowZ0) { + flangeFound = true; + if (!flangeFoundAndAdded) { + flangeFoundAndAdded = true; + addGroup = true; + aGroup->SetName("FLANGE"); + } + } if (!addGroup && (!incidentPipeFound && !mainPipeFound && !flangeFound && -- 2.39.2