+ aItIm.Initialize(myImages);
+ for (; aItIm.More(); aItIm.Next()) {
+ const TopoDS_Vertex& aVnew=TopoDS::Vertex(aItIm.Key());
+ const TopTools_ListOfShape& aLVSD=aItIm.Value();
+ //
+ aNbVSD=aLVSD.Extent();
+ if (aNbVSD==1) {// simple case aVnew=aVold
+ EENewVertices(aVnew, aMapVI);
+ continue;
+ }
+ //
+ // aNbVSD>1
+ myDS->InsertShapeAndAncestorsSuccessors(aVnew, anASSeq);
+ nVnew=myDS->NumberOfInsertedShapes();
+ myDS->SetState(nVnew, BooleanOperations_ON);
+ //
+ aMFence.Clear();
+ aIt.Initialize(aLVSD);
+ for (; aIt.More(); aIt.Next()) {
+ const TopoDS_Vertex& aVold=TopoDS::Vertex(aIt.Value());
+ nIEE=aMapVI.FindFromKey(aVold);
+ BOPTools_EEInterference& aEE=aEEs(nIEE);
+ aEE.Indices(nE[0], nE[1]);
+ aEE.SetNewShape(nVnew);
+ //
+ for (j=0; j<2; ++j) {
+ if (aMFence.Add(nE[j])) {
+ aE=TopoDS::Edge(myDS->Shape(nE[j]));
+ iFlag=myContext.ComputeVE (aVnew, aE, aT);
+ if (!iFlag) {
+ aPave.SetInterference(-1);
+ aPave.SetType (BooleanOperations_EdgeEdge);
+ aPave.SetIndex(nVnew);
+ aPave.SetParam(aT);
+ //
+ BOPTools_PaveSet& aPaveSet=myPavePoolNew(myDS->RefEdge(nE[j]));
+ aPaveSet.Append(aPave);
+ }
+ }// if (aMFence.Add(nE[j])) {
+ }// for (j=0; j<2; ++j) {
+ }//for (; aIt.More(); aIt.Next()) {
+ }// for (; aItIm.More(); aItIm.Next())
+}
+//
+// case: use_02
+// completely rewritten
+//=======================================================================
+//function : TreatNewVertices
+//purpose :
+//=======================================================================
+void TreatNewVertices(const BooleanOperations_IndexedDataMapOfShapeInteger& aMapVI,
+ TopTools_DataMapOfShapeListOfShape& myImages,
+ TopTools_DataMapOfShapeShape& myOrigins)
+{
+ Standard_Integer j, i, aNbV, aNbVSD;
+ Standard_Real aTol;
+ TColStd_ListIteratorOfListOfInteger aIt;
+ TopoDS_Shape aSTmp, aVF;
+ TopoDS_Vertex aVnew;
+ TopTools_IndexedMapOfShape aMV, aMVProcessed;
+ TopTools_ListIteratorOfListOfShape aItS;
+ TopTools_DataMapIteratorOfDataMapOfShapeListOfShape aItIm;
+ TopTools_DataMapOfShapeListOfShape aMVV;
+ NMTDS_IndexedDataMapOfIntegerShape aMIS;
+ NMTDS_IndexedDataMapOfShapeBox aMSB;