+ Standard_Boolean bCoinsideFlag;
+ Standard_Integer i, aNbCPrts;
+ TopAbs_ShapeEnum aType;
+ //
+ const IntTools_SequenceOfCommonPrts& aCPrts=aEF.CommonParts();
+ //
+ aNbCPrts=aCPrts.Length();
+ for (i=1; i<=aNbCPrts; ++i) {
+ anIndexIn=0;
+ //
+ const IntTools_CommonPrt& aCPart=aCPrts(i);
+ aType=aCPart.Type();
+ //
+ switch (aType) {
+ //
+ case TopAbs_VERTEX: {
+ Standard_Boolean bIsOnPave1, bIsOnPave2;
+ Standard_Integer nVF;
+ Standard_Real aT, aTolToDecide;
+ TopoDS_Vertex aNewVertex;
+ //
+ const IntTools_Range& aR=aCPart.Range1();
+ //
+ // New Vertex
+ VertexParameter(aCPart, aT);
+ BOPTools_Tools::MakeNewVertex(aE, aT, aF, aNewVertex);
+ //
+ //decide to add pave or not
+ aTolToDecide=5.e-8;
+ bIsOnPave1=IsOnPave(anewSR.First(), aR, aTolToDecide);
+ bIsOnPave2=IsOnPave(anewSR.Last() , aR, aTolToDecide);
+ //
+ if (!bIsOnPave1 && !bIsOnPave2) {
+ nVF=CheckFacePaves(aNewVertex, nF);
+ if (!nVF) {
+ // really new vertex
+ // Add Interference to the Pool
+ BOPTools_ESInterference anInterf (nE, nF, aCPart);
+ anIndexIn=aEFs.Append(anInterf);
+ anInterf.SetNewShape(0);
+ //
+ aMapVI.Add(aNewVertex, anIndexIn);
+ aIMPBx.Add(aPB);
+ //
+ myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF);
+ //
+ }// if (!nVF)
+ }// if (!bIsOnPave1 && !bIsOnPave2)
+ //
+ //modified by NIZNHY-PKV Fri Apr 18 10:55:38 2008f
+ else {
+ const BOPTools_Pave& aPave=(bIsOnPave1)? aPB.Pave1() : aPB.Pave2();
+ nVF=aPave.Index();
+ const TopoDS_Vertex& aVF=TopoDS::Vertex(myDS->Shape(nVF));
+ BOPTools_Tools::UpdateVertex (aVF, aNewVertex);
+ }
+ //modified by NIZNHY-PKV Fri Apr 18 10:55:40 2008t
+ //
+ }// case TopAbs_VERTEX:
+ break;
+ //
+ case TopAbs_EDGE: {
+ bCoinsideFlag=BOPTools_Tools::IsBlockInOnFace(aPB, aF, myContext);
+ if (!bCoinsideFlag) {
+ break;
+ }
+ //
+ // Fill aMapCB
+ if (aMapCB.Contains(aPB)) {
+ TColStd_IndexedMapOfInteger& aMapF=aMapCB.ChangeFromKey(aPB);
+ aMapF.Add(nF);
+ }
+ else {
+ TColStd_IndexedMapOfInteger aMapF;
+ aMapF.Add(nF);
+ aMapCB.Add(aPB, aMapF);
+ }
+ //
+ aIMPBx.Add(aPB);
+ myIP->Add(nE, nF, Standard_True, NMTDS_TI_EF);
+ }// case TopAbs_EDGE:
+ break;