+ if(theObjectList.Size() == 1 )
+ {
+ if(thePolyline.IsNull())
+ {
+ //anOutputSplitDataList.append(anInputSplitDataList);
+ SplitData SD = anInputSplitDataList.at(0);
+ TopTools_ListOfShape newshs;
+ TopTools_IndexedDataMapOfShapeListOfShape OutOrSh2M;
+ CutFaceByEdges(SD.Face(), newshs, InterPolys, &OutNE, &OutOrSh2M);
+ for (TopTools_ListIteratorOfListOfShape it(newshs); it.More(); it.Next())
+ {
+ SplitData NSD = SD;
+ NSD.Shape = it.Value();
+ anOutputSplitDataList.append(NSD);
+ }
+
+ NCollection_DataMap<TopoDS_Shape, Handle(HYDROData_PolylineXY), TopTools_ShapeMapHasher>::Iterator spit(OutNE);
+ for (;spit.More();spit.Next())
+ {
+ const TopoDS_Edge& E = TopoDS::Edge(spit.Key());
+ if (E.IsNull())
+ continue;
+ SplitData SDI(SplitData::Data_IntEdge, E, spit.Value()->GetName());
+ anOutputSplitDataList.append(SDI);
+ }
+
+#ifndef NDEBUG
+ //check CutFaceByEdges method: ensure that SD.Face() edges fully covered by
+ //history map (OutOrSh2M)
+ if (!OutOrSh2M.IsEmpty())
+ {
+ TopTools_IndexedMapOfShape EE;
+ TopExp::MapShapes(SD.Face(), TopAbs_EDGE, EE);
+ int noncontNb = 0;
+ for (int i = 1; i <= EE.Extent(); i++)
+ {
+ const TopoDS_Shape& E = EE(i);
+ noncontNb += !OutOrSh2M.Contains(E);
+ }
+ //noncontNb > 0 => some problem with edge history
+ assert(noncontNb == 0);
+ }
+#endif
+