Here are two ways to do this:
(1) The way you are doing it - On your building blueprint, attach a box collision volume that is 25% smaller than your building. Use that for overlap tests (you can make an extra collision channel for just that type if you are worried about performance).
(2) This is another way I’d consider handling it (it may help in the future with performance): create an array of ints, actor refs, or structures 10,000 long. Create a function which returns an index from (x,y) as 100*x+y. Create a function setGridCell(x,y) which sets a location in the array, and GetGridCell(x,y) which gets a location from the array. Now before you place you can query all 4 grid cells to see if anything is there. If there isn’t, you can set the grid cells to either a flag (true or false), the actor ref, or a structure that you can put additional data in.
Let me know if that works for you!