I am looking for an algorithm that allows me to scale a 3D model with certain fixed edges. For example scaling up a window should have the frame remain a fixed width while the length of the frame pieces increases or a kitchen sink should have the tap remain at a fixed size while the rest increases.
Note that in the example it's a 2D model while in reality it's a 3D model, scaling can also happen along certain axis (so only scaling over the Z-axis, rather than over all axis at the same time).
Performance is of minor concern(it's a small part of the loading sequence to which I can allocate an extra thread) so a c#/pseudocode solution is acceptable, it doesn't have to be implementable as a shader.
So far I was thinking about some kind of energy formulation/graph based system but I cannot get that to work with possible with death ends in the model. I looked for scientific papers on the issue but couldn't find the right paper (I vaguely remember there being one I learned about in university).
edit: it should also be able to handle situations like this: where the parts that shouldn't scale are intermixed with the geometry of the object, this could also (in you don't want all of this to focus on architecture) be something like the eyes of an animal.