I have a test project of this but its in no shape to share. Just a bunch of jibberish.
I was creating a 'ghost' object and using its collider to test for clashes with other objects. If there was a collision then it considered it unplaceable. No collisions meant you could build it there on the next click. It seemed to be a matter of managing states and carefully setting up conditions to go through the building process, like clicking the icon, then spawning the ghost object and waiting for a click and on click do the test for collisions, then if it clears then create a real object there and remove the ghost object.
I'll see if I can clean up the project and make something comprehensible for you to look at.