diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 8c105a805..800af91db 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -1817,7 +1817,7 @@ def getSVG(obj,scale=1,linewidth=0.35,fontsize=12,fillstyle="shape color",direct bspline=e.Curve.toBSpline(e.FirstParameter,e.LastParameter) if bspline.Degree > 3 or bspline.isRational(): try: - bspline=bspline.approximateBSpline(0.05,20, 3,'C0') + bspline=bspline.approximateBSpline(0.05,50, 3,'C0') except RuntimeError: print("Debug: unable to approximate bspline") if bspline.Degree <= 3 and not bspline.isRational(): diff --git a/src/Mod/Drawing/App/DrawingExport.cpp b/src/Mod/Drawing/App/DrawingExport.cpp index 426cc1993..33a6f0a58 100644 --- a/src/Mod/Drawing/App/DrawingExport.cpp +++ b/src/Mod/Drawing/App/DrawingExport.cpp @@ -157,7 +157,7 @@ TopoDS_Edge DrawingOutput::asCircle(const BRepAdaptor_Curve& c) const TopoDS_Edge DrawingOutput::asBSpline(const BRepAdaptor_Curve& c, int maxDegree) const { Standard_Real tol3D = 0.001; - Standard_Integer maxSegment = 10; + Standard_Integer maxSegment = 50; Handle_BRepAdaptor_HCurve hCurve = new BRepAdaptor_HCurve(c); // approximate the curve using a tolerance Approx_Curve3d approx(hCurve,tol3D,GeomAbs_C0,maxSegment,maxDegree); @@ -355,7 +355,7 @@ void SVGOutput::printBSpline(const BRepAdaptor_Curve& c, int id, std::ostream& o Handle_Geom_BSplineCurve spline = c.BSpline(); if (spline->Degree() > 3 || spline->IsRational()) { Standard_Real tol3D = 0.001; - Standard_Integer maxDegree = 3, maxSegment = 10; + Standard_Integer maxDegree = 3, maxSegment = 50; Handle_BRepAdaptor_HCurve hCurve = new BRepAdaptor_HCurve(c); // approximate the curve using a tolerance Approx_Curve3d approx(hCurve,tol3D,GeomAbs_C0,maxSegment,maxDegree); @@ -628,7 +628,7 @@ void DXFOutput::printBSpline(const BRepAdaptor_Curve& c, int id, std::ostream& o Handle_Geom_BSplineCurve spline = c.BSpline(); if (spline->Degree() > 3 || spline->IsRational()) { Standard_Real tol3D = 0.001; - Standard_Integer maxDegree = 3, maxSegment = 10; + Standard_Integer maxDegree = 3, maxSegment = 50; Handle_BRepAdaptor_HCurve hCurve = new BRepAdaptor_HCurve(c); // approximate the curve using a tolerance Approx_Curve3d approx(hCurve,tol3D,GeomAbs_C0,maxSegment,maxDegree);