Merge pull request #7267 from Roy-043/Draft-Avoid-faulty-Base.Placement.rotate()

Draft: Avoid faulty Base.Placement.rotate() in draftobjects.array.py
This commit is contained in:
Yorik van Havre
2022-09-05 11:16:13 +02:00
committed by GitHub

View File

@@ -471,26 +471,18 @@ def polar_placements(base_placement,
if number == 0:
return placements
spin = App.Placement(App.Vector(), base_placement.Rotation)
pl = App.Placement(base_placement.Base, App.Rotation())
center = center.sub(base_placement.Base)
if angle == 360:
fraction = float(angle)/number
fraction = float(angle) / number
else:
fraction = float(angle)/(number - 1)
center_tuple = DraftVecUtils.tup(center)
axis_tuple = DraftVecUtils.tup(axis)
fraction = float(angle) / (number - 1)
for i in range(number - 1):
currangle = fraction + (i*fraction)
npl = pl.copy()
npl.rotate(center_tuple, axis_tuple, currangle)
npl = npl.multiply(spin)
currangle = fraction + (i * fraction)
npl = base_placement.copy()
npl.rotate(center, axis, currangle, comp=True)
if axisvector:
if not DraftVecUtils.isNull(axisvector):
npl.translate(App.Vector(axisvector).multiply(i+1))
npl.translate(App.Vector(axisvector).multiply(i + 1))
placements.append(npl)
return placements
@@ -512,20 +504,18 @@ def circ_placements(base_placement,
for xcount in range(1, circle_number):
rc = xcount * r_distance
trans = App.Vector(direction).multiply(rc)
c = 2 * rc * math.pi
n = math.floor(c / tan_distance)
n = int(math.floor(n / symmetry) * symmetry)
if n == 0:
continue
angle = 360.0/n
angle = 360.0 / n
for ycount in range(0, n):
npl = base_placement.copy()
trans = App.Vector(direction).multiply(rc)
npl.translate(trans)
npl.rotate(npl.Rotation.inverted().multVec(center-trans),
axis,
ycount * angle)
npl.rotate(center, axis, ycount * angle, comp=True)
placements.append(npl)
return placements