Being defeated by Revit® is never a good feeling, especially when your solution is a shoe in for beating Revit® at its own game and circumventing one of its biggest known and unresolved nuances. I recently had a brainstorm about how to solve the issues surrounding flanges that plague every piping designer, content builder, and detailer using Revit® from what I can surmise anyway. It hit me while I was out on a hike, of all places, like a hit on the back of the head. I had just a few days prior attended a live demo for an add-in by Victaulic. Its a pretty slick tool set by the way. You can check it out Here. The one approach they took that caught my attention, and ultimately inspired my brainstorm, was that to keep the Vic coupling instances independent from the pipe fittings themselves and not have to use nested families was to set the family category of the couplings to a flange and then add them as such to the routing preferences. OH! That's what the "Flange" routing preference is for! I think flange is the wrong name for it, but I get it, its meant to be used for flanges so they called it "Flange" instead of oh say "connection method" or something more concise. At any rate, I understood the logic, or so I thought, and my brain went to work on breaking it down and reapplying it in the background. The concept was simple, add dummy family as the primary flange set to All, and then the real flange as the secondary, also set to all. Then I thought, why use a dummy, why not put this solution to work for me, why not use it to add weld gaps, fusion weld losses, or identify mechanical connections that could be quantified later during fabrication to help estimate cost. It was genius, and I couldn't wait to beta test it.
Quick backstory for those who aren't familiar with the plight of the Revit® piping modeler, flanges when set up the logical way are inherently difficult to deal with for two reasons. First, to make the "flange" function operate properly, the primary connector must be set to the flange face side, this causes them to "flip" on the pipe, and lead to what we have come to refer them as "flippin' flanges". Second, if the flange minimum size is set to "All" in the routing preferences, you get something like the image below, flanges EVERYWHERE. On the flip side, no pun intended, if you set the minimum size to "none", they get gobbled up every time the routing preferences are reapplied. Which by the way happens a lot more than you probably realize. There are a lot of work arounds out there and I'm fairly certain I've tried them all. They're all clever in their own way and get the job done to a point, but why should such work aronds even need to exist and in such capacity that if you search "Revit®" and "Flange" you get forum after forum of discussion.
But I digress, the next week at work I set out to carve out a few hours for development and testing. After a few trial by fire attempts to get it working I found a few other tweaks that would have to be made in order for it to work. First, the primary connector on any flanges would have to be changed to the pipe side of the flange instead of the flange face side. This would force the flange to mate on the weld or socket side instead of the flange face. I would also have to change the part type of our weld gap families from union to flange so that they could be selected as a flange in the routing preferences.
Once I had those little bugs worked out, I was pleasantly surprised to find that my solution worked. No more flippin' flanges, no more hungry pipes gobbling up my flanges at valves, stable and clean. I was also pleasantly surprised that I was not getting weld gaps at each end of my direction fittings and at the pipe side of my flanges. I couldn't wait to refine the process and push the update to all of our routing preferences. I knew it would take a lot of work, but it would be worth it. The solution would save countless hours and frustration on future projects. With a weekend full of nothing but Pacific North West rain ahead of me, I set out to tackle the arduous task of updating all of our pipe types. I got through carbon steel butt welded, no problem, but noticed a few quarks that would require some change in workflow for our designers. The biggest of which was that Revit® was no longer automatically placing a reducer when the pipe was split and the size of one side was changed. Instead it placed the dummy flange. Fair enough, delete the dummy, trim the pipes and voila, reducer. Now onto the second type on my list, carbon steel threaded. Once again seemingly working well, but with a few new quarks. While playing with one of the quarks to find a new workflow, I came across an inherent Revit® shortcoming, wherein if there is a flange routing preference set to All, the Union setting is no longer used or valid. Like, not at all! What?! Totally overridden by the flange settings, to the point where it wouldn't even accept manually placing a union family into the pipe. This was deal breaker folks, and I was floored, but not so easily defeated. I played around with some other options, like changing the part type of the coupling that was set as the union. Multi-port seemed to be the most stable, but still not even close to optimal. For one, you can't break into pipe with a mult-port, it shoots it to the end of the pipe. Not to mention the fact that as a mutli-port part type I couldn't include it in the routing preferences, at least not in 2014, and therefore it wouldn't be able to catch a ride, so to speak, with the pipe type family. After a few hours testing, internal dialog, and to the surprise of my dogs, some external dialog. I admitted defeat and set out to back the changes I had made to our library thus far.
I'll admit, I probably should have dialed back my enthusiasm a little and did some further testing before trying to deploy the "fix". But I honestly never would have thought to test for an issue where a built in Revit® functionality completely negates another. My suggestion to to the folks at Autodesk® would be to add an MEP option to allow the users to select the routing preference, union or flange, to be the default or primary option to connect pipe. I really thought I had this one this one by the horns and found a solution that was not a work around, but an actual solution to the problem, and in all honesty I still feel like I did, but was thwarted by yet another inherent flaw leads to the piping industries hesitation to get on board with Revit. I will continue to try to find the one solution to this problem, because at the end of the day, despite obvious short comings like this one, Revit is still my favorite design platform and I enjoy the hell out of challenges like this.