of the surface. You can select either several edges/wires or a
compound of them. To prepare for the filling, each input wire
is converted into a single BSpline curve by concatenating its edges.
+List of edges/wires must contain more than one edge.
\n \b Minimum and <b>Maximum Degree</b> of equation of the resulting
BSpline or Besier curves describing the surface.
\n \b Tolerance for \b 2D and for \b 3D - minimum distance between the
Standard_Integer aMethod = IF.GetMethod();
GeomFill_SectionGenerator Section;
- Standard_Integer i = 0;
+ Standard_Integer aNumSection = 0;
Handle(Geom_Curve) aLastC;
gp_Pnt PL1,PL2;
for (Ex.Init(aShape, TopAbs_EDGE); Ex.More(); Ex.Next()) {
C->Reverse();
}
else if (aMethod == 2) {
- if (i == 0) {
+ if (aNumSection == 0) {
PL1 = P1;
PL2 = P2;
}
}
Section.AddCurve(C);
- i++;
+ aNumSection++;
}
/* a 'tolerance' is used to compare 2 knots : see GeomFill_Generator.cdl */
Section.Perform(Precision::PConfusion());
- Handle(GeomFill_Line) Line = new GeomFill_Line(i);
+ //imn: to fix the bug 23351: "Crash is filling has only one edge"
+ //after fix related occt bug 27875 must be removed
+ if (aNumSection < 2) {
+ Standard_ConstructionError::Raise("Input must contain more than one edge");
+ }
+ Handle(GeomFill_Line) Line = new GeomFill_Line(aNumSection);
GeomFill_AppSurf App (mindeg, maxdeg, tol3d, tol2d, nbiter); /* user parameters */
App.Perform(Line, Section);