0023252: Fillet regression
authoremv <emv@opencascade.com>
Thu, 20 Sep 2012 04:29:26 +0000 (08:29 +0400)
committeremv <emv@opencascade.com>
Fri, 21 Sep 2012 12:21:12 +0000 (16:21 +0400)
src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cdl
src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cxx
src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cdl
src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cxx
src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cdl
src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx

index 4f4acd2..6f04514 100755 (executable)
@@ -56,9 +56,13 @@ is
     ResetElement(me : in out; E : Shape from TopoDS) is deferred;
     ---Purpose: prepare classification involving element <E>.
     
-    CompareElement(me : in out; E : Shape from TopoDS) is deferred;
-    ---Purpose: Add element <E> in the set of elements used in classification.
-    
+    CompareElement(me : in out; E : Shape from TopoDS)  
+    returns Boolean from Standard 
+    is deferred;
+    ---Purpose: Add element <E> in the set of elements used in classification.  
+    --  Returns FALSE if the element <E> has been already added to the set of elements, 
+    --  otherwise returns TRUE.
+     
     State(me : in out) returns State from TopAbs is deferred;
     ---Purpose: Returns state of classification of 2D point, defined by 
     -- ResetElement, with the current set of elements, defined by Compare.
index 2074b5d..141d07f 100755 (executable)
@@ -94,7 +94,8 @@ TopAbs_State TopOpeBRepBuild_CompositeClassifier::Compare
     TopOpeBRepBuild_BlockIterator Bit2 = L2->BlockIterator();
     for (Bit2.Initialize(); Bit2.More(); Bit2.Next()) {
       const TopoDS_Shape& s2 = MYBB->Element(Bit2);
-      CompareElement(s2);
+      if (!CompareElement(s2)) 
+        break;
     }
     state = State();
   }
index 4aedee0..074d740 100755 (executable)
@@ -65,10 +65,13 @@ is
     ---Purpose: prepare classification involving face <F>
     -- define 3D point (later used in Compare()) on first vertex of face <F>.
     
-    CompareElement(me : in out; F : Shape);
+    CompareElement(me : in out; F : Shape) 
+    returns  Boolean from Standard; 
     ---Purpose: Add the face <F> in the set of faces used in 3D point
-    -- classification.
-    
+    -- classification. Returns FALSE if the face <F> has been already  
+    -- added to the set of faces, otherwise returns TRUE.
+
     State(me : in out) returns State from TopAbs;
     ---Purpose: Returns state of classification of 3D point, defined by 
     -- ResetElement, with the current set of faces, defined by Compare.
index 165d766..3cf2588 100755 (executable)
@@ -154,12 +154,13 @@ void  TopOpeBRepBuild_ShellFaceClassifier::ResetElement(const TopoDS_Shape& F)
 //purpose  : 
 //=======================================================================
 
-void TopOpeBRepBuild_ShellFaceClassifier::CompareElement(const TopoDS_Shape& F)
+Standard_Boolean TopOpeBRepBuild_ShellFaceClassifier::CompareElement(const TopoDS_Shape& F)
 {
 #ifdef DEB
 //  const TopAbs_ShapeEnum t = F.ShapeType();
 #endif
-
+  Standard_Boolean bRet = Standard_True;
+  //
   if (myFirstCompare) {
     Standard_Boolean found = myFaceShellMap.IsBound(F);
     if ( !found ) {
@@ -178,6 +179,7 @@ void TopOpeBRepBuild_ShellFaceClassifier::CompareElement(const TopoDS_Shape& F)
       // dont F fait partie.
       TopoDS_Shape sbid = myFaceShellMap.Find(F);
       myShell = TopoDS::Shell(sbid);
+      bRet = !bRet;
     }
     myFirstCompare = Standard_False;
   }
@@ -187,7 +189,7 @@ void TopOpeBRepBuild_ShellFaceClassifier::CompareElement(const TopoDS_Shape& F)
     // dont F fait partie
     myBuilder.Add(myShell,F);
   }
-
+  return bRet;
 }
 
 #ifdef DEB
index 6c37170..f2fc5c1 100755 (executable)
@@ -66,7 +66,8 @@ is
     ---Purpose: prepare classification involving edge <E>
     -- define 2D point (later used in Compare()) on first vertex of edge <E>.
     
-    CompareElement(me : in out; E : Shape from TopoDS);
+    CompareElement(me : in out; E : Shape from TopoDS) 
+    returns Boolean from Standard;
     ---Purpose: Add the edge <E> in the set of edges used in 2D point
     -- classification.
     
index d8c7515..b5c341a 100755 (executable)
@@ -421,8 +421,9 @@ void  TopOpeBRepBuild_WireEdgeClassifier::ResetElement(const TopoDS_Shape& EE)
 //purpose  : 
 //=======================================================================
 
-void TopOpeBRepBuild_WireEdgeClassifier::CompareElement(const TopoDS_Shape& EE)
+Standard_Boolean TopOpeBRepBuild_WireEdgeClassifier::CompareElement(const TopoDS_Shape& EE)
 {
+  Standard_Boolean bRet = Standard_True;
   const TopoDS_Edge& E = TopoDS::Edge(EE);
   const TopoDS_Face& F = myBCEdge.Face();
 
@@ -462,6 +463,7 @@ void TopOpeBRepBuild_WireEdgeClassifier::CompareElement(const TopoDS_Shape& EE)
 #ifdef DEB
 //  TopAbs_State state = myFPC.State();
 #endif
+  return bRet;
 }