If you are building the map yourself, you could use a single waypoint located exactly at the position of just one of the pillars. Then when you load up the game, a script will read the waypoint for the layout and orientation of pillars. For instance, if you have all square rooms, you can place the lower left corner pillar and put on it a xCount and yCount and an offset value. Then have the script create and build pillars to match the layout.
If instead you have an L or X shaped room, you could provide another option on the waypoint telling it type = [L|X|T|U|Rect] and then specify a number of variables to match that setup. As an example, for an L room, you could supply rows and cols like Col1=6 Col2=6 Col3=2 Col4=2 Col5=2.
Another way to use this method to make multiple shapes is to use multiple waypoints detected by the same script. To make a U shape, you could place the lower left rectangle builder and tell it do make a set 2x6, another waypoint located a few column spacings to the right could make a set 2x2, and then finish with another set to the right that makes another 2x6.
Depending on the size and shape of your room, this could be very handy if you make them into prefabs and just drop them on the map.
A more creative script and a more creative set of variables makes a better automatic function.
A really neat way of making a specific layout is to include a little mesh readout in the code. Simply give your waypoint two variables, with one variable being row length, and the other being the layout code. Knowing the spacing of your room pillars, make a grid of zeros and ones on graph paper or something, then remove the space and put it all on one line, either from top-left to bottom right, or from bottom-left to top-right, depending on how you write your builder script.
110011 110000 110011
001100 110000 110011
110011 X 111111 L 111111 U
convert to single line bottom to top left to right, using variable RowLength = 6
110011001100110011 = X or 111111110000110000 = L or 111111110011110011 = U