From b22c33ab61300b2aee90c153ff12fc217eb79415 Mon Sep 17 00:00:00 2001 From: ageeye <5332429+ageeye@users.noreply.github.com> Date: Tue, 24 Dec 2019 08:10:56 +0100 Subject: [PATCH] Fix the Draft Array polar type. Rotate first global and then object own rotation(spin) of placement. --- src/Mod/Draft/Draft.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 1af82adcf7..b1f3e7deae 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -5902,10 +5902,13 @@ class _Array(_DraftLink): base.append(npl) return base - def polarArray(self,pl,center,angle,num,axis,axisvector): + def polarArray(self,spl,center,angle,num,axis,axisvector): #print("angle ",angle," num ",num) import Part - base = [pl.copy()] + spin = FreeCAD.Placement(Vector(), spl.Rotation) + pl = FreeCAD.Placement(spl.Base, FreeCAD.Rotation()) + center = center.sub(spl.Base) + base = [spl.copy()] if angle == 360: fraction = float(angle)/num else: @@ -5916,6 +5919,7 @@ class _Array(_DraftLink): currangle = fraction + (i*fraction) npl = pl.copy() npl.rotate(DraftVecUtils.tup(center), DraftVecUtils.tup(axis), currangle) + npl = npl.multiply(spin) if axisvector: if not DraftVecUtils.isNull(axisvector): npl.translate(FreeCAD.Vector(axisvector).multiply(i+1))