I recognize that this is an old thread. While searching for a better answer to the whole "room tag with length and width" quandary, I thought I would at least share the best solution I have come up with so far. If anyone has a better solution I would love to hear it!
I am specifically responding to post #7 where a.crawford asks about tags using the formula from ToanDN always returning the smallest room dimension first thus resulting in tags that sometimes list the "length" first and sometimes list the "width" first. (By the way, thank you ToanDN for adding the if statement to that formula to address square rooms!)
So far, my solution to a.crawford's question has been to create a tag with some overlapping labels that are turned on or off with visibility parameters. All of these are in ONE tag family with multiple "types" inside of it. I call the family "Room Tag - ALL"
First, I have a tag type called "RT Size H" with a label for horizontal rooms that uses the formula "Area / RmShort" as the first calculated formula to return a value I call "RmLong". Then it uses the "if(Area = (Perimeter / 4) ^ 2, Perimeter / 4, ((Perimeter / 2) - sqrt((Perimeter / 2) ^ 2 - 4 * Area)) / 2)" formula for the second calculated parameter to return a value I call "RmShort". The label for this "size" is turned on and off with a parameter I call "Show Size H".
Next I have a second tag type called "RT Size V" for vertical rooms with a second overlapping label where the same formulas are used but their order is reversed so that the short value is first and the long value is second. That label is turned on and off with a "Show Size V" visibility parameter.
That hopefully answers a.craford's question. So far so good.
Here is where it gets a bit more messy. There are obviously rooms that are not rectangular. For those, I have additional overlapping labels (turned on and off by more visibility parameters) that allow me to show the room square footage or a manually entered width and length. I have the manual labels in a different color until printing to remind me to make sure that it is up to date. I may start using a schedulable bounding box something like ml offered in post #12 and a scheduled "Manual Size" parameter so that I can use a schedule to quickly check and update manual room sizes.
Ok, still not too messy (other than wishing there was a better way to avoid the manual sizes), but there is more... You find that sometimes you only want the room name and no size, so I have a type for that scenario. Then you find that sometimes the name is too wide and you need to have a name label that forces wrapping so I have a type for that. Then you realize that you need the wrapping version for when the room size is shown for the horizontal rooms and the vertical rooms and for when square feet or a manual size are shown. You guessed it... I have types for those too. Then what if you need a name label in a smaller font for small rooms like closets? Now you need a type for each variant with that smaller font. Heaven forbid you also need smaller font that wraps... Ridiculous! I really wish Revit allowed a better way to control wrapping or allowed instance parameters (instead of just type parameters) for tags. That would make for a LOT less tag types!
All of that is to say nothing of room tag types to show room numbers, or floor finishes, or ceiling heights! Yep, I have visibility parameters and types for those too. Anyone feeling over-TYPED yet?
Hopefully I at least offered a possible solution to getting tags to consistently show the room "width" first.
Anyone have a better solution to avoid all the tag types?? Please!!!