]> OCCT Git - occt-copy.git/commitdiff
Next version
authorjgv <jgv@opencascade.com>
Wed, 24 Oct 2018 11:42:38 +0000 (14:42 +0300)
committerjgv <jgv@opencascade.com>
Wed, 24 Oct 2018 11:42:38 +0000 (14:42 +0300)
src/ChFi3d/ChFi3d_Builder.cxx
src/ChFi3d/ChFi3d_Builder.hxx
src/ChFi3d/ChFi3d_Builder_6.cxx
src/ChFi3d/ChFi3d_Builder_C1.cxx
src/ChFiDS/ChFiDS_SurfData.hxx
src/ChFiDS/ChFiDS_SurfData.lxx

index c0cfa48e32d57cfe24c34cca8da9a71105b6c7ea..9dd623e2195f167cb3bc5e609e66ac78877f4d49 100644 (file)
@@ -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);
index 3ddd2fc283bfe7c0eb9a6fa101cf985013490b64..abdc46645d235c4aca97128c6d7bf3d32f8e0658 100644 (file)
@@ -323,8 +323,8 @@ protected:
   ChFiDS_Map myVEMap;
   Handle(TopOpeBRepDS_HDataStructure) myDS;
   //TopTools_IndexedDataMapOfShapeListOfShape myFaceNewEdges;
-  //NCollection_IndexedDataMap<Standard_Integer, TColStd_ListOfInteger> myFaceNewEdges;
-  NCollection_IndexedDataMap<Standard_Integer, ChFi3d_ListOfQualifiedEdge> myFaceNewEdges;
+  NCollection_IndexedDataMap<Standard_Integer, TColStd_ListOfInteger> myFaceNewEdges;
+  //NCollection_IndexedDataMap<Standard_Integer, ChFi3d_ListOfQualifiedEdge> myFaceNewEdges;
   TopTools_IndexedMapOfShape myNewFaces;
   TopTools_IndexedMapOfShape myNewEdges;
   Handle(TopOpeBRepBuild_HBuilder) myCoup;
index 38a5d042732658f8d7a8189e97cb42c8e1e92689..bbfa1c260be9685f72302af30b184858698be7f0 100644 (file)
@@ -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 {
index a8729eee16a4e7e92a64decb3fdfab37b3ecf97e..662b2adbc5491059eff07d385aced1aad84bbf9a 100644 (file)
@@ -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)
index d8976c1487251d7932c9cf976056c3ce2c1ef682..87ac0a938a707b341073c4ba6f4e1b7ab2d8c554 100644 (file)
@@ -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;
index ea64a74e923f0e555ab94b426b34ac4172f5b9b7..86fd1f4771abc3d59532a5f56a8fb6b5db18fff9 100644 (file)
@@ -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  :