Transform Each always uses visible preview bounds instead of expected geometric bounds, ignoring the state of Use Preview Bounds option
Rotate via Transform Each incorrectly places reference point.
1. Version: AI-CC 22.0.0
2. Steps taken:
Objects: Triangles with 1:1 height/width ratios. Stroked with stroke centered on vector and sharp corners.
Operation: Rotation via Transform Each command with a centered reference point.
Expected result:
Since the vector was contained within a square bounding box (1:1 H:W), I expected the triangles to rotate without changing XY location.Actual result:
Rotations happened off-center, slightly moving the triangle toward the point that did not align with one of the bounding-box corners.
Additional Testing:
I tested the behavior of both the Rotate tool and the Rotate command with a centered reference point and they performed as expected with the bounding box remaining at the same XY coordinates.
I then tested the Transform Each command on a triangle without a stroke and found that it also performed as expected, rotating around the center point without shifting the XY coordinates of the bounding box.
Finally, I increased my stroke size to be very large and tested the Transform Each rotation command again and found that the XY offset was directly related to the width of the stroke outside the vector path.
Conclusion: When performing a rotation, the Transform each tool calculates the center point based on the visible bounds of an object instead of the geometric bounds. Given that with triangles, the stroke is approximately twice as wide at the corners vs the edges, this shifts the reference point to be off-center compared to the actual vector, causing an incorrectly rotated vector.
Fix: Ensure that the Transform Each command correctly calculates the reference points based on the vector alone instead of the visible bounds of the object. (or better yet, add this as a checkbox option... there IS one more spot available to even out the second column of checkboxes, and I can see there being times when I would want to transform based on visible bounds)
-
A simple demo