From: emv Date: Thu, 20 Sep 2012 04:29:26 +0000 (+0400) Subject: 0023252: Fillet regression X-Git-Tag: V6_5_4_beta1~32 X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=commitdiff_plain;h=73a97e76da9eefe74bb5e908463da18de8e55064 0023252: Fillet regression --- diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cdl b/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cdl index 4f4acd2f63..6f0451423c 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cdl +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cdl @@ -56,9 +56,13 @@ is ResetElement(me : in out; E : Shape from TopoDS) is deferred; ---Purpose: prepare classification involving element . - CompareElement(me : in out; E : Shape from TopoDS) is deferred; - ---Purpose: Add element 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 in the set of elements used in classification. + -- Returns FALSE if the element 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. diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cxx index 2074b5d583..141d07f6cf 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_CompositeClassifier.cxx @@ -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(); } diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cdl b/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cdl index 4aedee0805..074d740d1b 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cdl +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cdl @@ -65,10 +65,13 @@ is ---Purpose: prepare classification involving face -- define 3D point (later used in Compare()) on first vertex of face . - CompareElement(me : in out; F : Shape); + CompareElement(me : in out; F : Shape) + returns Boolean from Standard; ---Purpose: Add the face in the set of faces used in 3D point - -- classification. - + -- classification. Returns FALSE if the face 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. diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cxx index 165d766032..3cf2588ba3 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_ShellFaceClassifier.cxx @@ -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 diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cdl b/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cdl index 6c3717034f..f2fc5c1729 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cdl +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cdl @@ -66,7 +66,8 @@ is ---Purpose: prepare classification involving edge -- define 2D point (later used in Compare()) on first vertex of edge . - CompareElement(me : in out; E : Shape from TopoDS); + CompareElement(me : in out; E : Shape from TopoDS) + returns Boolean from Standard; ---Purpose: Add the edge in the set of edges used in 2D point -- classification. diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx index d8c7515e72..b5c341a5e5 100755 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_WireEdgeClassifier.cxx @@ -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; }