Suggestion on how to handle applying scale on Multiuser meshes

I have a architectural model that uses a lot of linked data. Now I got really far in modeling I noticed something was wrong in proportions (I only had top view plans). I fixed the proportions by scaling everything together and it worked fine. But now there is a lot of objects with non-uniform scale which makes bevels and other modifiers non-uniform.

I already knew that I can’t apply transform on multiuser data, however why is that anyway?
I changed the function in object_transform.c to skip the multiuser check and it worked fine with the expected side-effect of double transform on objects using the same data. That can be easily fixed by reseting the transform.

I am probably missing something simple, but if its only because of this side effect that the apply transforms on multiuser data is disabled, it could be easily bypassed by alerting the user and giving the options to:

  1. cancel
  2. apply transform
  3. apply transform and reset on other users

Just a small suggestion.

i think the problem is that apply transform is done on the object level. The user wants to alter an object while another unselected object gets altered as well. Of course, they share the same mesh data so they’re not that unrelated but the objects itself are different so the side effect is very much undesired.

For me the more intuitive behavior would be to implicitly make the object single user and then apply the transformation.

Yes, however in my case I would want them to share the same mesh data after applying the transform, since if I make modifications at the mesh level I would want it to propagate. Thats the whole point of using linked data right?

For example now I have 10 doors done from a cube, I wouldn’t want them to break the link as I want to add detail at later time and have it applied to all doors.

For the side effect, thats why I proposed the prompt.

This makes a lot of sense and probably wouldn’t such a hard thing to implement ?


It may be best suited as an addon, but I don’t think its possible as is, since the check for linked data is at low level and its pretty exclusive in nature (no way to bypass it from python for example AFAIK). I enabled it (apply to multiuser) and works fine for my purposes so far.

Select one of the linked object
Shift+L > object & data
U > object & data
Apply scale
Ctrl+L > object data

All objects sizes are after the same than active object, which is probably not what you want.

I believe the tricky part in allowing it would be that linked objects can be of different scales even though they share the same data, there doesn’t seem to be any logic in allowing different sizes to all have a scale of (1,1,1).

A possible way around it development-wise would be that all objects get set to the scale of the active one when scaling is applied, it would mean having to size some objects again, but it’s better than just not having such functionality.

I use the same technique as JuhaW, but it doesn’t really work for objects with different scales. Not a problem for my workflow, but I could see how it might be problematic if you were working with differently scaled copies.

Btw, that technique is super easy to script, it would make a great addon. a sort of “super” apply scale.