1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-04 18:06:22 +03:00

0028903: BRepOffset_MakeOffset produces invalid shape (thickshell) in Intersection mode

1. Method BRepOffset_Tool::Inter3D is modified: now selection of proper edges is performed here, they are not concatenated into one edge if they go through a vertex on a boundary.

2. Method BRepOffset_Inter3d::ConnexIntByInt is modified: selection of edges is eliminated.

3. Method BRepOffset_Inter2d::ConnexIntByInt is corrected to be able to process seam edges correct.
This commit is contained in:
jgv 2018-01-23 17:54:06 +03:00 committed by bugmaster
parent f84d6446a7
commit bad76cfc7a
17 changed files with 636 additions and 684 deletions

View File

@ -88,6 +88,15 @@ void BRepAlgo_Loop::Init(const TopoDS_Face& F)
static void Bubble(const TopoDS_Edge& E,
TopTools_SequenceOfShape& Seq)
{
//Remove duplicates
for (Standard_Integer i = 1; i < Seq.Length(); i++)
for (Standard_Integer j = i+1; j <= Seq.Length(); j++)
if (Seq(i) == Seq(j))
{
Seq.Remove(j);
j--;
}
Standard_Boolean Invert = Standard_True;
Standard_Integer NbPoints = Seq.Length();
Standard_Real U1,U2;

View File

@ -112,6 +112,28 @@ static TopoDS_Vertex CommonVertex(TopoDS_Edge& E1,
return V;
}
static Standard_Boolean IsOrientationChanged(TopTools_IndexedMapOfShape& theMap,
const TopoDS_Edge& theEdge)
{
Standard_Boolean IsOrChanged = Standard_False;
if (!theMap.Contains(theEdge))
theMap.Add(theEdge);
else
{
Standard_Integer anInd = theMap.FindIndex(theEdge);
const TopoDS_Shape& anEdge = theMap(anInd);
if (theEdge.Orientation() != anEdge.Orientation())
{
theMap.Substitute( anInd, theEdge );
IsOrChanged = Standard_True;
}
}
return IsOrChanged;
}
//=======================================================================
//function : Store
//purpose : Store the vertices <theLV> into AsDes for the edge <theEdge>.
@ -1479,7 +1501,10 @@ void BRepOffset_Inter2d::ConnexIntByInt
wexp.Init(TopoDS::Wire(aLocalWire),TopoDS::Face(aLocalFace));
if (!wexp.More())
continue; // Protection from case when explorer does not contain edges.
CurE = FirstE = wexp.Current();
CurE = FirstE = wexp.Current();
TopTools_IndexedMapOfShape Edges;
Standard_Boolean ToReverse1, ToReverse2;
ToReverse1 = IsOrientationChanged(Edges, CurE);
while (!end) {
wexp.Next();
if (wexp.More()) {
@ -1490,6 +1515,8 @@ void BRepOffset_Inter2d::ConnexIntByInt
}
if (CurE.IsSame(NextE)) continue;
ToReverse2 = IsOrientationChanged(Edges, NextE);
TopoDS_Vertex Vref = CommonVertex(CurE, NextE);
gp_Pnt Pref = BRep_Tool::Pnt(Vref);
@ -1515,6 +1542,9 @@ void BRepOffset_Inter2d::ConnexIntByInt
else if (Build.IsBound(NextE) && MES.IsBound(CEO)) {
NE1 = Build(NextE);
NE2 = MES(CEO);
Standard_Boolean Tmp = ToReverse1;
ToReverse1 = ToReverse2;
ToReverse2 = Tmp;
}
else {
DoInter = 0;
@ -1526,9 +1556,17 @@ void BRepOffset_Inter2d::ConnexIntByInt
Standard_Boolean bCoincide;
TopExp_Explorer Exp1, Exp2;
for (Exp1.Init(NE1, TopAbs_EDGE); Exp1.More(); Exp1.Next()) {
const TopoDS_Edge& aE1 = TopoDS::Edge(Exp1.Current());
TopoDS_Edge aE1 = TopoDS::Edge(Exp1.Current());
for (Exp2.Init(NE2, TopAbs_EDGE); Exp2.More(); Exp2.Next()) {
const TopoDS_Edge& aE2 = TopoDS::Edge(Exp2.Current());
TopoDS_Edge aE2 = TopoDS::Edge(Exp2.Current());
//Correct orientation of edges
if (ToReverse1)
aE1.Reverse();
if (ToReverse2)
aE2.Reverse();
//////////////////////////////
RefEdgeInter(FIO, BAsurf, aE1, aE2, AsDes2d,
Tol, Standard_True, Pref, theDMVV, bCoincide);
}
@ -1553,6 +1591,7 @@ void BRepOffset_Inter2d::ConnexIntByInt
}
}
CurE = NextE;
ToReverse1 = ToReverse2;
}
}
}

View File

@ -100,57 +100,6 @@ static void ExtentEdge(const TopoDS_Face& /*F*/,
}
//=======================================================================
//function : SelectEdge
//purpose :
//=======================================================================
static void SelectEdge (const TopoDS_Shape& theS,
TopTools_ListOfShape& theLE)
{
Standard_Real aT1, aT2, aDist, aDistMin;
TopExp_Explorer aExp;
TopTools_ListIteratorOfListOfShape aIt;
GeomAPI_ProjectPointOnCurve aProjPC;
gp_Pnt aPE1, aPE2;
TopoDS_Edge aRE;
//
aDistMin = RealLast();
//
aIt.Initialize(theLE);
for (; aIt.More(); aIt.Next()) {
const TopoDS_Edge& aE = *(TopoDS_Edge*)&aIt.Value();
//
const Handle(Geom_Curve)& aC = BRep_Tool::Curve(aE, aT1, aT2);
//
aProjPC.Init(aC, aT1, aT2);
aPE1 = aC->Value(aT1);
aPE2 = aC->Value(aT2);
//
aDist = 0.;
aExp.Init(theS, TopAbs_VERTEX);
for (; aExp.More(); aExp.Next()) {
const TopoDS_Vertex& aV = *(TopoDS_Vertex*)&aExp.Current();
const gp_Pnt aP = BRep_Tool::Pnt(aV);
//
aProjPC.Perform(aP);
if (aProjPC.NbPoints()) {
aDist += aProjPC.LowerDistance();
}
else {
aDist += Min(aP.Distance(aPE1), aP.Distance(aPE2));
}
}
//
if (aDist < aDistMin) {
aDistMin = aDist;
aRE = aE;
}
}
//
theLE.Clear();
theLE.Append(aRE);
}
//=======================================================================
//function : CompletInt
//purpose :
@ -617,11 +566,6 @@ void BRepOffset_Inter3d::ConnexIntByInt
if (!IsDone(NF1,NF2)) {
TopTools_ListOfShape LInt1,LInt2;
BRepOffset_Tool::Inter3D (NF1,NF2,LInt1,LInt2,CurSide,E,bEdge);
if (LInt1.Extent() > 1) {
// intersection is in seceral edges (free sewing)
SelectEdge(aS, LInt1);
SelectEdge(aS, LInt2);
}
SetDone(NF1,NF2);
if (!LInt1.IsEmpty()) {
Store (NF1,NF2,LInt1,LInt2);

View File

@ -320,6 +320,26 @@ static Standard_Real ComputeMaxDist(const gp_Pln& thePlane,
static void CorrectSolid(TopoDS_Solid& theSol, TopTools_ListOfShape& theSolList);
//---------------------------------------------------------------------
static TopAbs_Orientation OrientationOfEdgeInFace(const TopoDS_Edge& theEdge,
const TopoDS_Face& theFace)
{
TopAbs_Orientation anOr = TopAbs_EXTERNAL;
TopExp_Explorer Explo(theFace, TopAbs_EDGE);
for (; Explo.More(); Explo.Next())
{
const TopoDS_Shape& anEdge = Explo.Current();
if (anEdge.IsSame(theEdge))
{
anOr = anEdge.Orientation();
break;
}
}
return anOr;
}
//
static Standard_Boolean FindParameter(const TopoDS_Vertex& V,
const TopoDS_Edge& E,
@ -480,7 +500,7 @@ static void GetEdgePoints(const TopoDS_Edge& anEdge,
//=======================================================================
static void FillContours(const TopoDS_Shape& aShape,
const BRepOffset_Analyse& Analyser,
TopTools_DataMapOfShapeListOfShape& Contours,
TopTools_IndexedDataMapOfShapeListOfShape& Contours,
TopTools_DataMapOfShapeShape& MapEF)
{
TopTools_ListOfShape Edges;
@ -533,7 +553,7 @@ static void FillContours(const TopoDS_Shape& aShape,
break;
}
}
Contours.Bind(StartVertex, aContour);
Contours.Add(StartVertex, aContour);
}
}
@ -2497,18 +2517,17 @@ static void UpdateInitOffset (BRepAlgo_Image& myInitOffset,
//=======================================================================
void BRepOffset_MakeOffset::MakeMissingWalls ()
{
TopTools_DataMapOfShapeListOfShape Contours; //Start vertex + list of connected edges (free boundary)
TopTools_IndexedDataMapOfShapeListOfShape Contours; //Start vertex + list of connected edges (free boundary)
TopTools_DataMapOfShapeShape MapEF; //Edges of contours: edge + face
Standard_Real OffsetVal = Abs(myOffset);
FillContours(myShape, myAnalyse, Contours, MapEF);
TopTools_DataMapIteratorOfDataMapOfShapeListOfShape iter(Contours);
for (; iter.More(); iter.Next())
for (Standard_Integer ic = 1; ic <= Contours.Extent(); ic++)
{
TopoDS_Vertex StartVertex = TopoDS::Vertex(iter.Key());
TopoDS_Vertex StartVertex = TopoDS::Vertex(Contours.FindKey(ic));
TopoDS_Edge StartEdge;
const TopTools_ListOfShape& aContour = iter.Value();
const TopTools_ListOfShape& aContour = Contours(ic);
TopTools_ListIteratorOfListOfShape itl(aContour);
Standard_Boolean FirstStep = Standard_True;
TopoDS_Edge PrevEdge;
@ -2517,6 +2536,7 @@ void BRepOffset_MakeOffset::MakeMissingWalls ()
for (; itl.More(); itl.Next())
{
TopoDS_Edge anEdge = TopoDS::Edge(itl.Value());
TopoDS_Face aFaceOfEdge = TopoDS::Face(MapEF(anEdge));
// Check for offset existence.
if (!myInitOffsetEdge.HasImage(anEdge))
@ -2856,6 +2876,12 @@ void BRepOffset_MakeOffset::MakeMissingWalls ()
}
BRepLib::SameParameter(NewFace);
BRepTools::Update(NewFace);
//Check orientation
TopAbs_Orientation anOr = OrientationOfEdgeInFace(anEdge, aFaceOfEdge);
TopAbs_Orientation OrInNewFace = OrientationOfEdgeInFace(anEdge, NewFace);
if (OrInNewFace != TopAbs::Reverse(anOr))
NewFace.Reverse();
///////////////////
myWalls.Append(NewFace);
if (ArcOnV2)
{
@ -2938,7 +2964,9 @@ void BRepOffset_MakeOffset::MakeShells ()
TopTools_ListIteratorOfListOfShape it(R);
//
for (; it.More(); it.Next()) {
const TopoDS_Shape& aF = it.Value();
TopoDS_Shape aF = it.Value();
if (myThickening) //offsetted faces must change their orientations
aF.Reverse();
//
TopTools_ListOfShape Image;
myImageOffset.LastImage(aF,Image);

File diff suppressed because it is too large Load Diff

View File

@ -60,7 +60,11 @@ public:
//! <E> is a section between <F1> and <F2>. Computes
//! <O1> the orientation of <E> in <F1> influenced by <F2>.
//! idem for <O2>.
Standard_EXPORT static void OrientSection (const TopoDS_Edge& E, const TopoDS_Face& F1, const TopoDS_Face& F2, TopAbs_Orientation& O1, TopAbs_Orientation& O2);
Standard_EXPORT static void OrientSection (const TopoDS_Edge& E,
const TopoDS_Face& F1,
const TopoDS_Face& F2,
TopAbs_Orientation& O1,
TopAbs_Orientation& O2);
//! Looks for the common Vertices and Edges between faces <theF1> and <theF2>.<br>
//! Returns TRUE if common shapes have been found.<br>
@ -83,42 +87,85 @@ public:
//! edges solution are stored in <LInt1> with the
//! orientation on <F1>, the sames edges are stored in
//! <Lint2> with the orientation on <F2>.
Standard_EXPORT static void Inter3D (const TopoDS_Face& F1, const TopoDS_Face& F2, TopTools_ListOfShape& LInt1, TopTools_ListOfShape& LInt2, const TopAbs_State Side, const TopoDS_Edge& RefEdge, const Standard_Boolean IsRefEdgeDefined = Standard_False);
Standard_EXPORT static void Inter3D (const TopoDS_Face& F1,
const TopoDS_Face& F2,
TopTools_ListOfShape& LInt1,
TopTools_ListOfShape& LInt2,
const TopAbs_State Side,
const TopoDS_Edge& RefEdge,
const Standard_Boolean IsRefEdgeDefined = Standard_False);
//! Find if the edges <Edges> of the face <F2> are on
//! the face <F1>.
//! Set in <LInt1> <LInt2> the updated edges.
//! If all the edges are computed, returns true.
Standard_EXPORT static Standard_Boolean TryProject (const TopoDS_Face& F1, const TopoDS_Face& F2, const TopTools_ListOfShape& Edges, TopTools_ListOfShape& LInt1, TopTools_ListOfShape& LInt2, const TopAbs_State Side, const Standard_Real TolConf);
Standard_EXPORT static Standard_Boolean TryProject (const TopoDS_Face& F1,
const TopoDS_Face& F2,
const TopTools_ListOfShape& Edges,
TopTools_ListOfShape& LInt1,
TopTools_ListOfShape& LInt2,
const TopAbs_State Side,
const Standard_Real TolConf);
Standard_EXPORT static void PipeInter (const TopoDS_Face& F1, const TopoDS_Face& F2, TopTools_ListOfShape& LInt1, TopTools_ListOfShape& LInt2, const TopAbs_State Side);
Standard_EXPORT static void PipeInter (const TopoDS_Face& F1,
const TopoDS_Face& F2,
TopTools_ListOfShape& LInt1,
TopTools_ListOfShape& LInt2,
const TopAbs_State Side);
Standard_EXPORT static void Inter2d (const TopoDS_Face& F, const TopoDS_Edge& E1, const TopoDS_Edge& E2, TopTools_ListOfShape& LV, const Standard_Real Tol);
Standard_EXPORT static void Inter2d (const TopoDS_Face& F,
const TopoDS_Edge& E1,
const TopoDS_Edge& E2,
TopTools_ListOfShape& LV,
const Standard_Real Tol);
Standard_EXPORT static void InterOrExtent (const TopoDS_Face& F1, const TopoDS_Face& F2, TopTools_ListOfShape& LInt1, TopTools_ListOfShape& LInt2, const TopAbs_State Side);
Standard_EXPORT static void InterOrExtent (const TopoDS_Face& F1,
const TopoDS_Face& F2,
TopTools_ListOfShape& LInt1,
TopTools_ListOfShape& LInt2,
const TopAbs_State Side);
Standard_EXPORT static void CheckBounds (const TopoDS_Face& F, const BRepOffset_Analyse& Analyse, Standard_Boolean& enlargeU, Standard_Boolean& enlargeVfirst, Standard_Boolean& enlargeVlast);
Standard_EXPORT static void CheckBounds (const TopoDS_Face& F,
const BRepOffset_Analyse& Analyse,
Standard_Boolean& enlargeU,
Standard_Boolean& enlargeVfirst,
Standard_Boolean& enlargeVlast);
//! if <ChangeGeom> is TRUE , the surface can be
//! changed .
//! if <UpdatePCurve> is TRUE, update the pcurves of the
//! edges of <F> on the new surface.if the surface has been changed,
//! Returns True if The Surface of <NF> has changed.
Standard_EXPORT static Standard_Boolean EnLargeFace (const TopoDS_Face& F, TopoDS_Face& NF, const Standard_Boolean ChangeGeom, const Standard_Boolean UpDatePCurve = Standard_False, const Standard_Boolean enlargeU = Standard_True, const Standard_Boolean enlargeVfirst = Standard_True, const Standard_Boolean enlargeVlast = Standard_True);
Standard_EXPORT static Standard_Boolean EnLargeFace (const TopoDS_Face& F,
TopoDS_Face& NF,
const Standard_Boolean ChangeGeom,
const Standard_Boolean UpDatePCurve = Standard_False,
const Standard_Boolean enlargeU = Standard_True,
const Standard_Boolean enlargeVfirst = Standard_True,
const Standard_Boolean enlargeVlast = Standard_True);
Standard_EXPORT static void ExtentFace (const TopoDS_Face& F, TopTools_DataMapOfShapeShape& ConstShapes, TopTools_DataMapOfShapeShape& ToBuild, const TopAbs_State Side, const Standard_Real TolConf, TopoDS_Face& NF);
Standard_EXPORT static void ExtentFace (const TopoDS_Face& F,
TopTools_DataMapOfShapeShape& ConstShapes,
TopTools_DataMapOfShapeShape& ToBuild,
const TopAbs_State Side,
const Standard_Real TolConf,
TopoDS_Face& NF);
//! Via the wire explorer store in <NOnV1> for
//! an Edge <E> of <W> his Edge neighbour on the first
//! vertex <V1> of <E>.
//! Store in NOnV2 the Neighbour of <E>on the last
//! vertex <V2> of <E>.
Standard_EXPORT static void BuildNeighbour (const TopoDS_Wire& W, const TopoDS_Face& F, TopTools_DataMapOfShapeShape& NOnV1, TopTools_DataMapOfShapeShape& NOnV2);
Standard_EXPORT static void BuildNeighbour (const TopoDS_Wire& W,
const TopoDS_Face& F,
TopTools_DataMapOfShapeShape& NOnV1,
TopTools_DataMapOfShapeShape& NOnV2);
//! Store in MVE for a vertex <V> in <S> the incident
//! edges <E> in <S>.
//! An Edge is Store only one Time for a vertex.
Standard_EXPORT static void MapVertexEdges (const TopoDS_Shape& S, TopTools_DataMapOfShapeListOfShape& MVE);
Standard_EXPORT static void MapVertexEdges (const TopoDS_Shape& S,
TopTools_DataMapOfShapeListOfShape& MVE);
//! Remove the non valid part of an offsetshape
//! 1 - Remove all the free boundary and the faces
@ -126,9 +173,14 @@ public:
//! 2 - Remove all the shapes not valid in the result
//! (according to the side of offseting)
//! in this verion only the first point is implemented.
Standard_EXPORT static TopoDS_Shape Deboucle3D (const TopoDS_Shape& S, const TopTools_MapOfShape& Boundary);
Standard_EXPORT static TopoDS_Shape Deboucle3D (const TopoDS_Shape& S,
const TopTools_MapOfShape& Boundary);
Standard_EXPORT static void CorrectOrientation (const TopoDS_Shape& SI, const TopTools_IndexedMapOfShape& NewEdges, Handle(BRepAlgo_AsDes)& AsDes, BRepAlgo_Image& InitOffset, const Standard_Real Offset);
Standard_EXPORT static void CorrectOrientation (const TopoDS_Shape& SI,
const TopTools_IndexedMapOfShape& NewEdges,
Handle(BRepAlgo_AsDes)& AsDes,
BRepAlgo_Image& InitOffset,
const Standard_Real Offset);
Standard_EXPORT static Standard_Real Gabarit (const Handle(Geom_Curve)& aCurve);

View File

@ -1,8 +1,4 @@
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
puts "TODO OCC25925 ALL: Error: The command cannot be built"
puts "TODO OCC25925 ALL: Faulty OCC5805 : result is not Closed shape"
puts "TODO OCC25925 ALL: Tcl Exception: result is not a topological shape"
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
puts "TODO OCC25925 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "============"
puts "OCC5805"

View File

@ -1,6 +1,6 @@
puts "TODO OCC24862 ALL: Error : is WRONG because number of"
puts "TODO OCC24862 ALL: Error : The area of result shape is"
puts "TODO OCC24682 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "TODO OCC23068 ALL: Error : is WRONG because number of"
puts "TODO OCC23068 ALL: Error : The area of result shape is"
puts "TODO OCC23068 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "============"
puts "OCC5805"

View File

@ -1,7 +1,4 @@
puts "TODO OCC25925 ALL: ERROR. offsetperform operation not done."
puts "TODO OCC25925 ALL: Error: The command cannot be built"
puts "TODO OCC25925 ALL: Tcl Exception: result is not a topological shape"
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
puts "TODO OCC25925 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "============"
puts "OCC5805"
@ -41,8 +38,6 @@ catch { OFFSETSHAPE $distance {s_2} $calcul $type }
checkprops result -s 495.635
checkshape result
checknbshapes result -vertex 2 -edge 3 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 13
set index [lsearch [whatis s] Closed]
if {$index == -1} {
puts "Faulty ${BugNumber} : s is not Closed shape"

View File

@ -1,6 +1,7 @@
puts "TODO OCC24862 ALL: Error : is WRONG because number of"
puts "TODO OCC24862 ALL: Error : The area of result shape is"
puts "TODO OCC24682 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "TODO OCC23068 ALL: ERROR. offsetperform operation not done."
puts "TODO OCC25925 ALL: Error: The command cannot be built"
puts "TODO OCC25925 ALL: Tcl Exception: result is not a topological shape"
puts "TODO OCC25925 ALL: TEST INCOMPLETE"
puts "============"
puts "OCC5805"

View File

@ -8,20 +8,17 @@ puts ""
psphere a 100
explode a f
thickshell r a_1 10 i 1.e-7
explode r
thickshell result a_1 10 i 1.e-7
donly result
set bug_info [whatis r]
if {$bug_info != "r is a shape SOLID FORWARD Free Modified Closed\n"} {
puts "ERROR: OCC26233 is reproduced. Shape r has incorrect characteristics."
checkshape result
checknbshapes result -solid 1 -shell 2 -face 2 -wire 2 -edge 6 -vertex 4 -shape 17
set tolres [checkmaxtol result]
if { ${tolres} > 2.e-7} {
puts "Error: bad tolerance of result"
}
set bug_info [whatis r_1]
if {$bug_info != "r_1 is a shape SHELL FORWARD Modified Orientable Closed\n"} {
puts "ERROR: OCC26233 is reproduced. Shape r_1 has incorrect characteristics."
}
set bug_info [whatis r_2]
if {$bug_info != "r_2 is a shape SHELL REVERSED Modified Orientable Closed\n"} {
puts "ERROR: OCC26233 is reproduced. Shape r_2 has incorrect characteristics."
}
checkprops result -v 1.38649e+006

View File

@ -0,0 +1,20 @@
puts "============"
puts "OCC28903"
puts "============"
puts ""
##################################################################################
# BRepOffset_MakeOffset produces invalid shape (thickshell) in Intersection mode
##################################################################################
restore [locate_data_file bug28903_Fuse_3.brep] a
thickshell result a 10 i
donly result
checkshape result
checknbshapes result -solid 1 -shell 1 -face 6 -wire 7 -edge 12 -vertex 7 -shape 34
checkmaxtol result -min_tol 0.0015
checkprops result -v 1.1845e+006

View File

@ -1,8 +1,6 @@
puts "TODO OCC23748 ALL: ERROR. offsetperform operation not done."
puts "TODO OCC23748 ALL: Error: The command cannot be built"
puts "TODO OCC23748 ALL: Error : The offset cannot be built."
psphere s 15 270
OFFSETSHAPE 1 {s_2} $calcul $type
checkprops result -v 0

View File

@ -2,4 +2,4 @@ ptorus s 20 5 270
OFFSETSHAPE 1 {s_2} $calcul $type
checkprops result -v -296.088
checkprops result -v 3370.13

View File

@ -1,4 +1,3 @@
puts "TODO OCC23068 ALL: Faulty shapes in variables faulty_1 to faulty_2 "
ptorus s 20 5 270
OFFSETSHAPE 1 {s_2 s_3} $calcul $type

View File

@ -1,8 +1,8 @@
puts "TODO OCC24156 MacOS: \\*\\* Exception \\*\\*.*"
puts "TODO OCC24156 MacOS: An exception was caught"
puts "TODO OCC24156 MacOS: TEST INCOMPLETE"
puts "TODO OCC23068 ALL: Error : The volume of result shape is"
puts "TODO OCC25406 ALL: Error: bsection of the result and s is not equal to zero"
puts "TODO OCC23068 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "TODO OCC23068 ALL: Error : The area of face result_3 of the resulting shape is negative."
ellipse w1 0 0 0 15 10
mkedge w1 w1 0 pi/2
@ -13,5 +13,3 @@ mkplane w w
revol s w 0 0 0 0 0 1 90
OFFSETSHAPE 1 {} $calcul $type
checkprops result -v 0

View File

@ -1,7 +1,3 @@
puts "TODO OCC26578 All:An exception was caught"
puts "TODO OCC26578 All:\\*\\* Exception \\*\\*"
puts "TODO OCC26578 All:TEST INCOMPLETE"
restore [locate_data_file bug26663_test_offset_J9.brep] s
OFFSETSHAPE ${off_param} {} ${calcul} ${type}
checknbshapes result -ref [lrange [nbshapes s] 8 19]