gp_Pnt2d ap = aCurve->Value(f);
Standard_Boolean bFirstFound = Standard_False;
Standard_Boolean bLastFound = Standard_False;
- Standard_Boolean bforward = Standard_True;
if(ap.Distance(theFirstPoint) < aTolerance1) {
- bforward = Standard_True;
if(theOrientedList.IsEmpty())
theOrientedList.Append(aEPrev.Oriented(TopAbs_FORWARD));
bFirstFound = Standard_True;
}
else if(ap.Distance(theLastPoint) < aTolerance1) {
- bforward = Standard_False;
if(theOrientedList.IsEmpty())
theOrientedList.Append(aEPrev.Oriented(TopAbs_REVERSED));
bLastFound = Standard_True;
ap = aCurve->Value(l);
if(ap.Distance(theLastPoint) < aTolerance2) {
- bforward = Standard_True;
-
if(theOrientedList.IsEmpty())
theOrientedList.Append(aEPrev.Oriented(TopAbs_FORWARD));
bLastFound = Standard_True;
}
else if(ap.Distance(theFirstPoint) < aTolerance2) {
- bforward = Standard_False;
-
if(theOrientedList.IsEmpty())
theOrientedList.Append(aEPrev.Oriented(TopAbs_REVERSED));
bFirstFound = Standard_True;
}
+ if (!theOrientedList.IsEmpty())
+ aEPrev = TopoDS::Edge (theOrientedList.Last());
+
for(; anIt.More(); anIt.Next()) {
const TopoDS_Edge& aE = TopoDS::Edge(anIt.Value());
TopoDS_Vertex aV11, aV12;
- TopExp::Vertices(aEPrev, aV11, aV12);
+ TopExp::Vertices(aEPrev, aV11, aV12, Standard_True);
TopoDS_Vertex aV21, aV22;
- TopExp::Vertices(aE, aV21, aV22);
- TopAbs_Orientation anOri = TopAbs_FORWARD;
+ TopExp::Vertices(aE, aV21, aV22, Standard_False);
- if(aV12.IsSame(aV21) || aV11.IsSame(aV22)) {
- anOri = (bforward) ? TopAbs_FORWARD : TopAbs_REVERSED;
- }
- else {
- anOri = (bforward) ? TopAbs_REVERSED : TopAbs_FORWARD;
- }
+ TopAbs_Orientation anOri =
+ (aV12.IsSame (aV21) || aV11.IsSame (aV22)) ? TopAbs_FORWARD : TopAbs_REVERSED;
theOrientedList.Append(aE.Oriented(anOri));
- aEPrev = aE;
+ aEPrev = TopoDS::Edge (theOrientedList.Last());
+
aTolerance1 = (aV21.IsNull()) ? Precision::Confusion() : BRep_Tool::Tolerance(aV21);
aTolerance2 = (aV22.IsNull()) ? Precision::Confusion() : BRep_Tool::Tolerance(aV22);
utol = aBAS.UResolution(aTolerance1);
}
}
- if(!bFirstFound || !bLastFound)
- return Standard_False;
- return Standard_True;
+ return bFirstFound && bLastFound;
}
// ----------------------------------------------------------------------------------------------------
--- /dev/null
+puts "TODO OCC30794 ALL: Faulty shapes in variables"
+puts "TODO OCC30794 ALL: Error : The area of result shape is"
+puts "TODO OCC30794 ALL: Error : The volume of result shape is"
+puts "TODO OCC30794 ALL: Error : is WRONG because number of"
+
+puts "========"
+puts "0030794: BRepOffsetAPI_MakePipeShell: shape is produced with artifacts"
+puts "========"
+puts ""
+
+restore [locate_data_file bug30794_shapes1.brep] c
+explode c
+
+mksweep c_1
+addsweep c_2
+buildsweep result -C -S
+
+checkshape result
+
+checkprops result -s 1.24302e+06 -v 5.64101e+06
+checknbshapes result -wire 14 -face 14 -shell 1 -solid 1 -t
+
+checkview -display result -2d -path ${imagedir}/${test_image}.png