Texture a stretched component without stretching the texture

When I apply a texture to a component that has been stretched, the texture is stretched. I don’t want it to stretch. For example, if I have a component of a wall 1’ long. I put a brick texture on it. It looks right. But, if I stretch the wall, the texture is stretched and does not look right.
Is there a way to avoid that?

Yes you can scale it’s defenition (right click > scale definition)
However if you have non-scaled copies of the same components this will mess up their textures.

Thank you. That is an interesting capability I didn’t know about.
Unfortunately, it doesn’t do what I had hoped. That is, I have multiple copies of the component, each scaled differently. However, in each case I want the texture to be the same. That is, an 8" brick is 8" whether it is on a component that is stretched to be 4’ long or 20’ long.

If you use groups (or make your components unique), you can stretch the geometry without scaling it.

For example:

BTW, this isn’t limited to only stretching it in one direction:

Maybe something like this?

2 Likes

Yes. How did you do that?

And, your top member didn’t stretch?

The first is editing inside a component that has textures applied to faces., using the move tool, not scaling the component. Other instances will also be stretched.

The second example is using Fredoscale plugin. The result will no longer be a component but be transformed into a group

@pbacot is correct in that I used Fredoscale.

This is not correct, though. The new wall is still a component but it is made unique from the first.

Thanks guys. This is very cool. Unfortunately, I discovered it still has one problem I was hoping to overcome. That is, if I make a change in the initial component, it will not be reflected in the copies, because they are unique components independent of the initial one.

I took another look at using dynamic components. I ran into two problems: 1) Dynamic components are not work on my computer (SU 2018 Pro) apparently because there was an update, but Update Manager won’t update it. 2) I don’t see how to use a texture in a dynamic component other than a color. It seems like you need to input something like “green” to get a color, but the explanation doesn’t say anything about a texture such as wood siding.

The result will no longer be a component but be transformed into a group

This is not correct, though. The new wall is still a component but it is made unique from the first.

I see. I was thinking of when it is done to the component, not inside the component, which you did.

OP is trying to scale components and have the texture size remain. All the responses don’t address what he is trying to do, but what he wants to do may not be possible. It’s a case,where he wants to keep the same definition and be able to scale the different instances.

Is Fredoscale up to date?

No. I only opened the component to show that it was a component and related to the first one. Then I got out of edit mode and ran Box Scale.

I think that’s it. Textures aside, scaling a copy of a component invites other problems when editing them later. For example here are two instances of the same component. The tall one is scaled relative to the short one. Modifying the geometry in one creates a different result in the other.

I see. I don’t know why I thought it made groups. Fredoscale makes new components.

1 Like

I think the change in the stretched component in your example is the expected behavior. i.e. everything is stretched. What I was hoping to accomplish was to stretch everything except for the texture. I thought maybe if I applied the texture to the components after stretching, the texture would stay the same. But it stretches whether applied inside or outside of the component.

If you’re hoping to fix the issue with Dynamic Components, updating it from the extension warehouse sometimes works better than from the Manager. Whichever way you choose to update, you must be logged in first.

Extension Manager finally updated Dynamic Components. When I tested the textures in a dynamic component, it acted the same. i.e. if I enlarged the component the texture stretched.

A scaled face is going to display a scaled texture. Dynamic Components won’t change that.To change the size of a face without affecting the scale of the texture, you’ll need to do something other than scaling.

1 Like

I found a way to handle this problem without any plugin. Don’t know if you’re still searching a solution…


In the main component, I have made a subcomponent : just a simple face on which I have put the texture I want. Then, in the main component, I make the size of the sub component fixed (using the = sign).
then, I add to this main component a material attribut in which I say to use the texture I put on the square (=“TextureName”). And that’s it !

Great!!!

Yours is an interesting solution but I haven’t been able to replicate it. is there a chance we can take a look at your Dynamic Component Attributes dialog?

Best, HJ