- aEdges->Append(theEdges(aEI));
- }
- }
- else if (aParamI == 1)
- {
- theEdges1.Append(aEdge);
- for (Standard_Integer aEI = theEdgeIndex; aEI < aECount; ++aEI)
- {
- theEdges2.Append(theEdges(aEI));
- }
- }
- else
- {
- TopoDS_Edge aFE = TopoDS::Edge(aEdge.Oriented(TopAbs_FORWARD));
- ShapeAnalysis_TransferParametersProj aSATPP(aFE, TopoDS_Face());
- aSATPP.SetMaxTolerance(Precision::Confusion());
- TopoDS_Vertex aSplitV;
- BRep_Builder().MakeVertex(
- aSplitV, aECurve.Value(theParameter), Precision::Confusion());
-
- TopoDS_Edge aEParts[] = {
- ShapeBuild_Edge().CopyReplaceVertices(aFE, TopoDS_Vertex(),
- TopoDS::Vertex(aSplitV.Oriented(TopAbs_REVERSED))),
- ShapeBuild_Edge().CopyReplaceVertices(aFE, aSplitV, TopoDS_Vertex())};
- ShapeBuild_Edge().CopyPCurves(aEParts[0], aFE);
- ShapeBuild_Edge().CopyPCurves(aEParts[1], aFE);
- BRep_Builder().SameRange(aEParts[0], Standard_False);
- BRep_Builder().SameRange(aEParts[1], Standard_False);
- BRep_Builder().SameParameter(aEParts[0], Standard_False);
- BRep_Builder().SameParameter(aEParts[1], Standard_False);
- aSATPP.TransferRange(aEParts[0],
- aEdgeEndParams[0], theParameter, Standard_False);
- aSATPP.TransferRange(aEParts[1],
- theParameter, aEdgeEndParams[1], Standard_False);
- aEParts[0].Orientation(aOrient);
- aEParts[1].Orientation(aOrient);
-
- const Standard_Integer aFirstPI = (aOrient != TopAbs_REVERSED) ? 0 : 1;
- theEdges1.Append(aEParts[aFirstPI]);
- theEdges2.Append(aEParts[1 - aFirstPI]);
-
- for (Standard_Integer aEI = theEdgeIndex + 1; aEI < aECount; ++aEI)
- {
- theEdges2.Append(theEdges(aEI));