Method for preanalysis of input data added (CheckInputData).
Now it is possible to work with Error() function, which return error code.
Extended output support for all offset commands added.
Test-cases for issue #26556
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
#include <TopTools_SequenceOfShape.hxx>
#include <BRepBuilderAPI_Sewing.hxx>
#include <Geom_Line.hxx>
+#include <NCollection_Vector.hxx>
#include <stdio.h>
// POP for NT
}
#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);
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;
//--------------------------------------------------------------
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;
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());
}
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);
// 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;
}
}
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;
+}
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
//! 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;
+
BRepOffset_Error myError;
BRepOffset_MakeLoops myMakeLoops;
Standard_Boolean myIsPerformSewing; // Handle bad walls in thicksolid mode.
+ TopoDS_Shape myBadShape;
};
}
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
//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;
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)
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;
}
//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;
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;
}
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]);
}
//----------------------------------------
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());
}
else
{
- theCommands << "ERROR. offsetperform operation not done.";
- return 1;
+ const BRepOffset_Error aRetCode = TheOffset.Error();
+ reportOffsetState(theCommands, aRetCode);
}
return 0;
-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"
-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"
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 "========================"
+puts "TODO OCC26556 ALL: ERROR. offsetperform operation not done."
+
puts "============"
puts "OCC5805"
puts "============"
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"
+puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
puts "============"
puts "OCC5806"
puts "============"
--- /dev/null
+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."
+}
--- /dev/null
+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."
+}
--- /dev/null
+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."
+}
--- /dev/null
+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."
+}
-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
## 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
#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
#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
#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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 \
puts "TODO OCC23068 ALL: Error : The offset is not valid"
+puts "TODO OCC26556 ALL: ERROR. offsetperform operation not done."
# Original bug : hkg60144
# Date : 17Juillet98
-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
-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