How do I create a relocated clone of a modified object that automatically tracks changes to the original's modifiers?

I have a Left object that has a lot of boolean modifiers.

I would like to create a second object (Right) that is a mirrored clone of that first object, but in a different location, so I can apply a few extra modifiers to it.

If I create Right by cloning the Left object and all the objects that provide the boolean modifiers, then any later changes I make to Left and its modifiers must be performed again on Right.

The specific use case is two halves of a 3D print, and I want one side to have wider screw holes (so the thread only bites one of the halves, and the other half has clearance for the screw head which doesn't belong on the first side).

• Have you tried creating a linked duplicate with Alt+D? Commented Jun 12, 2022 at 20:38
• A linked duplicate created with Alt+D would indeed be a duplicate, but moving it would cause the boolean modifiers to be wrong, and any changes made to the modifier stack on the original late ron would not be mirrored in the duplicate. Commented Jun 13, 2022 at 3:44

This may not be the best workflow, but I found something that accomplishes the mission for now:

I eventually found the GeometryNodes modifier and experimented with that.

The technique I eventually developed was to have a series of empty-mesh objects with Boolean Union modifiers.

The first object (LeftPrime) is a mesh with no vertices and a Boolean Union modifier pointed at the Left object. The next modifier is a GeometryNode to translate it by several millimeters. The third modifier is a Boolean Difference to carve some holes for screws.

The second object (Right) is another instance of the no-vertex mesh. Its first modifier is a Boolean Union pointed at LeftPrime. Its last modifier is a GeometryNode to scale x *= -1 to reflect it about the X axis.

I suspect that this second object is not strictly necessary, since this modifier could be the fourth one on LeftPrime, but keeping LeftPrime and Right separate makes it easier to fine-tune the bore holes for the boolean difference modifier.

One problem I encountered was that if I performed the boolean difference after a reflection the face normals on the result were non-manifold (which makes gcode slicers grumpy). That is one reason the mirroring is a separate GeometryNodes modifier from the initial translation.