From: jgv Date: Wed, 24 Oct 2018 11:42:38 +0000 (+0300) Subject: Next version X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=86dde6d92b739d3ca8afb039c0809cbcdb1d3261;p=occt-copy.git Next version --- diff --git a/src/ChFi3d/ChFi3d_Builder.cxx b/src/ChFi3d/ChFi3d_Builder.cxx index c0cfa48e32..9dd623e219 100644 --- a/src/ChFi3d/ChFi3d_Builder.cxx +++ b/src/ChFi3d/ChFi3d_Builder.cxx @@ -606,12 +606,16 @@ void ChFi3d_Builder::Compute() TopoDS_Compound aNewEdges; BB.MakeCompound(aNewEdges); - ChFi3d_ListIteratorOfListOfQualifiedEdge itl(myFaceNewEdges.FindFromKey(i)); + //ChFi3d_ListIteratorOfListOfQualifiedEdge itl(myFaceNewEdges.FindFromKey(i)); + TColStd_ListIteratorOfListOfInteger itl(myFaceNewEdges.FindFromKey(i)); for (; itl.More(); itl.Next()) { - Standard_Integer anIndex = itl.Value().Index; + Standard_Integer aSignedIndex = itl.Value(); + Standard_Integer anIndex = Abs(aSignedIndex); TopoDS_Shape aNewEdge = myNewEdges(anIndex); - aNewEdge.Orientation(itl.Value().Orientation); + TopAbs_Orientation anOr = (aSignedIndex > 0)? + TopAbs_FORWARD : TopAbs_REVERSED; + aNewEdge.Orientation(anOr); BB.Add(aNewEdges, aNewEdge); } //BRepAlgoAPI_Fuse aFuse(aWires, aNewEdges); diff --git a/src/ChFi3d/ChFi3d_Builder.hxx b/src/ChFi3d/ChFi3d_Builder.hxx index 3ddd2fc283..abdc46645d 100644 --- a/src/ChFi3d/ChFi3d_Builder.hxx +++ b/src/ChFi3d/ChFi3d_Builder.hxx @@ -323,8 +323,8 @@ protected: ChFiDS_Map myVEMap; Handle(TopOpeBRepDS_HDataStructure) myDS; //TopTools_IndexedDataMapOfShapeListOfShape myFaceNewEdges; - //NCollection_IndexedDataMap myFaceNewEdges; - NCollection_IndexedDataMap myFaceNewEdges; + NCollection_IndexedDataMap myFaceNewEdges; + //NCollection_IndexedDataMap myFaceNewEdges; TopTools_IndexedMapOfShape myNewFaces; TopTools_IndexedMapOfShape myNewEdges; Handle(TopOpeBRepBuild_HBuilder) myCoup; diff --git a/src/ChFi3d/ChFi3d_Builder_6.cxx b/src/ChFi3d/ChFi3d_Builder_6.cxx index 38a5d04273..bbfa1c260b 100644 --- a/src/ChFi3d/ChFi3d_Builder_6.cxx +++ b/src/ChFi3d/ChFi3d_Builder_6.cxx @@ -722,6 +722,10 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, TopLoc_Location aLoc; BB.UpdateFace(aNewFace, Surf, aLoc, Precision::Confusion()); Standard_Integer IndNewFace = myNewFaces.Add(aNewFace); + //ChFi3d_ListOfQualifiedEdge aList; + TColStd_ListOfInteger aList; + myFaceNewEdges.Add(IndNewFace, aList); + Data->ChangeIndexOfFace(IndNewFace); ///// #ifdef DRAW @@ -818,14 +822,18 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, IndF1 = myNewFaces.FindIndex(BS1->ChangeSurface().Face()); if (!myFaceNewEdges.Contains(IndF1)) { - ChFi3d_ListOfQualifiedEdge aList; + //ChFi3d_ListOfQualifiedEdge aList; + TColStd_ListOfInteger aList; myFaceNewEdges.Add(IndF1, aList); } Standard_Integer IndE1 = myNewEdges.FindIndex(Boundary1); Data->ChangeIndexOfE1(IndE1); TopAbs_Orientation Et = (Reversed)? TopAbs_REVERSED : TopAbs_FORWARD; - QualifiedEdge aQE1(IndE1, Et); - myFaceNewEdges.ChangeFromKey(IndF1).Append(aQE1); + //QualifiedEdge aQE1(IndE1, Et); + if (Et == TopAbs_REVERSED) + IndE1 *= -1; + myFaceNewEdges.ChangeFromKey(IndF1).Append(IndE1); + myFaceNewEdges.ChangeFromKey(IndNewFace).Append(-IndE1); ///// // SurfData is filled in what concerns S2, @@ -894,13 +902,18 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, IndF2 = myNewFaces.FindIndex(BS2->ChangeSurface().Face()); if (!myFaceNewEdges.Contains(IndF2)) { - ChFi3d_ListOfQualifiedEdge aList; - myFaceNewEdges.Add(IndF2, aList); + //ChFi3d_ListOfQualifiedEdge aList; + TColStd_ListOfInteger aList; + myFaceNewEdges.Add(IndF2, aList); } Standard_Integer IndE2 = myNewEdges.FindIndex(Boundary2); Data->ChangeIndexOfE2(IndE2); - QualifiedEdge aQE2(IndE2, TopAbs::Reverse(Et)); - myFaceNewEdges.ChangeFromKey(IndF2).Append(aQE2); + //QualifiedEdge aQE2(IndE2, TopAbs::Reverse(Et)); + TopAbs_Orientation RevEt = TopAbs::Reverse(Et); + if (RevEt == TopAbs_REVERSED) + IndE2 *= -1; + myFaceNewEdges.ChangeFromKey(IndF2).Append(IndE2); + myFaceNewEdges.ChangeFromKey(IndNewFace).Append(-IndE2); ///// } else { diff --git a/src/ChFi3d/ChFi3d_Builder_C1.cxx b/src/ChFi3d/ChFi3d_Builder_C1.cxx index a8729eee16..662b2adbc5 100644 --- a/src/ChFi3d/ChFi3d_Builder_C1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_C1.cxx @@ -599,6 +599,9 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, } Handle(ChFiDS_SurfData)& Fd = SeqFil.ChangeValue(num); + //jgv + Standard_Integer IndexOfNewFace = Fd->IndexOfFace(); + ///// ChFiDS_CommonPoint& CV1 = Fd->ChangeVertex(isfirst,1); ChFiDS_CommonPoint& CV2 = Fd->ChangeVertex(isfirst,2); //To evaluate the new points. @@ -981,12 +984,16 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, IndFv = myNewFaces.FindIndex(Fv); if (!myFaceNewEdges.Contains(IndFv)) { - ChFi3d_ListOfQualifiedEdge aList; + //ChFi3d_ListOfQualifiedEdge aList; + TColStd_ListOfInteger aList; myFaceNewEdges.Add(IndFv, aList); } Standard_Integer IndE = myNewEdges.FindIndex(aNewEdge); - QualifiedEdge aQE(IndE, Et); - myFaceNewEdges.ChangeFromKey(IndFv).Append(aQE); + //QualifiedEdge aQE(IndE, Et); + if (Et == TopAbs_REVERSED) + IndE *= -1; + myFaceNewEdges.ChangeFromKey(IndFv).Append(IndE); + myFaceNewEdges.ChangeFromKey(IndexOfNewFace).Append(-IndE); #ifdef OCCT_DEBUG ChFi3d_ResultChron(ch ,t_inter); //result perf condition if (inter) @@ -1359,16 +1366,19 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, IndFop = myNewFaces.FindIndex(Fop); if (!myFaceNewEdges.Contains(IndFop)) { - ChFi3d_ListOfQualifiedEdge aList; + //ChFi3d_ListOfQualifiedEdge aList; + TColStd_ListOfInteger aList; myFaceNewEdges.Add(IndFop, aList); } for (itl.Initialize(aNewZobList); itl.More(); itl.Next()) { Standard_Integer IndZobE = myNewEdges.FindIndex(itl.Value()); - QualifiedEdge aQzobE(IndZobE, Et); - myFaceNewEdges.ChangeFromKey(IndFv).Append(aQzobE); - QualifiedEdge aQzopEonFop(IndZobE, TopAbs::Reverse(Et)); - myFaceNewEdges.ChangeFromKey(IndFop).Append(aQzopEonFop); + //QualifiedEdge aQzobE(IndZobE, Et); + if (Et == TopAbs_REVERSED) + IndZobE *= -1; + myFaceNewEdges.ChangeFromKey(IndFv).Append(IndZobE); + //QualifiedEdge aQzopEonFop(IndZobE, TopAbs::Reverse(Et)); + myFaceNewEdges.ChangeFromKey(IndFop).Append(-IndZobE); } Handle(TopOpeBRepDS_SurfaceCurveInterference) diff --git a/src/ChFiDS/ChFiDS_SurfData.hxx b/src/ChFiDS/ChFiDS_SurfData.hxx index d8976c1487..87ac0a938a 100644 --- a/src/ChFiDS/ChFiDS_SurfData.hxx +++ b/src/ChFiDS/ChFiDS_SurfData.hxx @@ -81,6 +81,8 @@ public: void ChangeIndexOfS2 (const Standard_Integer Index); + void ChangeIndexOfFace (const Standard_Integer Index); + void ChangeIndexOfE1 (const Standard_Integer Index); void ChangeIndexOfE2 (const Standard_Integer Index); @@ -109,6 +111,8 @@ public: Standard_EXPORT ChFiDS_FaceInterference& ChangeInterference (const Standard_Integer OnS); + Standard_EXPORT Standard_Integer IndexOfFace () const; + Standard_EXPORT Standard_Integer Index (const Standard_Integer OfS) const; Standard_EXPORT Standard_Integer IndexOfEdge(const Standard_Integer OfS) const; @@ -195,6 +199,7 @@ private: Standard_Integer indexOfC2; Standard_Integer indexOfE1; Standard_Integer indexOfE2; + Standard_Integer indexOfFace; Standard_Integer indexOfConge; Standard_Boolean isoncurv1; diff --git a/src/ChFiDS/ChFiDS_SurfData.lxx b/src/ChFiDS/ChFiDS_SurfData.lxx index ea64a74e92..86fd1f4771 100644 --- a/src/ChFiDS/ChFiDS_SurfData.lxx +++ b/src/ChFiDS/ChFiDS_SurfData.lxx @@ -98,6 +98,16 @@ inline void ChFiDS_SurfData::SetIndexOfC2 (const Standard_Integer theIndex) isoncurv2 = (theIndex != 0); } +//======================================================================= +//function : IndexOfFace +//purpose : +//======================================================================= + +inline Standard_Integer ChFiDS_SurfData::IndexOfFace()const +{ + return indexOfFace; +} + //======================================================================= //function : Surf //purpose : @@ -201,6 +211,16 @@ inline void ChFiDS_SurfData::ChangeIndexOfS2(const Standard_Integer Index) indexOfS2 = Index; } +//======================================================================= +//function : ChangeIndexOfFace +//purpose : +//======================================================================= + +inline void ChFiDS_SurfData::ChangeIndexOfFace(const Standard_Integer Index) +{ + indexOfFace = Index; +} + //======================================================================= //function : ChangeIndexOfE1 //purpose :