You have described two issues that need resolving.
Firstly, you need to create a copy of an object and position it differently:
var copy = original.clone();
scene.add(copy);
copy.position.set(10, 20, 30);
The second problem involves moving an object in Object space rather than World space. This means that changing the position.x of an object (such as a window) that is a child of a rotated object will result in the object moving relative to its rotated parent.
If you are working on an editor, you can utilize SceneUtils to simplify this process...
To handle this issue, you can detach the window at the beginning of your edit and attach it to the scene using SceneUtils.detach. Then make the necessary position adjustments and finally attach it back to the original object using SceneUtils.attach.
SceneUtils ensures that the visual transformation remains consistent during the detach and attach operations within the scene hierarchy.
edit: To tackle the scenarios mentioned in the comments without complication, consider using additional intermediate nodes. You can set up scaling and other transformations on the child nodes, updating their matrices and then setting matrixAutoUpdate = false if performance concerns arise.
For example:
{"root", scale:1, children:[anchor1, anchor2]}
{"anchor1" scale:1, children:[wall]} {"anchor2" scale:1, children:[wall2]}
This way, manipulating the anchors or root will allow you to move objects while isolating the scaling of "wall" within its own subtree.