Skip to content

Commit

Permalink
importDXF: provide polygon fallback for splines
Browse files Browse the repository at this point in the history
with invalid multiplicities
  • Loading branch information
5263 authored and yorikvanhavre committed Jan 16, 2015
1 parent ad54783 commit c90c244
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/Mod/Draft/importDXF.py
Expand Up @@ -563,16 +563,17 @@ def drawSolid(solid):
warn(solid)
return None

def drawSplineIterpolation(verts,closed=False,forceShape=False):
def drawSplineIterpolation(verts,closed=False,forceShape=False,\
alwaysDiscretize=False):
if (dxfCreateDraft or dxfCreateSketch) and (not forceShape):
if dxfDiscretizeCurves:
if dxfDiscretizeCurves or alwaysDiscretize:
ob = Draft.makeWire(verts)
else:
ob = Draft.makeBSpline(verts)
ob.Closed = closed
return ob
else:
if dxfDiscretizeCurves:
if dxfDiscretizeCurves or alwaysDiscretize:
sh = Part.makePolygon(verts+[verts[0]])
else:
sp = Part.BSplineCurve()
Expand Down Expand Up @@ -693,6 +694,12 @@ def drawSpline(spline,forceShape=False):
previousknot = knotvalue
knotvector.append(knotvalue)
multvector.append(mult)
innermults = multvector[:] if periodic else multvector[1:-1]
if any(m>degree for m in innermults):
#raise ValueError('Invalid multiplicities')
#warn('polygon fallback on %s' %spline)
return drawSplineIterpolation(controlpoints,closed=closed,\
forceShape=forceShape,alwaysDiscretize=True)
try:
bspline=Part.BSplineCurve()
bspline.buildFromPolesMultsKnots(poles=controlpoints,mults=multvector,\
Expand Down

0 comments on commit c90c244

Please sign in to comment.