• Global community
• Language:
• Deutsch
• English
• Español
• Français
• Português
• 日本語コミュニティ
Dedicated community for Japanese speakers
• 한국 커뮤니티
Dedicated community for Korean speakers
Exit
• Shape layer resizing from non-centered anchor poin...

# Shape layer resizing from non-centered anchor point

Explorer ,
Dec 22, 2020 Dec 22, 2020

Copied

I'm sorry the title is confusing. I'm not sure how to describe this more succintly, but an example will tell you what I'm after:

I have a shape layer, a rectangle with rounded corners. I want it anchored from the top edge and I want to maintain the same radius of the rounded corners no matter what size changes I make to the rectangle. The size property seems to ignore both the layer anchor point and the (smaller) shape anchor point. Changes to the size property are anchored in the center of the shape. All I can get to work is an expression. It works great, but there must be an easier way that I'm missing! Can anyone tell me an easier way?

Here's my expression solution:

On the Rectangle Path 1 > Position property

``````x = content("Rectangle 1").content("Rectangle Path 1").position[0];
y = content("Rectangle 1").content("Rectangle Path 1").position[1];
y += .5*content("Rectangle 1").content("Rectangle Path 1").size[1];
[x,y]``````

Essentially I have the shape positioning itself according to the size property, freezing the top edge in place no matter what height changes I make to Rectangle 1.

Any tips appreciated. Thanks!

TOPICS
Expressions , How to

Views

4.8K

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more

Valorous Hero , Dec 22, 2020 Dec 22, 2020

This is how it's done. However, it's much more intuitive to apply the Expression to the Rectangle's Content>Transform>AnchorPoint property.

And your Expression can be simplified since you're only wanting to offset the AnchorPoint's y value.

y = -.5*content("Rectangle 1").content("Rectangle Path 1").size[1];
[0,y]

8 Replies 8
Valorous Hero ,
Dec 22, 2020 Dec 22, 2020

Copied

This is how it's done. However, it's much more intuitive to apply the Expression to the Rectangle's Content>Transform>AnchorPoint property.

And your Expression can be simplified since you're only wanting to offset the AnchorPoint's y value.

y = -.5*content("Rectangle 1").content("Rectangle Path 1").size[1];
[0,y]

Motion Graphics Brand Guidelines & Motion Graphics Responsive Design Toolkits

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Explorer ,
Dec 30, 2020 Dec 30, 2020

Copied

Thank you Roland!

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Valorous Hero ,
Dec 30, 2020 Dec 30, 2020

Copied

It took you a while to come back onboard, Michael.
😉

Do keep us in mind as you push ahead in 2021 — Happy New Year to You and Your Lovely Ones.

Motion Graphics Brand Guidelines & Motion Graphics Responsive Design Toolkits

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Oct 27, 2023 Oct 27, 2023

Copied

Is there any way to use this expression for both X and Y axes? I've been messing around for like an hour trying to get my rectangle to grow from the bottom left corner, to no avail.

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Mar 29, 2021 Mar 29, 2021

Copied

It's great to have a solution but how lame is it that we need to write code to overcome a system that completely ignores 2 anchor points! 🙂

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Sep 13, 2022 Sep 13, 2022

Copied

Just another way Adobe products actively work against it's users.

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
Explorer ,
Sep 22, 2023 Sep 22, 2023

Copied

@Roland Kahlenberg 's solution works perfectly. It could also be applied to the x-axis:

``````x = -.5*content("Rectangle 1").content("Rectangle Path 1").size[0];
[x,0]``````

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
New Here ,
Jun 07, 2024 Jun 07, 2024

Copied

LATEST

It's really helped me bro. Thanks a lot