You could do my approach to this problem. I'm a lazyass so instead of rebuilding the same chair or even duplicating it, I made a scriptobject which contains data for each brick in the build and made a datablock. The datablock being the a random brick with the width and length of the chair. I linked the scriptobject to the base datablock and every time the base is planted, the base is deleted and the chair is planted where the base should go. Of course, it ghosts all of the bricks so I can correctly rotate it accordingly. It's not efficient and was yelled at for using scriptobjects for this but it sure as hell works like it should.