diff --git a/src/BRepOffset/BRepOffset_Error.hxx b/src/BRepOffset/BRepOffset_Error.hxx index 89621eda86..447eec83ad 100644 --- a/src/BRepOffset/BRepOffset_Error.hxx +++ b/src/BRepOffset/BRepOffset_Error.hxx @@ -21,11 +21,11 @@ enum BRepOffset_Error { BRepOffset_NoError, -BRepOffset_OffsetSurfaceFailed, -BRepOffset_UnCorrectClosingFace, -BRepOffset_ExtentFaceFailed, -BRepOffset_RadiusEqualOffset, -BRepOffset_UnknownError +BRepOffset_UnknownError, +BRepOffset_BadNormalsOnGeometry, +BRepOffset_C0Geometry, +BRepOffset_NullOffset, +BRepOffset_NotConnectedShell }; #endif // _BRepOffset_Error_HeaderFile diff --git a/src/BRepOffset/BRepOffset_MakeOffset.cxx b/src/BRepOffset/BRepOffset_MakeOffset.cxx index b08afacf4f..15b64e83f2 100644 --- a/src/BRepOffset/BRepOffset_MakeOffset.cxx +++ b/src/BRepOffset/BRepOffset_MakeOffset.cxx @@ -111,6 +111,7 @@ #include <TopTools_SequenceOfShape.hxx> #include <BRepBuilderAPI_Sewing.hxx> #include <Geom_Line.hxx> +#include <NCollection_Vector.hxx> #include <stdio.h> // POP for NT @@ -235,6 +236,11 @@ static void DEBVerticesControl (const TopTools_IndexedMapOfShape& NewEdges, } #endif +static BRepOffset_Error checkSinglePoint(const Standard_Real theUParam, + const Standard_Real theVParam, + const Handle(Geom_Surface)& theSurf, + const NCollection_Vector<gp_Pnt>& theBadPoints); + //--------------------------------------------------------------------- static void UpdateTolerance ( TopoDS_Shape& myShape, const TopTools_IndexedMapOfShape& myFaces); @@ -679,28 +685,11 @@ void BRepOffset_MakeOffset::MakeOffsetShape() RemoveCorks (myShape,myFaces); } - if (! IsConnectedShell(myShape)) - Standard_ConstructionError::Raise("BRepOffset_MakeOffset : Incorrect set of faces to remove, the remaining shell is not connected"); - - if (Abs(myOffset) <= myTol) + if (!CheckInputData()) { - // Check for face with non-null offset value. - Standard_Boolean isFound = Standard_False; - TopTools_DataMapIteratorOfDataMapOfShapeReal anIter(myFaceOffset); - for( ; anIter.More(); anIter.Next()) - { - if (Abs(anIter.Value()) > myTol) - { - isFound = Standard_True; - break; - } - } - - if (!isFound) - { - // No face with non-null offset found. - return; - } + // There is error in input data. + // Check Error() method. + return; } TopAbs_State Side = TopAbs_IN; @@ -814,11 +803,18 @@ void BRepOffset_MakeOffset::MakeThickSolid() //-------------------------------------------------------------- MakeOffsetShape (); + if (!myDone) + { + // Save return code and myDone state. + return; + } + //-------------------------------------------------------------------- // Construction of a solid with the initial shell, parallel shell // limited by caps. //-------------------------------------------------------------------- - if (!myFaces.IsEmpty()) { + if (!myFaces.IsEmpty()) + { TopoDS_Solid Res; TopExp_Explorer exp; BRep_Builder B; @@ -827,7 +823,8 @@ void BRepOffset_MakeOffset::MakeThickSolid() B.MakeSolid(Res); BRepTools_Quilt Glue; - for (exp.Init(myShape,TopAbs_FACE); exp.More(); exp.Next()) { + for (exp.Init(myShape,TopAbs_FACE); exp.More(); exp.Next()) + { NbF++; Glue.Add (exp.Current()); } @@ -856,11 +853,13 @@ void BRepOffset_MakeOffset::MakeThickSolid() if (YaResult == 0) { myDone = Standard_False; + myError = BRepOffset_UnknownError; return; } myOffsetShape = Glue.Shells(); - for (exp.Init(myOffsetShape,TopAbs_SHELL); exp.More(); exp.Next()) { + for (exp.Init(myOffsetShape,TopAbs_SHELL); exp.More(); exp.Next()) + { B.Add(Res,exp.Current()); } Res.Closed(Standard_True); @@ -868,18 +867,20 @@ void BRepOffset_MakeOffset::MakeThickSolid() // Test of Validity of the result of thick Solid // more face than the initial solid. - Standard_Integer NbOF = 0; - for (exp.Init(myOffsetShape,TopAbs_FACE);exp.More(); exp.Next()) { + for (exp.Init(myOffsetShape,TopAbs_FACE);exp.More(); exp.Next()) + { NbOF++; } - if (NbOF <= NbF) { + if (NbOF <= NbF) + { myDone = Standard_False; + myError = BRepOffset_UnknownError; return; } } - if (myOffset > 0 ) myOffsetShape.Reverse(); + if (myOffset > 0 ) myOffsetShape.Reverse(); myDone = Standard_True; } @@ -3466,3 +3467,172 @@ void CorrectSolid(TopoDS_Solid& theSol, TopTools_ListOfShape& theSolList) } theSol = aNewSol; } + +//======================================================================= +//function : CheckInputData +//purpose : Check input data for possiblity of offset perform. +//======================================================================= +Standard_Boolean BRepOffset_MakeOffset::CheckInputData() +{ + // Set initial error state. + myError = BRepOffset_NoError; + TopoDS_Shape aTmpShape; + myBadShape = aTmpShape; + + // Non-null offset. + if (Abs(myOffset) <= myTol) + { + Standard_Boolean isFound = Standard_False; + TopTools_DataMapIteratorOfDataMapOfShapeReal anIter(myFaceOffset); + for( ; anIter.More(); anIter.Next()) + { + if (Abs(anIter.Value()) > myTol) + { + isFound = Standard_True; + break; + } + } + + if (!isFound) + { + // No face with non-null offset found. + myError = BRepOffset_NullOffset; + return Standard_False; + } + } + + // Connectivity of input shape. + if (!IsConnectedShell(myShape)) + { + myError = BRepOffset_NotConnectedShell; + return Standard_False; + } + + // Normals check and continuity check. + const Standard_Integer aPntPerDim = 20; // 21 points on each dimension. + Standard_Real aUmin, aUmax, aVmin, aVmax; + TopExp_Explorer anExpSF(myShape, TopAbs_FACE); + NCollection_Map<Handle(TopoDS_TShape)> aPresenceMap; + TopLoc_Location L; + gp_Pnt2d aPnt2d; + for( ; anExpSF.More(); anExpSF.Next()) + { + const TopoDS_Face& aF = TopoDS::Face(anExpSF.Current()); + + if (aPresenceMap.Contains(aF.TShape())) + { + // Not perform computations with partner shapes, + // since they are contain same geometry. + continue; + } + aPresenceMap.Add(aF.TShape()); + + const Handle(Geom_Surface)& aSurf = BRep_Tool::Surface(aF, L); + BRepTools::UVBounds(aF, aUmin, aUmax, aVmin, aVmax); + + // Continuity check. + if (aSurf->Continuity() == GeomAbs_C0) + { + myError = BRepOffset_C0Geometry; + return Standard_False; + } + + // Get degenerated points, to avoid check them. + NCollection_Vector<gp_Pnt> aBad3dPnts; + TopExp_Explorer anExpFE(aF, TopAbs_EDGE); + for( ; anExpFE.More(); anExpFE.Next()) + { + const TopoDS_Edge &aE = TopoDS::Edge(anExpFE.Current()); + if (BRep_Tool::Degenerated(aE)) + { + aBad3dPnts.Append(BRep_Tool::Pnt((TopExp::FirstVertex(aE)))); + } + } + + // Geometry grid check. + for(Standard_Integer i = 0; i <= aPntPerDim; i++) + { + Standard_Real aUParam = aUmin + (aUmax - aUmin) * i / aPntPerDim; + for(Standard_Integer j = 0; j <= aPntPerDim; j++) + { + Standard_Real aVParam = aVmin + (aVmax - aVmin) * j / aPntPerDim; + + myError = checkSinglePoint(aUParam, aVParam, aSurf, aBad3dPnts); + if (myError != BRepOffset_NoError) + return Standard_False; + } + } + + // Vertex list check. + TopExp_Explorer anExpFV(aF, TopAbs_VERTEX); + for( ; anExpFV.More(); anExpFV.Next()) + { + const TopoDS_Vertex &aV = TopoDS::Vertex(anExpFV.Current()); + aPnt2d = BRep_Tool::Parameters(aV, aF); + + myError = checkSinglePoint(aPnt2d.X(), aPnt2d.Y(), aSurf, aBad3dPnts); + if (myError != BRepOffset_NoError) + return Standard_False; + } + } + + return Standard_True; +} + + +//======================================================================= +//function : GetBadShape +//purpose : Get shape where problems detected. +//======================================================================= +const TopoDS_Shape& BRepOffset_MakeOffset::GetBadShape() const +{ + return myBadShape; +} + + +//======================================================================= +//function : checkSinglePoint +//purpose : Check single point on surface for bad normals +//======================================================================= +BRepOffset_Error checkSinglePoint(const Standard_Real theUParam, + const Standard_Real theVParam, + const Handle(Geom_Surface)& theSurf, + const NCollection_Vector<gp_Pnt>& theBadPoints) +{ + gp_Pnt aPnt; + gp_Vec aD1U, aD1V; + theSurf->D1(theUParam, theVParam, aPnt, aD1U, aD1V); + + if (aD1U.SquareMagnitude() < Precision::SquareConfusion() || + aD1V.SquareMagnitude() < Precision::SquareConfusion() ) + { + Standard_Boolean isKnownBadPnt = Standard_False; + for(Standard_Integer anIdx = theBadPoints.Lower(); + anIdx <= theBadPoints.Upper(); + ++anIdx) + { + if (aPnt.SquareDistance(theBadPoints(anIdx)) < Precision::SquareConfusion()) + { + isKnownBadPnt = Standard_True; + break; + } + } // for(Standard_Integer anIdx = theBadPoints.Lower(); + + if (!isKnownBadPnt) + { + return BRepOffset_BadNormalsOnGeometry; + } + else + { + return BRepOffset_NoError; + } + } // if (aD1U.SquareMagnitude() < Precision::SquareConfusion() || + + if (aD1U.IsParallel(aD1V, Precision::Confusion())) + { + // Isolines are collinear. + return BRepOffset_BadNormalsOnGeometry; + } + + return BRepOffset_NoError; +} diff --git a/src/BRepOffset/BRepOffset_MakeOffset.hxx b/src/BRepOffset/BRepOffset_MakeOffset.hxx index ece1577e0d..c194998935 100644 --- a/src/BRepOffset/BRepOffset_MakeOffset.hxx +++ b/src/BRepOffset/BRepOffset_MakeOffset.hxx @@ -76,7 +76,7 @@ public: Standard_EXPORT const TopoDS_Shape& Shape() const; - //! returns information if IsDone() = FALSE. + //! returns information about offset state. Standard_EXPORT BRepOffset_Error Error() const; //! Returns <Image> containing links between initials @@ -93,6 +93,18 @@ public: //! Returns the list of closing faces stores by AddFace Standard_EXPORT const TopTools_IndexedMapOfShape& ClosingFaces() const; + //! Makes pre analysis of possibility offset perform. Use method Error() to get more information. + //! Finds first error. List of checks: + //! 1) Check for existence object with non-null offset. + //! 2) Check for connectivity in offset shell. + //! 3) Check continuity of input surfaces. + //! 4) Check for normals existence on grid. + //! @return True if possible make computations and false otherwise. + Standard_EXPORT Standard_Boolean CheckInputData(); + + //! Return bad shape, which obtained in CheckInputData. + Standard_EXPORT const TopoDS_Shape& GetBadShape() const; + @@ -162,6 +174,7 @@ private: BRepOffset_Error myError; BRepOffset_MakeLoops myMakeLoops; Standard_Boolean myIsPerformSewing; // Handle bad walls in thicksolid mode. + TopoDS_Shape myBadShape; }; diff --git a/src/BRepTest/BRepTest_FeatureCommands.cxx b/src/BRepTest/BRepTest_FeatureCommands.cxx index 97acc216d0..bca729d9fb 100644 --- a/src/BRepTest/BRepTest_FeatureCommands.cxx +++ b/src/BRepTest/BRepTest_FeatureCommands.cxx @@ -340,7 +340,48 @@ static Standard_Integer CONTROL(Draw_Interpretor& theCommands, } return 0; } - + +//======================================================================= +//function : reportOffsetState +//purpose : Print state of offset operation by error code. +//======================================================================= +static void reportOffsetState(Draw_Interpretor& theCommands, + const BRepOffset_Error theErrorCode) +{ + switch(theErrorCode) + { + case BRepOffset_NoError: + { + theCommands << "OK. Offset performed succesfully."; + break; + } + case BRepOffset_BadNormalsOnGeometry: + { + theCommands << "ERROR. Degenerated normal on input data."; + break; + } + case BRepOffset_C0Geometry: + { + theCommands << "ERROR. C0 continuity of input data."; + break; + } + case BRepOffset_NullOffset: + { + theCommands << "ERROR. Null offset of all faces."; + break; + } + case BRepOffset_NotConnectedShell: + { + theCommands << "ERROR. Incorrect set of faces to remove, the remaining shell is not connected."; + break; + } + default: + { + theCommands << "ERROR. offsetperform operation not done."; + break; + } + } +} //======================================================================= //function : PRW @@ -801,13 +842,9 @@ static Standard_Integer SPLS(Draw_Interpretor& , //function : thickshell //purpose : //======================================================================= - -Standard_Integer thickshell(Draw_Interpretor& , - Standard_Integer n, const char** a) +Standard_Integer thickshell(Draw_Interpretor& theCommands, + Standard_Integer n, const char** a) { - - //OSD_Chronometer Clock; - if ( n < 4) return 1; TopoDS_Shape S = DBRep::Get(a[2]); if (S.IsNull()) return 1; @@ -816,13 +853,13 @@ Standard_Integer thickshell(Draw_Interpretor& , GeomAbs_JoinType JT= GeomAbs_Arc; if (n > 4) - { - if (!strcmp(a[4],"i")) - JT = GeomAbs_Intersection; - if (!strcmp(a[4],"t")) - JT = GeomAbs_Tangent; - } - + { + if (!strcmp(a[4],"i")) + JT = GeomAbs_Intersection; + if (!strcmp(a[4],"t")) + JT = GeomAbs_Tangent; + } + Standard_Boolean Inter = Standard_False; //Standard_True; Standard_Real Tol = Precision::Confusion(); if (n > 5) @@ -831,15 +868,12 @@ Standard_Integer thickshell(Draw_Interpretor& , BRepOffset_MakeOffset B; B.Initialize(S,Of,Tol,BRepOffset_Skin,Inter,0,JT, Standard_True); -// Clock.Start(); - B.MakeOffsetShape(); - //B.MakeThickSolid (); -// Clock.Show(); + const BRepOffset_Error aRetCode = B.Error(); + reportOffsetState(theCommands, aRetCode); DBRep::Set(a[1],B.Shape()); - return 0; } @@ -848,12 +882,9 @@ Standard_Integer thickshell(Draw_Interpretor& , //purpose : //======================================================================= -Standard_Integer offsetshape(Draw_Interpretor& , - Standard_Integer n, const char** a) +Standard_Integer offsetshape(Draw_Interpretor& theCommands, + Standard_Integer n, const char** a) { - - //OSD_Chronometer Clock; - if ( n < 4) return 1; TopoDS_Shape S = DBRep::Get(a[2]); if (S.IsNull()) return 1; @@ -861,7 +892,8 @@ Standard_Integer offsetshape(Draw_Interpretor& , Standard_Real Of = Draw::Atof(a[3]); Standard_Boolean Inter = (!strcmp(a[0],"offsetcompshape")); GeomAbs_JoinType JT= GeomAbs_Arc; - if (!strcmp(a[0],"offsetinter")) { + if (!strcmp(a[0],"offsetinter")) + { JT = GeomAbs_Intersection; Inter = Standard_True; } @@ -869,9 +901,11 @@ Standard_Integer offsetshape(Draw_Interpretor& , BRepOffset_MakeOffset B; Standard_Integer IB = 4; Standard_Real Tol = Precision::Confusion(); - if (n > 4) { + if (n > 4) + { TopoDS_Shape SF = DBRep::Get(a[4],TopAbs_FACE); - if (SF.IsNull()) { + if (SF.IsNull()) + { IB = 5; Tol = Draw::Atof(a[4]); } @@ -882,19 +916,21 @@ Standard_Integer offsetshape(Draw_Interpretor& , //---------------------------------------- Standard_Boolean YaBouchon = Standard_False; - for (Standard_Integer i = IB ; i < n; i++) { + for (Standard_Integer i = IB ; i < n; i++) + { TopoDS_Shape SF = DBRep::Get(a[i],TopAbs_FACE); - if (!SF.IsNull()) { + if (!SF.IsNull()) + { YaBouchon = Standard_True; B.AddFace(TopoDS::Face(SF)); } } -// Clock.Start(); - if (!YaBouchon) B.MakeOffsetShape(); else B.MakeThickSolid (); -// Clock.Show(); + + const BRepOffset_Error aRetCode = B.Error(); + reportOffsetState(theCommands, aRetCode); DBRep::Set(a[1],B.Shape()); @@ -1031,8 +1067,8 @@ Standard_Integer offsetperform(Draw_Interpretor& theCommands, } else { - theCommands << "ERROR. offsetperform operation not done."; - return 1; + const BRepOffset_Error aRetCode = TheOffset.Error(); + reportOffsetState(theCommands, aRetCode); } return 0; diff --git a/tests/bugs/modalg_2/bug21261_15 b/tests/bugs/modalg_2/bug21261_15 index c52710dab7..998fdb19ac 100755 --- a/tests/bugs/modalg_2/bug21261_15 +++ b/tests/bugs/modalg_2/bug21261_15 @@ -1,5 +1,6 @@ -puts "TODO OCC25916 ALL: \\*\\* Exception" -puts "TODO OCC25916 ALL: An exception was caught" +puts "TODO OCC25916 ALL: ERROR. C0 continuity of input data." +puts "TODO OCC26556 ALL: result is not a topological shape!!!" +puts "TODO OCC26556 ALL: Error: object with name 'result' does not exist!" puts "TODO OCC25916 ALL: TEST INCOMPLETE" puts "========" puts "OCC21261" diff --git a/tests/bugs/modalg_2/bug21261_21 b/tests/bugs/modalg_2/bug21261_21 index 40f2e6134f..248dfeebd5 100755 --- a/tests/bugs/modalg_2/bug21261_21 +++ b/tests/bugs/modalg_2/bug21261_21 @@ -1,5 +1,6 @@ -puts "TODO OCC25916 ALL: \\*\\* Exception" -puts "TODO OCC25916 ALL: An exception was caught" +puts "TODO OCC25916 ALL: ERROR. Incorrect set of faces to remove, the remaining shell is not connected." +puts "TODO OCC26556 ALL: result is not a topological shape!!!" +puts "TODO OCC26556 ALL: Error: object with name 'result' does not exist!" puts "TODO OCC25916 ALL: TEST INCOMPLETE" puts "========" puts "OCC21261" diff --git a/tests/bugs/modalg_2/bug427_6 b/tests/bugs/modalg_2/bug427_6 index 45c0cb1986..cefcb919b9 100755 --- a/tests/bugs/modalg_2/bug427_6 +++ b/tests/bugs/modalg_2/bug427_6 @@ -1,4 +1,5 @@ puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done." +puts "TODO OCC23068 ALL: result is not a topological shape!!!" puts "TODO OCC23068 ALL: TEST INCOMPLETE" puts "========================" diff --git a/tests/bugs/modalg_2/bug5805_3 b/tests/bugs/modalg_2/bug5805_3 index 9acee07be6..f262fc146b 100755 --- a/tests/bugs/modalg_2/bug5805_3 +++ b/tests/bugs/modalg_2/bug5805_3 @@ -1,3 +1,5 @@ +puts "TODO OCC26556 ALL: ERROR. offsetperform operation not done." + puts "============" puts "OCC5805" puts "============" diff --git a/tests/bugs/modalg_2/bug5805_4 b/tests/bugs/modalg_2/bug5805_4 index 85d9963f07..731cff9d0f 100755 --- a/tests/bugs/modalg_2/bug5805_4 +++ b/tests/bugs/modalg_2/bug5805_4 @@ -1,5 +1,4 @@ puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC25925 ALL: Faulty OCC5805 : offsetshape is wrong" puts "TODO OCC25925 ALL: Tcl Exception:" puts "TODO OCC25925 ALL: TEST INCOMPLETE" diff --git a/tests/bugs/modalg_4/bug5806 b/tests/bugs/modalg_4/bug5806 index b4033a948b..eafe5fa7e3 100755 --- a/tests/bugs/modalg_4/bug5806 +++ b/tests/bugs/modalg_4/bug5806 @@ -1,3 +1,4 @@ +puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done." puts "============" puts "OCC5806" puts "============" diff --git a/tests/bugs/modalg_6/bug26556_1 b/tests/bugs/modalg_6/bug26556_1 new file mode 100644 index 0000000000..8fc715542c --- /dev/null +++ b/tests/bugs/modalg_6/bug26556_1 @@ -0,0 +1,18 @@ +puts "========" +puts "OCC26556" +puts "========" +puts "" +################################################## +# Infinite calculations of BRepOffset_MakeOffset +################################################## + +restore [locate_data_file OCC26556-004_extract_2015-01-C37_0216_res.brep] sh +offsetparameter 1e-7 p i +offsetload sh 300 +decho off +set bug_info [offsetperform r] +decho on + +if {$bug_info != "ERROR. Degenerated normal on input data."} { + puts "ERROR: OCC26556 is reproduced. Error message is absent." +} diff --git a/tests/bugs/modalg_6/bug26556_2 b/tests/bugs/modalg_6/bug26556_2 new file mode 100644 index 0000000000..ca9077a1ba --- /dev/null +++ b/tests/bugs/modalg_6/bug26556_2 @@ -0,0 +1,18 @@ +puts "========" +puts "OCC26556" +puts "========" +puts "" +################################################## +# Infinite calculations of BRepOffset_MakeOffset +################################################## + +restore [locate_data_file OCC26556-004_extract_2015-01-C37_0240_res.brep] sh +offsetparameter 1e-7 p i +offsetload sh 400 +decho off +set bug_info [offsetperform r] +decho on + +if {$bug_info != "ERROR. Degenerated normal on input data."} { + puts "ERROR: OCC26556 is reproduced. Error message is absent." +} diff --git a/tests/bugs/modalg_6/bug26556_3 b/tests/bugs/modalg_6/bug26556_3 new file mode 100644 index 0000000000..dd625dd130 --- /dev/null +++ b/tests/bugs/modalg_6/bug26556_3 @@ -0,0 +1,18 @@ +puts "========" +puts "OCC26556" +puts "========" +puts "" +################################################## +# Infinite calculations of BRepOffset_MakeOffset +################################################## + +restore [locate_data_file OCC26556-004_extract_2015-01-C37_0213_res.brep] sh +offsetparameter 1e-7 p i +offsetload sh 80 +decho off +set bug_info [offsetperform r] +decho on + +if {$bug_info != "ERROR. Degenerated normal on input data."} { + puts "ERROR: OCC26556 is reproduced. Error message is absent." +} diff --git a/tests/bugs/modalg_6/bug26556_4 b/tests/bugs/modalg_6/bug26556_4 new file mode 100644 index 0000000000..888a60abf7 --- /dev/null +++ b/tests/bugs/modalg_6/bug26556_4 @@ -0,0 +1,19 @@ +puts "========" +puts "OCC26556" +puts "========" +puts "" +################################################## +# Infinite calculations of BRepOffset_MakeOffset +################################################## + +restore [locate_data_file OCC26556-004_extract_2015-01-C37_0240_res.brep] sh +explode sh F +offsetparameter 1e-7 p i +offsetload sh_3 300 +decho off +set bug_info [offsetperform r] +decho on + +if {$bug_info != "ERROR. Degenerated normal on input data."} { + puts "ERROR: OCC26556 is reproduced. Error message is absent." +} diff --git a/tests/offset/compshape/A1 b/tests/offset/compshape/A1 index 1b38f68c0e..c451741766 100644 --- a/tests/offset/compshape/A1 +++ b/tests/offset/compshape/A1 @@ -1,6 +1,6 @@ -puts "TODO ?OCC23068 ALL: Error\\s*:\\s*The offset is not valid. The volume is" -puts "TODO ?OCC23068 ALL: result is not a topological shape" -puts "TODO ?OCC24156 ALL: TEST INCOMPLETE" +puts "TODO ?OCC23068 ALL: ERROR. offsetperform operation not done." +puts "TODO ?OCC23068 ALL: result is not a topological shape!!!" +puts "TODO ?OCC23068 ALL: TEST INCOMPLETE" ## ====================================== ## Grid : CCV002 diff --git a/tests/offset/compshape/A4 b/tests/offset/compshape/A4 index 77aece934c..f16e9e0081 100755 --- a/tests/offset/compshape/A4 +++ b/tests/offset/compshape/A4 @@ -4,11 +4,8 @@ ## Comment : From CV tests serie page 60 ## ====================================== -#puts "*" -#puts "TODO OCC22740 ALL: An exception was caught" -#puts "TODO OCC22740 ALL: \\*\\* Exception \\*\\*" -#puts "TODO OCC22740 ALL: Error : The offset cannot be built." puts "TODO OCC23524 ALL: Error : The offset is not valid" +puts "TODO ?OCC26556 ALL: ERROR. offsetperform operation not done." restore [locate_data_file CCV_2_d1_gsw.rle] s explode s F diff --git a/tests/offset/faces_type_a/A3 b/tests/offset/faces_type_a/A3 index 210e597154..91edd572a5 100644 --- a/tests/offset/faces_type_a/A3 +++ b/tests/offset/faces_type_a/A3 @@ -1,6 +1,6 @@ #old file ofcb19 puts "TODO CR25925 ALL: ERROR. offsetperform operation not done." -puts "TODO CR25925 ALL: TEST INCOMPLETE" +puts "TODO CR26556 ALL: Error : The offset cannot be built." restore [locate_data_file CHE_bb17.rle] s OFFSETSHAPE -0.04 {s_4 s_9 s_3 s_5 s_2 s_7 s_11} $calcul $type diff --git a/tests/offset/faces_type_a/A4 b/tests/offset/faces_type_a/A4 index fa94080530..518dea00c4 100644 --- a/tests/offset/faces_type_a/A4 +++ b/tests/offset/faces_type_a/A4 @@ -1,6 +1,6 @@ #old file ofcb23 puts "TODO CR25925 ALL: ERROR. offsetperform operation not done." -puts "TODO CR25925 ALL: TEST INCOMPLETE" +puts "TODO CR26556 ALL: Error : The offset cannot be built." restore [locate_data_file CHE_cc3.rle] s OFFSETSHAPE -0.01 {s_6} $calcul $type diff --git a/tests/offset/faces_type_a/A9 b/tests/offset/faces_type_a/A9 index 906605fc37..59e36394cd 100644 --- a/tests/offset/faces_type_a/A9 +++ b/tests/offset/faces_type_a/A9 @@ -1,6 +1,6 @@ #old file ofsb20 puts "TODO CR25925 ALL: ERROR. offsetperform operation not done." -puts "TODO CR25925 ALL: TEST INCOMPLETE" +puts "TODO CR26556 ALL: Error : The offset cannot be built." restore [locate_data_file CHE_bb20.rle] s OFFSETSHAPE -0.1 {s_4 s_7} $calcul $type diff --git a/tests/offset/faces_type_i/A9 b/tests/offset/faces_type_i/A9 index 3566dc61f2..c6d65c6945 100644 --- a/tests/offset/faces_type_i/A9 +++ b/tests/offset/faces_type_i/A9 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 5 0 12 90 trotate s 0 0 0 0 0 1 90 diff --git a/tests/offset/faces_type_i/B3 b/tests/offset/faces_type_i/B3 index 8e05374522..c8cbadd8fa 100644 --- a/tests/offset/faces_type_i/B3 +++ b/tests/offset/faces_type_i/B3 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 5 0 12 270 diff --git a/tests/offset/faces_type_i/B4 b/tests/offset/faces_type_i/B4 index 7654915669..5363f0cb80 100644 --- a/tests/offset/faces_type_i/B4 +++ b/tests/offset/faces_type_i/B4 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 5 0 12 270 diff --git a/tests/offset/faces_type_i/B5 b/tests/offset/faces_type_i/B5 index 9f8353d784..7d97464e41 100644 --- a/tests/offset/faces_type_i/B5 +++ b/tests/offset/faces_type_i/B5 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 5 0 12 270 diff --git a/tests/offset/faces_type_i/B6 b/tests/offset/faces_type_i/B6 index 89d3d8cd64..e9f27fdaf8 100644 --- a/tests/offset/faces_type_i/B6 +++ b/tests/offset/faces_type_i/B6 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 -90 60 90 trotate s 0 0 0 0 0 1 90 diff --git a/tests/offset/faces_type_i/C1 b/tests/offset/faces_type_i/C1 index 96d4e75191..752586087b 100644 --- a/tests/offset/faces_type_i/C1 +++ b/tests/offset/faces_type_i/C1 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 -90 60 270 diff --git a/tests/offset/faces_type_i/C2 b/tests/offset/faces_type_i/C2 index e0c5fa2095..7b9d0601e4 100644 --- a/tests/offset/faces_type_i/C2 +++ b/tests/offset/faces_type_i/C2 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 -90 60 270 diff --git a/tests/offset/faces_type_i/C3 b/tests/offset/faces_type_i/C3 index 8618d70c32..d5572a13fc 100644 --- a/tests/offset/faces_type_i/C3 +++ b/tests/offset/faces_type_i/C3 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 -90 60 270 diff --git a/tests/offset/faces_type_i/C7 b/tests/offset/faces_type_i/C7 index 7ecdbd8139..9f5d0d7f30 100644 --- a/tests/offset/faces_type_i/C7 +++ b/tests/offset/faces_type_i/C7 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 90 trotate s 0 0 0 0 0 1 90 diff --git a/tests/offset/faces_type_i/D1 b/tests/offset/faces_type_i/D1 index 338d87721b..9609133d05 100644 --- a/tests/offset/faces_type_i/D1 +++ b/tests/offset/faces_type_i/D1 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 270 diff --git a/tests/offset/faces_type_i/D2 b/tests/offset/faces_type_i/D2 index 5e7b6786b1..ff784b5f35 100644 --- a/tests/offset/faces_type_i/D2 +++ b/tests/offset/faces_type_i/D2 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 270 diff --git a/tests/offset/faces_type_i/D3 b/tests/offset/faces_type_i/D3 index f09583d38e..1545993117 100644 --- a/tests/offset/faces_type_i/D3 +++ b/tests/offset/faces_type_i/D3 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." psphere s 15 270 diff --git a/tests/offset/faces_type_i/E7 b/tests/offset/faces_type_i/E7 index 51943b2594..e57ede9a79 100755 --- a/tests/offset/faces_type_i/E7 +++ b/tests/offset/faces_type_i/E7 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/E8 b/tests/offset/faces_type_i/E8 index a061911737..2d4a927b15 100644 --- a/tests/offset/faces_type_i/E8 +++ b/tests/offset/faces_type_i/E8 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/E9 b/tests/offset/faces_type_i/E9 index 7332ff8b29..b2c36affeb 100644 --- a/tests/offset/faces_type_i/E9 +++ b/tests/offset/faces_type_i/E9 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/F1 b/tests/offset/faces_type_i/F1 index 453e5411fb..8fc7ae1ce1 100644 --- a/tests/offset/faces_type_i/F1 +++ b/tests/offset/faces_type_i/F1 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/F2 b/tests/offset/faces_type_i/F2 index 123ef2fb2d..6590cb9c16 100755 --- a/tests/offset/faces_type_i/F2 +++ b/tests/offset/faces_type_i/F2 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/F3 b/tests/offset/faces_type_i/F3 index b26f0c9747..e988509ebd 100644 --- a/tests/offset/faces_type_i/F3 +++ b/tests/offset/faces_type_i/F3 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." cpulimit 400 diff --git a/tests/offset/faces_type_i/F4 b/tests/offset/faces_type_i/F4 index a30edba4fd..66718bdab6 100644 --- a/tests/offset/faces_type_i/F4 +++ b/tests/offset/faces_type_i/F4 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ellipse w1 0 0 0 15 10 mkedge w1 w1 0 pi/2 diff --git a/tests/offset/faces_type_i/F5 b/tests/offset/faces_type_i/F5 index 9f6d43b98e..2bb88b021d 100644 --- a/tests/offset/faces_type_i/F5 +++ b/tests/offset/faces_type_i/F5 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." # 17.01.2010 cpulimit 600 diff --git a/tests/offset/faces_type_i/I5 b/tests/offset/faces_type_i/I5 index 4333bf9667..dc23b60e1f 100644 --- a/tests/offset/faces_type_i/I5 +++ b/tests/offset/faces_type_i/I5 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcylinder s 5 10 270 diff --git a/tests/offset/faces_type_i/J5 b/tests/offset/faces_type_i/J5 index 32af5783d3..8d4a62c7fb 100644 --- a/tests/offset/faces_type_i/J5 +++ b/tests/offset/faces_type_i/J5 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 9 4 15 270 diff --git a/tests/offset/faces_type_i/J7 b/tests/offset/faces_type_i/J7 index 13927555bd..d6dea78f92 100644 --- a/tests/offset/faces_type_i/J7 +++ b/tests/offset/faces_type_i/J7 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." pcone s 9 4 15 270 diff --git a/tests/offset/faces_type_i/K6 b/tests/offset/faces_type_i/K6 index dfc5677c11..e361f40f6d 100644 --- a/tests/offset/faces_type_i/K6 +++ b/tests/offset/faces_type_i/K6 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." ptorus s 10 10 0 45 270 diff --git a/tests/offset/faces_type_i/M6 b/tests/offset/faces_type_i/M6 index b03f64d19e..8e7c789065 100644 --- a/tests/offset/faces_type_i/M6 +++ b/tests/offset/faces_type_i/M6 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." circle w -20 0 0 20 mkedge w w 0 pi*2/5 diff --git a/tests/offset/faces_type_i/M8 b/tests/offset/faces_type_i/M8 index 5aeb496166..79a232c3d3 100644 --- a/tests/offset/faces_type_i/M8 +++ b/tests/offset/faces_type_i/M8 @@ -1,5 +1,5 @@ puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." circle w -20 0 0 20 mkedge w w 0 pi*2/5 diff --git a/tests/offset/faces_type_i/N1 b/tests/offset/faces_type_i/N1 index b3ac6ab829..2c2eee4620 100644 --- a/tests/offset/faces_type_i/N1 +++ b/tests/offset/faces_type_i/N1 @@ -2,7 +2,7 @@ puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*" puts "TODO OCC24156 MacOS: An exception was caught" puts "TODO OCC24156 MacOS: TEST INCOMPLETE" puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done." -puts "TODO OCC23748 ALL: TEST INCOMPLETE" +puts "TODO OCC26556 ALL: Error : The offset cannot be built." beziersurf c 3 2 \ 0 0 0 0 5 5 2 14 3 \ diff --git a/tests/offset/shape/A1 b/tests/offset/shape/A1 index 77f204a7e1..a85e2345f0 100644 --- a/tests/offset/shape/A1 +++ b/tests/offset/shape/A1 @@ -1,4 +1,5 @@ puts "TODO OCC23068 ALL: Error : The offset is not valid" +puts "TODO OCC26556 ALL: ERROR. offsetperform operation not done." # Original bug : hkg60144 # Date : 17Juillet98 diff --git a/tests/offset/shape/A2 b/tests/offset/shape/A2 index 4c9ee74456..be2f2ded02 100644 --- a/tests/offset/shape/A2 +++ b/tests/offset/shape/A2 @@ -1,5 +1,5 @@ -puts "TODO OCC23190 ALL: An exception was caugh.*Offset with no C1 Surface" -puts "TODO OCC23190 ALL: \\*\\* Exception \\*\\*.*Offset with no C1 Surface" +puts "TODO OCC23190 ALL: ERROR. C0 continuity of input data." +puts "TODO OCC23190 ALL: result is not a topological shape!!!" puts "TODO OCC23068 ALL: TEST INCOMPLETE" # Original bug : hkg60144/pro15325 # Date : 17Juillet98 diff --git a/tests/offset/shape/A3 b/tests/offset/shape/A3 index 4d94a3b9bb..65f492c1b2 100644 --- a/tests/offset/shape/A3 +++ b/tests/offset/shape/A3 @@ -1,5 +1,5 @@ -puts "TODO OCC23190 ALL: An exception was caught.*Offset with no C1 Surface" -puts "TODO OCC23190 ALL: \\*\\* Exception \\*\\*.*Offset with no C1 Surface" +puts "TODO OCC23190 ALL: ERROR. C0 continuity of input data." +puts "TODO OCC23190 ALL: result is not a topological shape!!!" puts "TODO OCC23068 ALL: TEST INCOMPLETE" # Original bug : cts21271 # Date : 11Sept98