+ }
+ else if (aType == CHAMFER_SHAPE_EDGES || aType == CHAMFER_SHAPE_EDGES_AD)
+ {
+ // chamfer on selected edges with lenght param D1 & D2.
+
+ int aLen = aCI.GetLength();
+ int ind = 1;
+ TopTools_MapOfShape aMap;
+ TopTools_IndexedDataMapOfShapeListOfShape M;
+ GEOMImpl_Block6Explorer::MapShapesAndAncestors(aShapeBase, TopAbs_EDGE, TopAbs_FACE, M);
+ for (; ind <= aLen; ind++)
+ {
+ TopoDS_Shape aShapeEdge;
+ if (GEOMImpl_ILocalOperations::GetSubShape(aShapeBase, aCI.GetEdge(ind), aShapeEdge))
+ {
+ TopoDS_Edge E = TopoDS::Edge(aShapeEdge);
+ const TopTools_ListOfShape& aFacesList = M.FindFromKey(E);
+ TopoDS_Face F = TopoDS::Face( aFacesList.First() );
+ if (aType == CHAMFER_SHAPE_EDGES)
+ {
+ double aD1 = aCI.GetD1();
+ double aD2 = aCI.GetD2();
+ fill.Add(aD1, aD2, E, F);
+ }
+ else
+ {
+ double aD = aCI.GetD();
+ double anAngle = aCI.GetAngle();
+ if ( (anAngle > 0) && (anAngle < (Standard_PI/2)) )
+ fill.AddDA(aD, anAngle, E, F);
+ }
+ }
+ }
+ }
+ else {