importDXF: provide polygon fallback for splines
with invalid multiplicities
This commit is contained in:
parent
ad54783016
commit
c90c2441d2
|
@ -563,16 +563,17 @@ def drawSolid(solid):
|
||||||
warn(solid)
|
warn(solid)
|
||||||
return None
|
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 (dxfCreateDraft or dxfCreateSketch) and (not forceShape):
|
||||||
if dxfDiscretizeCurves:
|
if dxfDiscretizeCurves or alwaysDiscretize:
|
||||||
ob = Draft.makeWire(verts)
|
ob = Draft.makeWire(verts)
|
||||||
else:
|
else:
|
||||||
ob = Draft.makeBSpline(verts)
|
ob = Draft.makeBSpline(verts)
|
||||||
ob.Closed = closed
|
ob.Closed = closed
|
||||||
return ob
|
return ob
|
||||||
else:
|
else:
|
||||||
if dxfDiscretizeCurves:
|
if dxfDiscretizeCurves or alwaysDiscretize:
|
||||||
sh = Part.makePolygon(verts+[verts[0]])
|
sh = Part.makePolygon(verts+[verts[0]])
|
||||||
else:
|
else:
|
||||||
sp = Part.BSplineCurve()
|
sp = Part.BSplineCurve()
|
||||||
|
@ -693,6 +694,12 @@ non-parametric curve"""
|
||||||
previousknot = knotvalue
|
previousknot = knotvalue
|
||||||
knotvector.append(knotvalue)
|
knotvector.append(knotvalue)
|
||||||
multvector.append(mult)
|
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:
|
try:
|
||||||
bspline=Part.BSplineCurve()
|
bspline=Part.BSplineCurve()
|
||||||
bspline.buildFromPolesMultsKnots(poles=controlpoints,mults=multvector,\
|
bspline.buildFromPolesMultsKnots(poles=controlpoints,mults=multvector,\
|
||||||
|
|
Loading…
Reference in New Issue
Block a user