#include <Geom_BezierCurve.hxx>
#include <Geom_BSplineCurve.hxx>
#include <Geom2d_Line.hxx>
-#include <Geom2d_Curve.hxx>
+#include <Geom2d_BSplineCurve.hxx>
#include <Geom2d_TrimmedCurve.hxx>
#include <GeomLib.hxx>
#include <GeomLib_IsPlanarSurface.hxx>
#include <Draw.hxx>
#include <DrawTrSurf.hxx>
#include <DBRep.hxx>
+#include <Geom_BoundedSurface.hxx>
static Standard_Boolean Affich = 0;
#endif
}
if (uclose && (isec==NbLaw)) {
- UpdateEdge(TopoDS::Edge(UEdge(1, ipath)),
- S, !exuv, ULast);
- UEdge(isec+1, ipath) = UEdge(1, ipath);
+ if (UEdge(1, ipath).IsNull()) //degenerated case
+ {
+ UEdge(isec+1, ipath) = BuildEdge(S, !exuv, ULast,
+ Vertex(isec+1, ipath),
+ Vertex(isec+1, ipath+1),
+ myTol3d);
+ }
+ else {
+ UpdateEdge(TopoDS::Edge(UEdge(1, ipath)),
+ S, !exuv, ULast);
+ UEdge(isec+1, ipath) = UEdge(1, ipath);
+ }
}
else {
if (UEdge(isec+1, ipath).IsNull())
S, exuv, VFirst);
if (vclose && (ipath == NbPath)) {
- UpdateEdge(TopoDS::Edge(VEdge(isec, 1)),
- S, exuv, VLast);
- VEdge(isec, ipath+1) = VEdge(isec, 1);
+ if (VEdge(isec, 1).IsNull()) //degenerated case
+ {
+ VEdge(isec, ipath+1) = BuildEdge(S, exuv, VLast,
+ Vertex(isec , ipath+1),
+ Vertex(isec+1, ipath+1),
+ myTol3d);
+ }
+ else {
+ UpdateEdge(TopoDS::Edge(VEdge(isec, 1)),
+ S, exuv, VLast);
+ VEdge(isec, ipath+1) = VEdge(isec, 1);
+ }
}
else if (VEdge(isec, ipath+1).IsNull())
VEdge(isec, ipath+1) = BuildEdge(S, exuv, VLast,