diff --git a/src/BRep/BRep_Builder.cxx b/src/BRep/BRep_Builder.cxx index c556d6a3bb..b30c72fe47 100644 --- a/src/BRep/BRep_Builder.cxx +++ b/src/BRep/BRep_Builder.cxx @@ -563,7 +563,6 @@ void BRep_Builder::MakeEdge(TopoDS_Edge& E) const { TopoDS_LockedShape::Raise("BRep_Builder::MakeEdge"); } - TE->Closed(Standard_False); MakeShape(E,TE); } @@ -586,7 +585,6 @@ void BRep_Builder::UpdateEdge(const TopoDS_Edge& E, const TopLoc_Location l = L.Predivided(E.Location()); UpdateCurves(TE->ChangeCurves(),C,l); - if (!C.IsNull()) TE->Closed(C->IsClosed()); TE->UpdateTolerance(Tol); TE->Modified(Standard_True); @@ -665,8 +663,6 @@ void BRep_Builder::UpdateEdge(const TopoDS_Edge& E, const TopLoc_Location l = L.Predivided(E.Location()); UpdateCurves(TE->ChangeCurves(),C1,C2,S,l); - if (!C1.IsNull() && !C2.IsNull()) - TE->Closed(C1->IsClosed() && C2->IsClosed()); TE->UpdateTolerance(Tol); TE->Modified(Standard_True); @@ -695,9 +691,7 @@ void BRep_Builder::UpdateEdge(const TopoDS_Edge& E, const TopLoc_Location l = L.Predivided(E.Location()); UpdateCurves(TE->ChangeCurves(),C1,C2,S,l,Pf,Pl); - if (!C1.IsNull() && !C2.IsNull()) - TE->Closed(C1->IsClosed() && C2->IsClosed()); - + TE->UpdateTolerance(Tol); TE->Modified(Standard_True); } @@ -768,14 +762,14 @@ void BRep_Builder::UpdateEdge(const TopoDS_Edge& E, while (itcr.More()) { if (itcr.Value()->IsPolygonOnTriangulation(T,l)) - { + { // cr is used to keep a reference on the curve representation // this avoid deleting it as its content may be referenced by T cr = itcr.Value(); lcr.Remove(itcr); isModified = Standard_True; break; - } + } itcr.Next(); } @@ -1093,23 +1087,8 @@ void BRep_Builder::Range(const TopoDS_Edge& E, while (itcr.More()) { GC = Handle(BRep_GCurve)::DownCast(itcr.Value()); - if (!GC.IsNull()) { - if (!Only3d || GC->IsCurve3D()) - GC->SetRange(First,Last); - if (GC->IsCurve3D()) { - // Set the closedness flag to the correct value. - Handle(Geom_Curve) C = GC->Curve3D(); - - //fixing a bug PRO18577 to avoid infinite values of First and Last - if ( !C.IsNull() && - !Precision::IsNegativeInfinite(First) && - !Precision::IsPositiveInfinite(Last) ) { - Standard_Boolean closed = - C->Value(First).IsEqual(C->Value(Last),BRep_Tool::Tolerance(E)); - TE->Closed(closed); - } - } - } + if (!GC.IsNull() && (!Only3d || GC->IsCurve3D())) + GC->SetRange(First,Last); itcr.Next(); } @@ -1141,20 +1120,10 @@ void BRep_Builder::Range(const TopoDS_Edge& E, while (itcr.More()) { GC = Handle(BRep_GCurve)::DownCast(itcr.Value()); - if (!GC.IsNull()) { - if (GC->IsCurveOnSurface(S,l)) { - GC->SetRange(First,Last); - - // Set the closedness flag to the correct value. - Handle(Geom2d_Curve) PC = GC->PCurve(); - gp_Pnt2d P1 = PC->Value(First); - gp_Pnt2d P2 = PC->Value(Last); - gp_Pnt PP1 = S->Value(P1.X(),P1.Y()); - gp_Pnt PP2 = S->Value(P2.X(),P2.Y()); - Standard_Boolean closed = PP1.IsEqual(PP2,BRep_Tool::Tolerance(E)); - TE->Closed(closed); - break; - } + if (!GC.IsNull() && GC->IsCurveOnSurface(S,l)) + { + GC->SetRange(First,Last); + break; } itcr.Next(); } diff --git a/src/BRep/BRep_Tool.cdl b/src/BRep/BRep_Tool.cdl index 84c6c81704..0db0bb0c3d 100644 --- a/src/BRep/BRep_Tool.cdl +++ b/src/BRep/BRep_Tool.cdl @@ -49,14 +49,15 @@ is ----------------------------------------------------------- ----------------------------------------------------------- - -- Solid -- + -- Shape -- ----------------------------------------------------------- ----------------------------------------------------------- IsClosed (myclass; S : Shape from TopoDS) returns Boolean from Standard; - ---Purpose: If S is Solid or Shell, returns True if it has no free boundaries (edges). - -- If S is Wire, returns True if it has no free ends (vertices). - -- (Internal and External sub-shepes are ignored in this check.) - -- For other shape types returns S.Closed(). + ---Purpose: If S is Shell, returns True if it has no free boundaries (edges). + -- If S is Wire, returns True if it has no free ends (vertices). + -- (Internal and External sub-shepes are ignored in these checks) + -- If S is Edge, returns True if its vertices are the same. + -- For other shape types returns S.Closed(). ----------------------------------------------------------- ----------------------------------------------------------- diff --git a/src/BRep/BRep_Tool.cxx b/src/BRep/BRep_Tool.cxx index 930c7dc417..800f1df403 100644 --- a/src/BRep/BRep_Tool.cxx +++ b/src/BRep/BRep_Tool.cxx @@ -1455,7 +1455,7 @@ gp_Pnt2d BRep_Tool::Parameters(const TopoDS_Vertex& V, //======================================================================= Standard_Boolean BRep_Tool::IsClosed (const TopoDS_Shape& theShape) { - if (theShape.ShapeType() == TopAbs_SHELL || theShape.ShapeType() == TopAbs_SOLID) + if (theShape.ShapeType() == TopAbs_SHELL) { NCollection_Map<TopoDS_Shape, TopTools_ShapeMapHasher> aMap (101, new NCollection_IncAllocator); TopExp_Explorer exp (theShape.Oriented(TopAbs_FORWARD), TopAbs_EDGE); @@ -1487,6 +1487,12 @@ Standard_Boolean BRep_Tool::IsClosed (const TopoDS_Shape& theShape) } return hasBound && aMap.IsEmpty(); } + else if (theShape.ShapeType() == TopAbs_EDGE) + { + TopoDS_Vertex aVFirst, aVLast; + TopExp::Vertices(TopoDS::Edge(theShape), aVFirst, aVLast); + return !aVFirst.IsNull() && aVFirst.IsSame(aVLast); + } return theShape.Closed(); } diff --git a/src/BRepAlgo/BRepAlgo_Loop.cxx b/src/BRepAlgo/BRepAlgo_Loop.cxx index 64bec4b01b..e8cc8c6421 100644 --- a/src/BRepAlgo/BRepAlgo_Loop.cxx +++ b/src/BRepAlgo/BRepAlgo_Loop.cxx @@ -826,7 +826,7 @@ void BRepAlgo_Loop::CutEdge (const TopoDS_Edge& E, { gp_Pnt2d pf, pl; BRep_Tool::UVPoints( EE, myFace, pf, pl ); - if (pf.Distance(pl) <= Tol && !EE.Closed()) + if (pf.Distance(pl) <= Tol && !BRep_Tool::IsClosed(EE)) NE.Remove(it); else it.Next(); diff --git a/src/BRepFeat/BRepFeat_MakeCylindricalHole.cxx b/src/BRepFeat/BRepFeat_MakeCylindricalHole.cxx index 7e0b90f837..5ef838e04e 100644 --- a/src/BRepFeat/BRepFeat_MakeCylindricalHole.cxx +++ b/src/BRepFeat/BRepFeat_MakeCylindricalHole.cxx @@ -92,7 +92,6 @@ void BRepFeat_MakeCylindricalHole::Perform(const Standard_Real Radius) TopoDS_Solid theTool; B.MakeSolid(theTool); B.Add(theTool,theCylinder.Shell()); - theTool.Closed(Standard_True); myTopFace = theCylinder.TopFace(); myBotFace = theCylinder.BottomFace(); @@ -193,7 +192,6 @@ void BRepFeat_MakeCylindricalHole::PerformThruNext(const Standard_Real Radius, TopoDS_Solid theTool; B.MakeSolid(theTool); B.Add(theTool,theCylinder.Shell()); - theTool.Closed(Standard_True); myTopFace = theCylinder.TopFace(); myBotFace = theCylinder.BottomFace(); @@ -344,7 +342,6 @@ void BRepFeat_MakeCylindricalHole::PerformUntilEnd(const Standard_Real Radius, TopoDS_Solid theTool; B.MakeSolid(theTool); B.Add(theTool,theCylinder.Shell()); - theTool.Closed(Standard_True); myTopFace = theCylinder.TopFace(); myBotFace = theCylinder.BottomFace(); @@ -474,7 +471,6 @@ void BRepFeat_MakeCylindricalHole::Perform(const Standard_Real Radius, TopoDS_Solid theTool; B.MakeSolid(theTool); B.Add(theTool,theCylinder.Shell()); - theTool.Closed(Standard_True); myTopFace = theCylinder.TopFace(); myBotFace = theCylinder.BottomFace(); @@ -603,7 +599,6 @@ void BRepFeat_MakeCylindricalHole::PerformBlind(const Standard_Real Radius, TopoDS_Solid theTool; B.MakeSolid(theTool); B.Add(theTool,theCylinder.Shell()); - theTool.Closed(Standard_True); myTopFace = theCylinder.TopFace(); myBotFace.Nullify(); diff --git a/src/BRepFill/BRepFill.cxx b/src/BRepFill/BRepFill.cxx index 1b1361ac89..8eb19fc677 100644 --- a/src/BRepFill/BRepFill.cxx +++ b/src/BRepFill/BRepFill.cxx @@ -304,7 +304,6 @@ TopoDS_Face BRepFill::Face(const TopoDS_Edge& Edge1, TopoDS_Edge Edge3, Edge4; Iso = Surf->UIso(f1); -// Tol = Max(BT.Tolerance(V1f), BT.Tolerance(V2f)); Tol = Max(BRep_Tool::Tolerance(V1f), BRep_Tool::Tolerance(V2f)); if (Iso->Value(f2).Distance(Iso->Value(l2)) > Tol) { B.MakeEdge(Edge3,Iso,Precision::Confusion()); @@ -324,7 +323,6 @@ TopoDS_Face BRepFill::Face(const TopoDS_Edge& Edge1, } else { Iso = Surf->UIso(l1); -// Tol = Max(BT.Tolerance(V1l), BT.Tolerance(V2l)); Tol = Max(BRep_Tool::Tolerance(V1l), BRep_Tool::Tolerance(V2l)); if (Iso->Value(l2).Distance(Iso->Value(f2)) > Tol) { B.MakeEdge(Edge4,Iso,Precision::Confusion()); @@ -436,7 +434,8 @@ TopoDS_Shell BRepFill::Shell(const TopoDS_Wire& Wire1, Edge1 = TopoDS::Edge(ex1.Current()); Edge2 = TopoDS::Edge(ex2.Current()); - Standard_Boolean Periodic = Edge1.Closed() && Edge2.Closed(); + Standard_Boolean Periodic = + BRep_Tool::IsClosed(Edge1) && BRep_Tool::IsClosed(Edge2); ex1.Next(); ex2.Next(); diff --git a/src/BRepFill/BRepFill_Evolved.cxx b/src/BRepFill/BRepFill_Evolved.cxx index d23cd97bd6..642fbca5d4 100644 --- a/src/BRepFill/BRepFill_Evolved.cxx +++ b/src/BRepFill/BRepFill_Evolved.cxx @@ -3218,7 +3218,7 @@ void CutEdge (const TopoDS_Edge& E, CT2d = new Geom2d_TrimmedCurve(C2d,f,l); if (CT2d->BasisCurve()->IsKind(STANDARD_TYPE(Geom2d_Circle)) && - E.Closed()) { + BRep_Tool::IsClosed(E)) { //--------------------------- // Cut closed circle. //--------------------------- diff --git a/src/BRepFill/BRepFill_Filling.cxx b/src/BRepFill/BRepFill_Filling.cxx index 4e0bd81a5a..56e108abc1 100644 --- a/src/BRepFill/BRepFill_Filling.cxx +++ b/src/BRepFill/BRepFill_Filling.cxx @@ -681,7 +681,7 @@ void BRepFill_Filling::Build() Handle(Geom2d_Curve) aCurveOnPlate = CurvesOnPlate->Value(i); TopoDS_Edge NewEdge = TopoDS::Edge(anEdge.EmptyCopied()); - NewEdge.Closed(anEdge.Closed()); + TopoDS_Vertex V1, V2; TopExp::Vertices(anEdge, V1, V2, Standard_True); //with orientation BB.UpdateVertex(V1, dmax); diff --git a/src/BRepFill/BRepFill_Generator.cxx b/src/BRepFill/BRepFill_Generator.cxx index 989cd8be54..3f7a83869f 100644 --- a/src/BRepFill/BRepFill_Generator.cxx +++ b/src/BRepFill/BRepFill_Generator.cxx @@ -620,8 +620,8 @@ void BRepFill_Generator::Perform() Edge2 = TopoDS::Edge(ex2.Current()); } - Standard_Boolean Periodic - = (Edge1.Closed() || degen1) && (Edge2.Closed() || degen2); + Standard_Boolean Periodic = (BRep_Tool::IsClosed(Edge1) || degen1) && + (BRep_Tool::IsClosed(Edge2) || degen2); // ATTENTION : a non-punctual wire should not // contain a punctual edge if (!wPoint1) ex1.Next(); @@ -648,13 +648,7 @@ void BRepFill_Generator::Perform() Vf_toMap = V1f; Vl_toMap = V1l; } - - if(Periodic) { - Standard_Boolean E1IsReallyClosed = BRepTools::Compare(V1f,V1l); - Standard_Boolean E2IsReallyClosed = BRepTools::Compare(V2f,V2l); - Periodic - = (E1IsReallyClosed || degen1) && (E2IsReallyClosed || degen2); - } + // processing of KPart Standard_Integer IType = DetectKPart(Edge1,Edge2); if (IType==0) { diff --git a/src/BRepFill/BRepFill_NSections.cxx b/src/BRepFill/BRepFill_NSections.cxx index cbdeab57bd..81431a2f50 100644 --- a/src/BRepFill/BRepFill_NSections.cxx +++ b/src/BRepFill/BRepFill_NSections.cxx @@ -573,7 +573,7 @@ void BRepFill_NSections::Init(const TColStd_SequenceOfReal & P, Last = aux; C = CBis; } - if ((ii>1) || (!E.Closed()) ) { // Cut C + if ((ii>1) || (!BRep_Tool::IsClosed(E)) ) { // Cut C Handle(Geom_TrimmedCurve) TC = new (Geom_TrimmedCurve) (C,First, Last); C = TC; diff --git a/src/BRepFill/BRepFill_OffsetWire.cxx b/src/BRepFill/BRepFill_OffsetWire.cxx index efd39b4f0d..ee341093f5 100644 --- a/src/BRepFill/BRepFill_OffsetWire.cxx +++ b/src/BRepFill/BRepFill_OffsetWire.cxx @@ -251,9 +251,7 @@ static Standard_Boolean KPartCircle C = Ct->BasisCurve(); } - TopoDS_Vertex V1,V2; - TopExp::Vertices(E,V1,V2); - if ((C->IsKind(STANDARD_TYPE(Geom_Circle)) && V1.IsSame(V2)) || //closed circle + if ((C->IsKind(STANDARD_TYPE(Geom_Circle)) && BRep_Tool::IsClosed(E)) || //closed circle IsOpenResult) { Standard_Real anOffset = myOffset; diff --git a/src/BRepFill/BRepFill_Pipe.cxx b/src/BRepFill/BRepFill_Pipe.cxx index 4c27561a7d..3f17c63711 100644 --- a/src/BRepFill/BRepFill_Pipe.cxx +++ b/src/BRepFill/BRepFill_Pipe.cxx @@ -556,18 +556,18 @@ TopoDS_Shape BRepFill_Pipe::MakeShape(const TopoDS_Shape& S, B.MakeShell(TopoDS::Shell(result)); B.MakeWire(W); B.Add(W, S); - W.Closed(S.Closed()); + W.Closed(BRep_Tool::IsClosed(S)); TheS = W; if (!FirstShape.IsNull()) { B.MakeWire(W); B.Add(W, FirstShape); - W.Closed(FirstShape.Closed()); + W.Closed(BRep_Tool::IsClosed(FirstShape)); TheFirst = W; } if (!LastShape.IsNull()) { B.MakeWire(W); B.Add(W, LastShape); - W.Closed(LastShape.Closed()); + W.Closed(BRep_Tool::IsClosed(LastShape)); TheLast = W; } result.Closed (BRep_Tool::IsClosed (result)); diff --git a/src/BRepFill/BRepFill_Section.cxx b/src/BRepFill/BRepFill_Section.cxx index 6f00f35ca9..070eb2d8e9 100644 --- a/src/BRepFill/BRepFill_Section.cxx +++ b/src/BRepFill/BRepFill_Section.cxx @@ -46,7 +46,6 @@ BRepFill_Section::BRepFill_Section(const TopoDS_Shape& Profile, BB.Add( DegEdge, aVertex.Oriented(TopAbs_FORWARD) ); BB.Add( DegEdge, aVertex.Oriented(TopAbs_REVERSED) ); BB.Degenerated( DegEdge, Standard_True ); - DegEdge.Closed( Standard_True ); BB.MakeWire( wire ); BB.Add( wire, DegEdge ); diff --git a/src/BRepFill/BRepFill_ShapeLaw.cxx b/src/BRepFill/BRepFill_ShapeLaw.cxx index 096688580c..a48f1784bc 100644 --- a/src/BRepFill/BRepFill_ShapeLaw.cxx +++ b/src/BRepFill/BRepFill_ShapeLaw.cxx @@ -149,23 +149,12 @@ void BRepFill_ShapeLaw::Init(const Standard_Boolean Build) C = CBis; } - Standard_Boolean IsReallyClosed = E.Closed(); - //IFV - some checking when closed flag is wrong - if(IsReallyClosed) { - TopoDS_Vertex V1, V2; - TopExp::Vertices(E, V1, V2); - if(V1.IsNull() || V2.IsNull()) { - IsReallyClosed = Standard_False; - } - else { - IsReallyClosed = V1.IsSame(V2); - } - } - if (IsReallyClosed && + Standard_Boolean IsClosed = BRep_Tool::IsClosed(E); + if (IsClosed && Abs(C->FirstParameter() - First) > Precision::PConfusion()) - IsReallyClosed = Standard_False; //trimmed curve differs + IsClosed = Standard_False; //trimmed curve differs - if ((ii>1) || !IsReallyClosed ) { // Trim C + if ((ii>1) || !IsClosed ) { // Trim C Handle(Geom_TrimmedCurve) TC = new Geom_TrimmedCurve(C,First, Last); C = TC; } diff --git a/src/BRepLib/BRepLib.cxx b/src/BRepLib/BRepLib.cxx index 1ff393d404..3b72a6ff6b 100644 --- a/src/BRepLib/BRepLib.cxx +++ b/src/BRepLib/BRepLib.cxx @@ -361,15 +361,9 @@ Standard_Boolean BRepLib::BuildCurve3d(const TopoDS_Edge& AnEdge, Standard_Real First, Last; BRep_Builder B; - Standard_Boolean is_closed ; - is_closed = AnEdge.Closed() ; - B.UpdateEdge(AnEdge,C3d,LocalLoc,0.0e0); BRep_Tool::Range(AnEdge, S, LC, First, Last); B.Range(AnEdge, First, Last); //Do not forget 3D range.(PRO6412) - TopoDS_Edge E = AnEdge ; - E.Closed(is_closed) ; - } else { // @@ -430,14 +424,10 @@ Standard_Boolean BRepLib::BuildCurve3d(const TopoDS_Edge& AnEdge, max_deviation = Max( tolerance, Tolerance ); if (NewCurvePtr.IsNull()) return Standard_False; - Standard_Boolean is_closed ; - is_closed = AnEdge.Closed() ; B.UpdateEdge(TopoDS::Edge(AnEdge), NewCurvePtr, L[0], max_deviation) ; - TopoDS_Edge E = AnEdge ; - E.Closed(is_closed) ; if (jj == 1 ) { // // if there is only one curve on surface attached to the edge diff --git a/src/BRepLib/BRepLib_MakeWire.cxx b/src/BRepLib/BRepLib_MakeWire.cxx index 3e4a82d70c..c0de4f9b7f 100644 --- a/src/BRepLib/BRepLib_MakeWire.cxx +++ b/src/BRepLib/BRepLib_MakeWire.cxx @@ -279,7 +279,6 @@ void BRepLib_MakeWire::Add(const TopoDS_Edge& E) // copy the edge TopoDS_Shape Dummy = EE.EmptyCopied(); myEdge = TopoDS::Edge(Dummy); - myEdge.Closed(EE.Closed()); for (it.Initialize(EE); it.More(); it.Next()) { diff --git a/src/BRepLib/BRepLib_MakeWire_1.cxx b/src/BRepLib/BRepLib_MakeWire_1.cxx index 8bafda8e4e..35a595b73b 100644 --- a/src/BRepLib/BRepLib_MakeWire_1.cxx +++ b/src/BRepLib/BRepLib_MakeWire_1.cxx @@ -97,7 +97,6 @@ void BRepLib_MakeWire::Add(const TopTools_ListOfShape& L) TopoDS_Edge newEd=TopoDS::Edge(aLocalShape); // TopoDS_Edge newEd=TopoDS::Edge(curEd.EmptyCopied()); BB.Transfert(curEd, newEd); - newEd.Closed(curEd.Closed()); TopTools_ListIteratorOfListOfShape itV(nlist); for (; itV.More(); itV.Next()) { BB.Add(newEd, itV.Value()); diff --git a/src/BRepOffset/BRepOffset_Offset.cxx b/src/BRepOffset/BRepOffset_Offset.cxx index e3eda2d5c3..7e734e0555 100644 --- a/src/BRepOffset/BRepOffset_Offset.cxx +++ b/src/BRepOffset/BRepOffset_Offset.cxx @@ -179,43 +179,6 @@ static void UpdateEdge (const TopoDS_Edge& E, B.UpdateEdge(E,NC1,NC2,F,Tol); } -//======================================================================= -//function : Range3d -//purpose : Set the range only on the 3d curve -// waitint that BRep_Builder does it !! -//======================================================================= - -static void Range3d (const TopoDS_Edge& E, - const Standard_Real First, - const Standard_Real Last) -{ - // set the range to all the representations - const Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*) &E.TShape()); - - BRep_ListOfCurveRepresentation& lcr = TE->ChangeCurves(); - BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr); - Handle(BRep_GCurve) GC; - - while (itcr.More()) { - GC = Handle(BRep_GCurve)::DownCast(itcr.Value()); - if (!GC.IsNull()) { - if (GC->IsCurve3D()) { - GC->SetRange(First,Last); - // Set the closedness flag to the correct value. - Handle(Geom_Curve) C = GC->Curve3D(); - if ( !C.IsNull() ) { - Standard_Boolean closed = - C->Value(First).IsEqual(C->Value(Last),BRep_Tool::Tolerance(E)); - TE->Closed(closed); - } - } - } - itcr.Next(); - } - - TE->Modified(Standard_True); -} - //======================================================================= //function : ComputeCurve3d @@ -1165,12 +1128,11 @@ void BRepOffset_Offset::Init(const TopoDS_Edge& Path, // mise a same range de la nouvelle pcurve. if ( !C1is3D && !C1Denerated) - myBuilder.SameRange (Edge1,Standard_False); - if ( !C1is3D && !C1Denerated) - Range3d(Edge1,U1,U2); - myBuilder.Range (Edge1,myFace,U1,U2); - Range3d(Edge1,U1,U2); - myBuilder.Range (Edge1,myFace,U1,U2); + { + myBuilder.SameRange (Edge1,Standard_False); + myBuilder.Range(Edge1,U1,U2, Standard_True); + } + myBuilder.Range(Edge1,myFace,U1,U2); BRepLib::SameRange(Edge1); // mise a sameparameter pour les KPart @@ -1206,7 +1168,8 @@ void BRepOffset_Offset::Init(const TopoDS_Edge& Path, // mise a same range de la nouvelle pcurve. myBuilder.SameRange (Edge2,Standard_False); - if ( !C2is3D && !C2Denerated) Range3d(Edge2,U1,U2); + if ( !C2is3D && !C2Denerated) + myBuilder.Range(Edge2, U1, U2, Standard_True); myBuilder.Range(Edge2,myFace,U1,U2); BRepLib::SameRange(Edge2); diff --git a/src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx b/src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx index be62e61aba..db5178fca0 100644 --- a/src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx +++ b/src/BRepOffsetAPI/BRepOffsetAPI_ThruSections.cxx @@ -317,7 +317,6 @@ void BRepOffsetAPI_ThruSections::AddVertex(const TopoDS_Vertex& aVertex) BB.Add( DegEdge, aVertex.Oriented(TopAbs_FORWARD) ); BB.Add( DegEdge, aVertex.Oriented(TopAbs_REVERSED) ); BB.Degenerated( DegEdge, Standard_True ); - DegEdge.Closed( Standard_True ); TopoDS_Wire DegWire; BB.MakeWire( DegWire ); diff --git a/src/BRepPrim/BRepPrim_Builder.cxx b/src/BRepPrim/BRepPrim_Builder.cxx index beab8514db..aa2eb0a8ab 100644 --- a/src/BRepPrim/BRepPrim_Builder.cxx +++ b/src/BRepPrim/BRepPrim_Builder.cxx @@ -210,7 +210,6 @@ void BRepPrim_Builder::AddEdgeVertex (TopoDS_Edge& E, VV.Orientation(TopAbs_REVERSED); myBuilder.Add(E,VV); myBuilder.Range(E,P1,P2); - E.Closed(Standard_True); } //======================================================================= @@ -280,6 +279,7 @@ void BRepPrim_Builder::CompleteEdge(TopoDS_Edge& E)const void BRepPrim_Builder::CompleteWire(TopoDS_Wire& W)const { + W.Closed(BRep_Tool::IsClosed(W)); BRepTools::Update(W); } @@ -302,5 +302,6 @@ void BRepPrim_Builder::CompleteFace(TopoDS_Face& F)const void BRepPrim_Builder::CompleteShell(TopoDS_Shell& S)const { + S.Closed(BRep_Tool::IsClosed(S)); BRepTools::Update(S); } diff --git a/src/BRepPrimAPI/BRepPrimAPI_MakeOneAxis.cxx b/src/BRepPrimAPI/BRepPrimAPI_MakeOneAxis.cxx index 3a6e0c1020..6f97b32113 100644 --- a/src/BRepPrimAPI/BRepPrimAPI_MakeOneAxis.cxx +++ b/src/BRepPrimAPI/BRepPrimAPI_MakeOneAxis.cxx @@ -52,7 +52,6 @@ void BRepPrimAPI_MakeOneAxis::Build() BRep_Builder B; B.MakeSolid(TopoDS::Solid(myShape)); B.Add(myShape,((BRepPrim_OneAxis*) OneAxis())->Shell()); - myShape.Closed(Standard_True); Done(); } diff --git a/src/BRepPrimAPI/BRepPrimAPI_MakeWedge.cxx b/src/BRepPrimAPI/BRepPrimAPI_MakeWedge.cxx index 34dc6decd9..65422dc73f 100644 --- a/src/BRepPrimAPI/BRepPrimAPI_MakeWedge.cxx +++ b/src/BRepPrimAPI/BRepPrimAPI_MakeWedge.cxx @@ -119,7 +119,6 @@ void BRepPrimAPI_MakeWedge::Build() BRep_Builder B; B.MakeSolid(TopoDS::Solid(myShape)); B.Add(myShape,myWedge.Shell()); - myShape.Closed(Standard_True); Done(); } diff --git a/src/BRepProj/BRepProj_Projection.cxx b/src/BRepProj/BRepProj_Projection.cxx index 0edfa6bffd..c56a0e61f6 100644 --- a/src/BRepProj/BRepProj_Projection.cxx +++ b/src/BRepProj/BRepProj_Projection.cxx @@ -260,7 +260,7 @@ BRepProj_Projection::BRepProj_Projection (const TopoDS_Shape& Wire, BB.Add( DegEdge, aVertex.Oriented(TopAbs_FORWARD) ); BB.Add( DegEdge, aVertex.Oriented(TopAbs_REVERSED) ); BB.Degenerated( DegEdge, Standard_True ); - DegEdge.Closed( Standard_True ); + TopoDS_Wire DegWire; BB.MakeWire( DegWire ); BB.Add( DegWire, DegEdge ); diff --git a/src/BRepSweep/BRepSweep_NumLinearRegularSweep.cxx b/src/BRepSweep/BRepSweep_NumLinearRegularSweep.cxx index 21c5c30489..7a9d71a1a9 100644 --- a/src/BRepSweep/BRepSweep_NumLinearRegularSweep.cxx +++ b/src/BRepSweep/BRepSweep_NumLinearRegularSweep.cxx @@ -256,6 +256,7 @@ TopoDS_Shape BRepSweep_NumLinearRegularSweep::Shape (const TopoDS_Shape& aGenS, TopoDS_Shape wi; myBuilder.MakeWire(wi); myBuilder.Add(wi,newShape,Or); + wi.Closed(BRep_Tool::IsClosed(wi)); WireSeq.Append(wi); } else{ @@ -328,6 +329,7 @@ TopoDS_Shape BRepSweep_NumLinearRegularSweep::Shape (const TopoDS_Shape& aGenS, } } else{ + newWire.Closed(BRep_Tool::IsClosed(newWire)); myBuilder.Add(myShapes(iGenS,iDirS),newWire); } myBuiltShapes(iGenS,iDirS) = Standard_True; @@ -393,7 +395,10 @@ TopoDS_Shape BRepSweep_NumLinearRegularSweep::Shape (const TopoDS_Shape& aGenS, } myBuiltShapes(iGenS,iDirS) = Standard_True; } - myShapes(iGenS,iDirS).Closed (BRep_Tool::IsClosed (myShapes(iGenS,iDirS))); + // Change the "Closed" flag only for Wires and Shells + if (myShapes(iGenS, iDirS).ShapeType() == TopAbs_WIRE || + myShapes(iGenS, iDirS).ShapeType() == TopAbs_SHELL) + myShapes(iGenS,iDirS).Closed (BRep_Tool::IsClosed (myShapes(iGenS,iDirS))); return myShapes(iGenS,iDirS); } diff --git a/src/BRepSweep/BRepSweep_Rotation.cxx b/src/BRepSweep/BRepSweep_Rotation.cxx index 99dcfffa56..b0d01d3d42 100644 --- a/src/BRepSweep/BRepSweep_Rotation.cxx +++ b/src/BRepSweep/BRepSweep_Rotation.cxx @@ -201,14 +201,7 @@ TopoDS_Shape BRepSweep_Rotation::MakeEmptyDirectingEdge Handle(Geom_Circle) GC = new Geom_Circle(Axis,O.Distance(P)); Standard_Real tol = BRep_Tool::Tolerance(TopoDS::Vertex(aGenV)); myBuilder.Builder().MakeEdge(E, GC, tol); - - gp_Pnt PLast = GC->Value(myAng); - if(PLast.SquareDistance(P) > tol*tol) E.Closed(Standard_False); - } - - - return E; } diff --git a/src/BRepTools/BRepTools_ReShape.cxx b/src/BRepTools/BRepTools_ReShape.cxx index 77fadbad9b..3ca3db4e1c 100644 --- a/src/BRepTools/BRepTools_ReShape.cxx +++ b/src/BRepTools/BRepTools_ReShape.cxx @@ -375,10 +375,7 @@ TopoDS_Shape BRepTools_ReShape::Apply (const TopoDS_Shape& shape, if ( (modif < 0 && buildmode < 2) || (modif == 0 && buildmode < 1) ) return C; else - { - S.Closed (BRep_Tool::IsClosed (S)); return S; - } } if (st == TopAbs_SHELL) { @@ -542,17 +539,17 @@ TopoDS_Shape BRepTools_ReShape::Apply (const TopoDS_Shape& shape, //BRepTools_Edge sbe; CopyRanges ( TopoDS::Edge ( result ), TopoDS::Edge ( shape ),0,1 ); } - - if (st == TopAbs_FACE) { + else if (st == TopAbs_FACE) { TopoDS_Face face = TopoDS::Face ( shape ); if( BRep_Tool::NaturalRestriction( face ) ) { BRep_Builder aB; aB.NaturalRestriction( TopoDS::Face ( result ), Standard_True ); } } + else if (st == TopAbs_WIRE || st == TopAbs_SHELL) + result.Closed (BRep_Tool::IsClosed (result)); result.Orientation(orien); - result.Closed (BRep_Tool::IsClosed (result)); myStatus = locStatus; Replace ( shape, result ); diff --git a/src/ChFi3d/ChFi3d_Builder_1.cxx b/src/ChFi3d/ChFi3d_Builder_1.cxx index 376b1390a0..378d078f66 100644 --- a/src/ChFi3d/ChFi3d_Builder_1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_1.cxx @@ -547,9 +547,7 @@ void ChFi3d_Builder::PerformExtremity (const Handle(ChFiDS_Spine)& Spine) Ec = TopoDS::Edge(It.Value()); Standard_Boolean bonedge = !BRep_Tool::Degenerated(Ec); if(bonedge){ - TopoDS_Vertex v1,v2; - TopExp::Vertices(Ec,v1,v2); - Standard_Boolean eclosed = v1.IsSame(v2); + Standard_Boolean eclosed = BRep_Tool::IsClosed(Ec); Standard_Integer nboc = 0; for(j = 0; j <= i && bonedge; j++){ if(!eclosed) bonedge = !Ec.IsSame(E[j]); diff --git a/src/IGESToBRep/IGESToBRep_BRepEntity.cxx b/src/IGESToBRep/IGESToBRep_BRepEntity.cxx index 5b86bffd2b..1fe2ad4685 100644 --- a/src/IGESToBRep/IGESToBRep_BRepEntity.cxx +++ b/src/IGESToBRep/IGESToBRep_BRepEntity.cxx @@ -268,7 +268,7 @@ TopoDS_Shape IGESToBRep_BRepEntity::TransferEdge Standard_Real dist2f = p2.Distance ( pf ); Standard_Real dist1l = p1.Distance ( pl ); Standard_Real dist2l = p2.Distance ( pl ); - if ( E.Closed() || dist1f + dist2l <= dist1l + dist2f ) { + if ( V1.IsSame(V2) || dist1f + dist2l <= dist1l + dist2f + Precision::Confusion() ) { //:77 if (BRepTools::Compare(V1, Vf)) //the part 'else' only if, in fact, edge should be reversed V1.Orientation(TopAbs_FORWARD); B.Add(E,V1); diff --git a/src/LocOpe/LocOpe_SplitShape.cxx b/src/LocOpe/LocOpe_SplitShape.cxx index aac49a456a..721792410a 100644 --- a/src/LocOpe/LocOpe_SplitShape.cxx +++ b/src/LocOpe/LocOpe_SplitShape.cxx @@ -1233,7 +1233,9 @@ Standard_Boolean LocOpe_SplitShape::Rebuild(const TopoDS_Shape& S) B.Add(result,itr.Value().Oriented(orient)); } } - result.Closed (BRep_Tool::IsClosed(result)); + // Assign "Closed" flag for Wires and Shells only + if (result.ShapeType() == TopAbs_WIRE || result.ShapeType() == TopAbs_SHELL) + result.Closed (BRep_Tool::IsClosed(result)); myMap(S).Append(result); } else { diff --git a/src/ShapeBuild/ShapeBuild_ReShape.cxx b/src/ShapeBuild/ShapeBuild_ReShape.cxx index a82f68297f..d874d5bc16 100644 --- a/src/ShapeBuild/ShapeBuild_ReShape.cxx +++ b/src/ShapeBuild/ShapeBuild_ReShape.cxx @@ -124,8 +124,9 @@ TopoDS_Shape ShapeBuild_ReShape::Apply (const TopoDS_Shape& shape, ShapeBuild_Edge sbe; sbe.CopyRanges ( TopoDS::Edge ( result ), TopoDS::Edge ( shape )); } + else if (st == TopAbs_WIRE || st == TopAbs_SHELL) + result.Closed (BRep_Tool::IsClosed (result)); result.Orientation(orient); - result.Closed (BRep_Tool::IsClosed (result)); myStatus = locStatus; Replace ( shape, result ); diff --git a/src/ShapeFix/ShapeFix_Edge.cxx b/src/ShapeFix/ShapeFix_Edge.cxx index 231a2057cb..a6e4b044de 100644 --- a/src/ShapeFix/ShapeFix_Edge.cxx +++ b/src/ShapeFix/ShapeFix_Edge.cxx @@ -314,41 +314,6 @@ static Handle(Geom2d_Curve) TranslatePCurve (const Handle(Geom_Surface)& aSurf, return aC2d; } -//======================================================================= -//static : Range3d -//purpose : contournement du Range de BRep_Builder pour ne pas affecter -// les ranges des pcurves. -//======================================================================= - -static void Range3d (const TopoDS_Edge& E, - const Standard_Real First, const Standard_Real Last, - const Standard_Real myPrecision) -{ - // set the range to all the representations - const Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*) &E.TShape()); - - BRep_ListOfCurveRepresentation& lcr = TE->ChangeCurves(); - BRep_ListIteratorOfListOfCurveRepresentation itcr(lcr); - Handle(BRep_GCurve) GC; - - while (itcr.More()) { - GC = Handle(BRep_GCurve)::DownCast(itcr.Value()); - if (!GC.IsNull()) { - if (GC->IsCurve3D()) { - GC->SetRange(First,Last); - // Set the closedness flag to the correct value. - Handle(Geom_Curve) C = GC->Curve3D(); - if ( !C.IsNull() ) { - Standard_Boolean closed = C->Value(First).IsEqual(C->Value(Last),myPrecision); - TE->Closed(closed); - } - } - } - itcr.Next(); - } - - TE->Modified(Standard_True); -} //======================================================================= //function : SameRange (Temp) //purpose : @@ -585,7 +550,7 @@ Standard_Boolean ShapeFix_Edge::FixAddPCurve (const TopoDS_Edge& edge, Standard_Real G3dCFirst = c3d->FirstParameter(); Standard_Real G3dCLast = c3d->LastParameter(); B.UpdateEdge(edge, c3d, 0.); - Range3d(edge, G3dCFirst, G3dCLast, 0.); + B.Range(edge, G3dCFirst, G3dCLast, Standard_True); } } // end try catch(Standard_Failure) { diff --git a/src/ShapeFix/ShapeFix_Solid.cxx b/src/ShapeFix/ShapeFix_Solid.cxx index bbe3110d35..7d14865161 100644 --- a/src/ShapeFix/ShapeFix_Solid.cxx +++ b/src/ShapeFix/ShapeFix_Solid.cxx @@ -432,18 +432,16 @@ Standard_Boolean ShapeFix_Solid::Perform(const Handle(Message_ProgressIndicator) } if(isClosed || myCreateOpenSolidMode) { - if(BRep_Tool::IsClosed(tmpShape)) { - TopoDS_Iterator itersh(tmpShape); - TopoDS_Shell aShell; - if(itersh.More() && itersh.Value().ShapeType() == TopAbs_SHELL) - aShell = TopoDS::Shell(itersh.Value()); - if(!aShell.IsNull()) { - TopoDS_Solid aSol = SolidFromShell(aShell); - if(ShapeExtend::DecodeStatus(myStatus,ShapeExtend_DONE2)) { - SendWarning (Message_Msg ("FixAdvSolid.FixOrientation.MSG20"));// Orientaion of shell was corrected. - Context()->Replace(tmpShape,aSol); - tmpShape = aSol; - } + TopoDS_Iterator itersh(tmpShape); + TopoDS_Shell aShell; + if(itersh.More() && itersh.Value().ShapeType() == TopAbs_SHELL) + aShell = TopoDS::Shell(itersh.Value()); + if(!aShell.IsNull()) { + TopoDS_Solid aSol = SolidFromShell(aShell); + if(ShapeExtend::DecodeStatus(myStatus,ShapeExtend_DONE2)) { + SendWarning (Message_Msg ("FixAdvSolid.FixOrientation.MSG20"));// Orientaion of shell was corrected. + Context()->Replace(tmpShape,aSol); + tmpShape = aSol; } } mySolid = TopoDS::Solid(tmpShape); diff --git a/src/ShapeProcess/ShapeProcess_ShapeContext.cxx b/src/ShapeProcess/ShapeProcess_ShapeContext.cxx index 0fa6f719c2..51007d2286 100644 --- a/src/ShapeProcess/ShapeProcess_ShapeContext.cxx +++ b/src/ShapeProcess/ShapeProcess_ShapeContext.cxx @@ -212,7 +212,8 @@ static void RecModif (const TopoDS_Shape &S, } if ( modif ) { - result.Closed (BRep_Tool::IsClosed (result)); + if (result.ShapeType() == TopAbs_WIRE || result.ShapeType() == TopAbs_SHELL) + result.Closed (BRep_Tool::IsClosed (result)); res = result; } } diff --git a/src/ShapeUpgrade/ShapeUpgrade_FaceDivideArea.cxx b/src/ShapeUpgrade/ShapeUpgrade_FaceDivideArea.cxx index 12ea362a5c..1b9fb6c4be 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_FaceDivideArea.cxx +++ b/src/ShapeUpgrade/ShapeUpgrade_FaceDivideArea.cxx @@ -97,7 +97,8 @@ ShapeUpgrade_FaceDivideArea::ShapeUpgrade_FaceDivideArea(const TopoDS_Face& F) } if(isModified) { - aCopyRes.Closed (BRep_Tool::IsClosed (aCopyRes)); + if (aCopyRes.ShapeType() == TopAbs_WIRE || aCopyRes.ShapeType() == TopAbs_SHELL) + aCopyRes.Closed (BRep_Tool::IsClosed (aCopyRes)); Context()->Replace(aResult,aCopyRes); } myStatus |= aStatus; diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1.cxx index c2ddae9fdc..9f3698f2ef 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1.cxx @@ -1795,7 +1795,7 @@ Standard_Integer TopOpeBRepBuild_Builder1::IsSame2d (const TopTools_SequenceOfSh if (!(aBAS.IsUPeriodic() || aBAS.IsVPeriodic())) return 1; //we process here only fully closed edges (Vf == Vl) - if(!anEdgeObj.Closed() || !anEdgeTool.Closed()) + if(!BRep_Tool::IsClosed(anEdgeObj) || !BRep_Tool::IsClosed(anEdgeTool)) return 1; Standard_Real f = 0., l = 0., tolpc = 0. , diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_1.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_1.cxx index bf0d357d4e..b4cb1b69d5 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_1.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_1.cxx @@ -553,8 +553,6 @@ void TopOpeBRepBuild_Builder1::Destroy() Vl = TopoDS::Vertex(myDataStructure->Shape(iref)); Vl.Orientation(TopAbs_REVERSED); } - Standard_Boolean bitclosed = Vf.IsSame(Vl); - aNewEdge.Closed(bitclosed); myBuildTool.AddEdgeVertex (aNewEdge, Vf); myBuildTool.Parameter (aNewEdge, Vf, ParF); @@ -841,9 +839,6 @@ void TopOpeBRepBuild_Builder1::Destroy() // Make new edge from EdgeF TopoDS_Edge aNewEdge; myBuildTool.CopyEdge (EdgeF, aNewEdge); - - Standard_Boolean bitclosed = aV1.IsSame(aV2); - aNewEdge.Closed(bitclosed); myBuildTool.AddEdgeVertex (aNewEdge, aV1); myBuildTool.Parameter (aNewEdge, aV1, aPar1); diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_2.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_2.cxx index 6eb13c1a2e..086b93b6d5 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_2.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_Builder1_2.cxx @@ -152,7 +152,6 @@ Standard_Integer TopOpeBRepBuild_Builder1::CorrectResult2d(TopoDS_Shape& aResult aShell.Closed (BRep_Tool::IsClosed(aShell)); BB.Add (aSolid, aShell); } - aSolid.Closed (BRep_Tool::IsClosed(aSolid)); aResult=aSolid; //update section curves diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_FaceBuilder.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_FaceBuilder.cxx index c4d86d3494..64d2070c67 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_FaceBuilder.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_FaceBuilder.cxx @@ -145,7 +145,7 @@ Standard_Integer FUN_AnalyzemapVon1E(const TopTools_IndexedDataMapOfShapeShape& } else if (nV == 1) { const TopoDS_Shape& E = mapVon1E.FindFromIndex(1); - Standard_Boolean Eclosed = E.Closed(); + Standard_Boolean Eclosed = BRep_Tool::IsClosed(E); Standard_Boolean dgE = BRep_Tool::Degenerated(TopoDS::Edge(E)); if (dgE) res = ISVERTEX; else if (Eclosed) res = CLOSEDW; @@ -319,7 +319,7 @@ void TopOpeBRepBuild_FaceBuilder::DetectUnclosedWire(TopTools_IndexedDataMapOfSh { const TopoDS_Edge &E = TopoDS::Edge (itE.Value()); Standard_Integer I = myBlockBuilder.Element(E); - if (!E.Closed() && myBlockBuilder.ElementIsValid(I)) + if (!BRep_Tool::IsClosed(E) && myBlockBuilder.ElementIsValid(I)) { TopoDS_Vertex Vf,Vl; TopExp::Vertices (E, Vf, Vl); diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_makeedges.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_makeedges.cxx index 58ad7d8474..2a963cc45e 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_makeedges.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_makeedges.cxx @@ -150,11 +150,6 @@ void TopOpeBRepBuild_Builder::GEDBUMakeEdges } // EDBUloop.InitVertex : on vertices of new edge newEdge Standard_Boolean addedge = (nVF == 1 && nVR == 1); - Standard_Boolean bitclosed = Standard_False; - if (nVF == 1 && nVR == 1) { - bitclosed = VF.IsSame(VR); - newEdge.Closed(bitclosed); - } if (addedge) { if (tosplit) { TopTools_ListOfShape loe; Standard_Boolean ok = TopOpeBRepTool_TOOL::SplitE(TopoDS::Edge(newEdge),loe); diff --git a/src/TopoDS/TopoDS_TShape.cdl b/src/TopoDS/TopoDS_TShape.cdl index b177a6b629..391b16197f 100644 --- a/src/TopoDS/TopoDS_TShape.cdl +++ b/src/TopoDS/TopoDS_TShape.cdl @@ -34,7 +34,7 @@ deferred class TShape from TopoDS inherits TShared from MMgt -- - Modified : Has been modified. -- - Checked : Has been checked. -- - Orientable : Can be oriented. - -- - Closed : Is closed. + -- - Closed : Is closed (note that only Wires and Shells may be closed). -- - Infinite : Is infinite. -- - Convex : Is convex. -- diff --git a/tests/bugs/moddata_3/bug25202_1 b/tests/bugs/moddata_3/bug25202_1 index 7acf0ece41..eaf623bc4a 100755 --- a/tests/bugs/moddata_3/bug25202_1 +++ b/tests/bugs/moddata_3/bug25202_1 @@ -24,7 +24,7 @@ explode b f OCC25202 result b 1 ff1 3 ff2 set info [whatis result] -if { [regexp {Closed} ${info}] } { +if { [regexp {Closed} ${info}] != 1 } { puts "OK : value of IsClosed flag is correct" } else { puts "Error : value of IsClosed flag is not correct" diff --git a/tests/bugs/moddata_3/bug25202_3 b/tests/bugs/moddata_3/bug25202_3 index ba1cc564ab..13c6ad3d24 100755 --- a/tests/bugs/moddata_3/bug25202_3 +++ b/tests/bugs/moddata_3/bug25202_3 @@ -12,7 +12,7 @@ mkface ff pp prism result ff 0 0 20 set info [whatis result] -if { [regexp {Closed} ${info}] } { +if { [regexp {Closed} ${info}] != 1 } { puts "OK : value of IsClosed flag is correct" } else { puts "Error : value of IsClosed flag is not correct" diff --git a/tests/bugs/moddata_3/bug25202_4 b/tests/bugs/moddata_3/bug25202_4 index 84ff55105e..25caf8894f 100755 --- a/tests/bugs/moddata_3/bug25202_4 +++ b/tests/bugs/moddata_3/bug25202_4 @@ -13,7 +13,7 @@ mkplane ff ww revol result ff 0 0 0 1 0 0 90 set info [whatis result] -if { [regexp {Closed} ${info}] } { +if { [regexp {Closed} ${info}] != 1 } { puts "OK : value of IsClosed flag is correct" } else { puts "Error : value of IsClosed flag is not correct"