Revit 2022 – Missing Fabrication Addins (temporary fix)

Update (2020.04.08): Autodesk released the Extension for MEP Fabrication 2022 on April 8th. You can get it from the Autodesk Desktop App or from your Autodesk Accounts Portal (manage.autodesk.com). This restores the MAJ Import/Export functionality and access to Fabrication Reports. It does NOT install the RME to FAB add-in. So part of the below guidance is still needed. You’ll want to copy the ADSK_Export.addin file per the below instructions. The other file is no longer needed and Autodesk’s newly released Extension will overwrite what’s needed if you used the below guidance.


If you’re an Autodesk Fabrication user and loaded up Revit 2022, you may have noticed some key Fabrication Add-ins are missing. It happens most every release. Deadlines for product releases always trump add-ins. This year, all the installers were reworked too so there was extra work I’m sure.

Don’t fear, they’ll get to them eventually. Just keep an eye on the Desktop App for when the updated Add-ins are release. In the mean time, here’s a temporary fix…

Enabling Fabrication Add-ins

To get the Fabrication Add-ins, you’ll need Revit 2021 installed and have those add-ins loaded in there. From there, there’s 2 files you’ll need to copy to a different folder.

Autodesk.MEPFabricationPart.Commands.Application.addin
ADSK_Export.addin

The first file enables MAJ Import/Export and Fabrication Reports. The second file enables the Fabrication RME Extension in the Add-ins Ribbon.

You copy them from this folder…

C:\ProgramData\Autodesk\Revit\Addins\2021

…to this folder…

C:\ProgramData\Autodesk\Revit\Addins\2022

Here’s what that looks like in Windows Explorer….

What This Looks Like in Revit

Once you copy those files, restart Revit to see the changes. Here’s a review of what that looks like…

MAJ Exports

MAJ Import

Fabrication Reports

A Parting Word

It should be noted that this work around should be considered “temporary”. You’re running 2021 Add-ins in 2022. The files you coped should be removed once the official 2022 Add-ins are released. This will ensure you get any fixes they may have added to the 2022 versions.

Fabrication Job Contains No Parts – Possible Fix?

Have you ever tried importing an MAJ into Revit and received the following error….Fabrication Job Contains No Parts.

There’s a lot of reasons this can occur and it’s NEVER because there are no parts. So much for Autodesk’s QA/QC and Error checking.

You may see this most commonly because parts used in the model contain data that’s no longer in your database. You’ve likely noticed from time to time database entries with curly braces around parts of the name like the following…

This happens when an entry in the database is used by an ITM but the database entry itself later gets deleted. Information is cached within the ITM so when it’s accessed, it creates a Proxy entry in your database if it was missing. Within the {Curley Braces} is the name of the object that created the entry.

While CADmep, ESTmep and CAMduct handle this fairly gracefully, Revit on the other hand does not. When it attempts to load an MAJ, it sees these entries and notices they’re missing from your database and prohibits you from importing the MAJ file. Revit thinks the database doesn’t match the MAJ and stops you cold!

A Possible Fix

If this is cause for the import error, you can use the following COD script to potentially work around the issue….

Take the following script and run in in CADmep, ESTmep or CAMduct. You should be logged in with Administrative Permissions while doing this. This script isn’t fixing Revit or the MAJ. What it’s doing is loading ALL the ITM’s from your Database Library into memory.

The process of loading all these ITM’s into memory creates all these proxy entries in your database. This way, when Revit attempts to import the MAJ, the data associated with those ITM’s are most likely present in your Database configuration. In many cases then results in a successful import of the MAJ.

If the Revit file you are importing the MAJ into already points to a Fabrication Configuration, you should reloaded the configuration FIRST before attempting to import the MAJ.

If for some reason this process still doesn’t work, verify that Revit is reading from the same database location as the version of CADmep, ESTmep or CAMduct where you ran the COD script.

In the event it still doesn’t work, there may be other reasons for the failure but this is often the most common, especially with MAJ’s created recently.

If it does work, you’ll want to use the other scripts I provide on this site to help analyze your database. You likely deleted those database entries in the first place for a reason. You either didn’t realize they were needed, or you didn’t know where they were used to repoint those ITM’s to a proper substitute. Those scripts can help you find which ITM’s use which database entries.

Hope this helps.

Digital Transformation for the Average Contractor (Part 1)

There’s a lot of buzzwords in the construction space. Digital Transformation…Industrialized Construction…Machine Learning….Generative Design…Augmented Reality…Drones…Robotics….and the list goes on. So what do you do? Today? Tomorrow? Next year? What actions do you take to prepare for a an unknown future? All while managing the challenges of your current projects, staff, backlog and cashflow.

I use the mechanical engineering/contracting industry in my examples. However the essence of what I’m about to say is applicable to almost any contractor. If you don’t have an unlimited budget, time and/or resources, knowing how to prepare for an uncertain future in the heat of battle can be alarming.

But it doesn’t have to be. You don’t need a crystal ball. You don’t need unlimited overhead and staff to properly prepare yourself and prevent yourself from becoming obsolete from business disruptors. What you need is a good plan. A plan that helps you understand what’s happening, why it’s happening and most importantly how to make the correct turns when you’re not sure exactly where you need to navigate.

The problem…

The contracting business is changing. This is creating a few big challenges to maintaining profitability and efficiency. To survive, we need to tackle these changes head on. Don’t worry, it’s not that hard.

What’s Driving This?

A lot of things are driving these changes, most of which can be grouped into one of two categories. The following lists outline some of the major trends and shifts occurring.

Current trends contributing to “Industrialized Construction”
“Technology Evolution” is driven by several changes.

If you look at any of these trends individually, that all seem obvious. Not only obvious, but it’s hard to argue that any of them are negative or harmful. In fact, they all seem like good things. And they are. But when they’re all happening in unison, all these “good things” are creating a lot of the problems the industry is currently experiencing.

The Chaos of Today

To help manage these disruptions, it’s helpful to understand what’s happening today. Below shows an example of today’s workflow. Most groups work in silos. As they work and create more data and information over the duration of a project, they start throwing it over the fence to others within an organization. Meanwhile, other parts or the organization throw data to them.

Existing project workflows…Separate groups and processes throwing data at each other.

For most this feels like we’re juggling a ball, an egg and a chainsaw. And while we’re juggling we’re also simultaneously in the middle of a game of dodgeball.

So what happens when…

  • We forget to throw data to others
  • Too much / too little information is thrown
  • We don’t catch data thrown to us
  • Too much / too little information is caught
  • We miss the catch or forget to throw
  • Information is caught or thrown early / late
  • We loose information
  • Information was unclear
  • We throw or catch data to fast / slow
  • Data is obsolete or unapproved
  • We get duplicate data

The Solution for Tomorrow

To combat these problems, we need a new process. The below is what we really want. A single stream of data everyone accesses. With this model, you don’t give anyone data, they inherently have access to the data you have which they need. It’s not a copy of the data or a report of the data. It’s access to the source data. Now, when someone needs information, they have access to it.

New project workflows…We all share in a pool of data.

Throughout the construction process, because our data is less fragmented, it’s easy to warehouse. This allows you to better inform design by pulling the historical data from the service group. Sales can now leverage this data to explain the lifecycle savings when your bid may be higher. In reality, any data from any phase can more readily be accessed from any other phase. Quality of the entire process improves when this happens.

A New Technology Stack

This “Future” process is very likely a utopian state we can never fully accomplish. At least not in our lifetime. But that doesn’t mean we can’t get closer. This doesn’t mean we can’t take a more thoughtful and meaningful approach to the solutions we use. The fact is we can. We may still have to use technology we would rather not. Things we can’t integrate as well as we’d like. But we can get closer.

The following are examples of a technology stack portfolio. Key technologies thoughtfully selected which form the backbone of your digital process.

Example of a “Microsoft / Autodesk” based Technology Stack.
Example of a “Trimble” based Technology Stack.

These are just two examples. You don’t have to follow these examples. Your technology stack may be mixed or match differently. You may even have different solutions than those shown in the example.

In these examples, we could use Building Data with Stratus, or Autodesk Fabrication with MSuite. Stratus and MSuite are both model based production management systems. They can both leverage your BIM platform and your BIM content and integrate with your company’s back end ERP system. For a mechanical (or electrical, general, etc.) contractor you can look at a more simplified representation below.

A good “Generic” Technology Stack Model.

Again, your model may differ. You may have two or three circles. The names in those circles may be different. But you shouldn’t have six or seven or twenty circles. It’s important that you put thought into how these systems can be used and work together. It’s also important that you understand their limitations.

This isn’t to say you don’t use a lot of additional applications. But they shouldn’t be major data stores without connectivity to some of the pillars in your technology stack. Ideally they’ll connect to one of the existing pillars but not be a major pillar in themselves.

Wrapup

This wasn’t really intended to be a roadmap. It’s more of a vision. Something you should be trying to achieve with careful thought and consideration. There’s no magic formula or combination. Nothing you should blindly copy and follow from others. Your technology stack needs to match your organization. The speed and effort to put it place based on your company culture and organizational readiness.

Regardless of how long it takes, the important thing is you’re working toward that vision. We don’t know what the future will bring in our industry. Some things will never change while others may abruptly disrupt your business. No matter what changes are forced upon you, the less impactful these changes will be the closer to this model you are. When required to, you’ll be better positions to respond in an agile manner.

In my next article, I’ll cover some things you can start doing right now that can help prepare you to implement this new model.

Renumber Revit Fab Parts – No Purchase or Coding Required

Most MEP contractors moving to Revit with Fabrication Parts at some point wrestle with renumbering parts. You can purchase tools or add-ins to make this easier or even write your own with Dynamo or C#.

But most contractors aren’t coders. And buying more software can also be a challenge. The good news is that those are not your only options, There’s some well written FREE Revit Add-Ins that make this a breeze.

Required Tools

Head over to DiRoot’s web site (https://diroots.com/) and download the OneFilter Add-In found here and the ReOrdering Add-In found here.

Once installed, you’ll find the tools in the DiRoots Ribbon in Revit along with any of their other tools you may have installed.

Getting Started

The following image shows 2 runs of Rectangular and 2 runs of Round duct work drawn in Revit using Fabrication Parts. One is drawn in a +2in WG service and the other -2in WG service. All duct has a tag configured to display the Fabrication Part’s Item Number property.

First Up – DiRoots OneFilter

Using the DiRoot’s OneFilter Add-In, you can easily select not just Fabrication Parts, but also select them based on their properties.

Once selected, you can see Revit selects the specified items in your model.

Next – DiRoots ReOrdering

Now that your desired parts are selected, you can use the DiRoots ReOrdering Add-In to renumber those parts.

After applying your renumbering parameters, you can see how Revit then displayed the updated Item Numbers for the Fabrication Parts.

Wrapup

As you can see, with a couple free (well written) utilities you can quickly and easily select and renumber your fabrication parts in Revit.

There’s a lot of other reasons beyond renumbering to use some of these Add-Ins. They’re very functional for a lot of workflows. Those uses are beyond the scope of this post but feel free to explore these Add-Ins or some of the other DiRoots tools when you get a chance. They’re some of the highest quality free Add-Ins for Revit than you’ll find anywhere.

COD Script Updates – 2020.07.08

I’ve made a couple updates to the Autodesk Fabrication script libraries. If you use them, you can download updated versions from here.

Scripts have been updated to include the Connector Material property found on CID/Patterns 522, 1522 & 2512 as shown below…

This property is intended to be used by a connector to specify a alternate material the connector can connect to. This allows a coupling to connect to alternate materials such as with transition couplings.

Credit for discovering the COD function to extract this property goes to Liz Fong at MacDonald Miller Facility Solutions in Seattle, WA.

Note: This property has also been added to the list of COD Item Properties located here.

Scripts Updated

  • Debug Scripts
    • Debug ITEM Connectors.cod
  • Job Item Scripts
    • WriteAllConnectors (Job).cod
    • WriteAll_Props (Job).cod
  • Library Item Scripts
    • WriteAllConnectors (Library).cod
    • WriteAll_Props (Library).cod

Fix – Revit Fabrication Parts Suddenly Become Invalid

If you’re using Revit 2018 or 2019 with Fabrication Parts, you may notice that upon loading or reloading your configuration some (or many) of your parts become “Invalid”.

I’m not talking about Fabrication Parts whose CID/Pattern isn’t supported in Revit. I’m referring to perfectly valid Fabrication Parts. Parts that once worked. They may even be currently in your model but are no longer active in your Parts Browser. Here’s a couple examples…

You may even notice valid parts become invalid after unloading a service or that invalid parts become valid again after loading a new service.

What’s happening is that your Fabrication Configuration’s Image Cache has become corrupt. The issue is in Revit 2018 and 2019. Revit 2020 does not experience the issue. Whatever changed in Revit 2020 made it more resilient to a corrupt image cache.

The only known fix until recently was editing your service template. You would have to remove and re-add the part. Reloading the Fabrication Configuration in Revit and it would be fixed. Unfortunately, future database changes would often revert back to the invalid state.

Quick and Dirty Work-Around (Revit 2019 Only)

If you’re using Revit 2019, there is a quick and easy work-around. That’s assuming you only have a few parts that are invalid. To work around the issue, reload your Fabrication Configuration and individually load the invalid part in the Parts tab. The following image shows one invalid part added to the Parts tab.

Once added, the Part then becomes valid in the Parts Browser.

A Permanent Fix (For both Revit 2018 & 2019)

The prior work-around was only available in Revit 2019. This didn’t help Revit 2018 projects which do not have the Parts tab in Fabrication Settings.

To properly fix the issue, you need CADmep. Load your Fabrication Configuration in CADmep. Once loaded, find an open area of your service and press CTRL+SHIFT+Right-Click and select Clear Cache.

Next type the REFRESHALLBTNS command. You’ll see a progress bar while CADmep refreshes your button image cache.

At this point, your button cache should be rebuilt. However I’ve seen instances where you have to “coerce” or otherwise persuade CADmep into saving it back to disk. To verify the changes are saved, go to the Service Editor and click the Apply button then close the dialog.

At this point, you should be all set. If you go back to the problem Revit file and reload your Fabrication Configuration, you should see the Fabrication Part become active again.

Preventing Future Corruption

To prevent future corruption, you first need to understand how it happens. When loading CADmep, you may have noticed the “Button Validation” as shown in the following image…

Because this can be a slow process, most users simply hit the Escape key to terminate the validation. This isn’t a big deal for a user. For a database administrator, this can leave your image cache partially built and corrupt it.

While you can simply stop canceling the process, the better option is to prevent it in the first place. By default, CADmep enables Button Validation. But you can turn it off. To do this, use the Edit Configuration utility that comes with CADmep.

Note that this utility is named the same between versions and between CADmep, ESTmep and CAMduct products. It may be tricky to pick the right one. You need to select the one that comes with CADmep.

You also need to perform this for each CADmep version that’s installed. To help, you may want to choose the Open file location option. This will bring you to the folder with the shortcuts. You can then easily navigate to the proper version of Edit Configuration that you’re looking for.

When you run the utility, it’ll prompt for a configuration. You can pick any, it doesn’t matter. The setting to change is not specific to the configuration, only the product and version for the currently logged in user. The following image shows the Skip Validate Buttons at Start-Up option.

Select this option and the next time you launch CADmep, you’ll no longer see the button validation. This prevents you from canceling out of the validation as well as speeds loading of CADmep.

Credit Goes To…

Special thanks to Martin Schmid and Craig Farish of Autodesk for helping with this issue. We’d been experiencing this issue on and off for over 1/2 a year. Autodesk Support had indicated that nobody else had reported the issue and provided the 2019 work-around. They repeatedly assured me it was fixed in 2020 and not a problem with my data. They had no fix for 2018 which is used by several projects.

After experienced a large volume of invalid buttons, our database administrator spent 6 hours before users arrived rebuilding service templates. The the issue resurfaced within hours of a simple database update. With $5k-10k of lost productivity over 2 weeks with several detailers unable to model certain services, I called in a favor with Martin and Craig. They quickly had their team analyse our data and identify the fix.

I’ve since run into 4 other companies experiencing the same issue and this fix has worked flawlessly for them as well. Hopefully you’ll not need it but if you do, it’ll save you load of time, frustration and money.

Revit Can’t See Fabrication Configuration

Every once and a while, a Fabrication Configuration can lose data or become corrupt which leaves Revit unable to access it. This after you’ve already been working in a model and using the configuration without issue.

When this happens, it’s likely a result of the Fabrication Configuration loosing it’s GUID or “Global Unique Identifier”. You really only notice when attempting to reload the configuration in one of your existing models. The error will look like the following image…

When you launch of the other Fabrication products (CADmep, ESTmep or CAMduct) you can view the data from the database editor. In the image below, you can see the data is missing.

Retrieving Lost Data

The good news is that you can the data back. For this, we’ll use Revit and Dynamo, Revit’s visual programming environment.

Start Revit and open up one of your existing project that already had a Fabrication Configuration loaded. From the Manage ribbon, click the Dynamo button.

Once in Dynamo, you’ll need to load a Fabrication Dynamo package. Click the Package menu to display the Online Package Search dialog. You’ll need to wait a little while for the dialog to populate. Once populated, you can type Fabrication in the search box. In the results, select the DynaFabrication2018 package. Next, click the down arrow button on the left to install it as shown in the following image…

Once installed, the dialog will show the loaded modules at the bottom. It should look like the following image…

After the Dynamo packages are installed, you can build a Dynamo program that will extract the needed data. But instead of walking you through that, simply download, unzip and open the Dynamo program I’ve already created.

One Dynamo program Get Missing Fabrication GUID.dyn is loaded, your Dynamo screen should look like the following image…

In the lower right corner, if the button says Manual click the Run button otherwise if it’s set to Automatic, the information you need is already populated. Record the data in the fields marked A, B & C. This is what you’ll enter back in the database.

Add Data Back to the Fabrication Configuration

Launch of one the Fabrication products (CADmep, ESTmep or CAMduct). In the database editor, enter the information from Dynamo into the fields marked A, B & C as shown below…

Exit the database editor and exit from the Fabrication product you launched. If you still have Revit/Dynamo loaded, close both. Now, relaunch Revit again and open the model you opened before.

When you go to reload the configuration again, Revit should successfully find and reload your configuration.

Revit Fabrication Parts – Control w/Dimensions

AutoCAD was famous for it’s command line. It was easy to move items and type locations, distances or coordinates. Revit isn’t quite as intuitive for those coming from AutoCAD.

There’s a lot of reasons you need more control of Fabrication Parts in Revit. You may want to align the ends of pipe for a rack. Or perhaps you want to control the spacing between pipes in a run of parallel pipes.

At first it appears like the best you can do is drag items close. Eyeball them up so to speak. The traditional methods used in AutoCAD just won’t work. Methods like drawing construction geometry and using point filter and/or object snaps.

You can precisely control placement and location when moving to Revit from CADmep. In Revit, you simply place dimensions and edit them. Seems easy enough but there’s a couple nuances that can leave users frustrated. We’ll cover how to do this below.

Adding Dimensions in Revit

You can use the Annotate tab on the Ribbon in Revit. You’ll use the Linear, Aligned and Angular dimensions the most.

When you place a dimension between parts in Revit, the obvious thing would be to double-click the dimension to edit it. You’ve likely seen the following dialog…

If you see this dialog, you’re on the wrong path. This is not where you’d edit a dimension to control part placement. For controlling parts with dimensions in Revit, you actually select one of the parts you dimensioned.

The following image shows a Fabrication Part selected. But there’s still a problem. If the dimension text is black, you can not edit it. This is because one of the parts are over constrained. If you find a Lock icon on one of the parts, try unlocking it.

After unlocking the part, you may need to deselect and re-select the part for the dimension text to be editable. In the following image, you’ll see the dimension text is now Blue.

With the dimension text Blue, you can now click on the text to edit it as shown in the following image.

With the edit box for the dimension text activated, simply type the desired value and press <Enter> or click out of the edit box.

You’ll see the part move to the dimension you entered. The key to determining which part moves when editing a dimension is based on the part you select. If you just wanted to align the parts, you can delete the dimension afterward. On the other hand, if you want to maintain that relationship, highlight the dimension. You’ll see a unlocked Lock icon as shown in the below image.

If you click to Lock the icon, this relationship between parts will be maintained going forward.

The below video shows three pipes modeled with various end lengths. We’re using dimensions to align the ends of the pipe. We also delete the dimensions afterward. Moving one of the pipe ends later will not move the ends of the other.

Pipe spacing is set using dimensions just like before only this time, the dimensions are retained and the lock icon locked When one pipe later moves, the other moves to maintain the spacing.

COD Script Updates – 2019.11.10

I’ve made a couple updates to the Autodesk Fabrication script libraries. If you use them, you can download updated versions from here.

Scripts Updated

  • Job Items
    • All Scripts updated to now include the Item Number which makes it easier to track back report entries to ITM’s in your job.
    • Fix a couple syntax issues in a few scripts which caused errors.
  • Revit Support Report
    • Added Reporting on Revit 2020 status
    • Changed CID/Pattern # 1175 from NO to YES.

Known Issues

End Location properties appear to be crashing 2020.1 Versions of Fabrication. Other versions may/may not crash as well.

ESTmep Cost Exposed in Revit

If you’re a user of ESTmep and Revit Fabrication parts, consider yourself warned. I’ve recently had some dialog with an industry colleague and the discussion of Cost data in Revit came up.

We know that that a Revit file which uses Fabrication Parts contains a copy of your Fabrication Configuration (Database). We also know that the Fabrication Extension for Revit now allows you to run reports. Those reports can also report on Cost data. That’s generally a good thing in most firms using ESTmep, exposing that Cost data to Revit users can be very helpful.

Now when you send someone your Revit model, they do NOT have access to your database (Unless you send that to them a well). Without your database, the Fabrication Add-In will not find the reports and the option is grayed out.

You also can’t change the configuration either because the drop down is disabled. They need your database to do anything….maybe.

So this sounds like we’re OK but let me assure you that’s not the case. Your database isn’t “available” to the person who had your Revit file but it is contained within the Revit file itself. And even though the Revit API’s don’t give you access to the costing data, it can be extracted.

I won’t go into details for the sake of security in our industry but rest assured, there is a process where as a user can extract your cost data. This includes being able to figure our your vendor pricing multipliers.

What To Do?

That leaves the question about what to do. Some may be familiar with the option in Edit Configuration that disables the storing of EST tables in DWG files. This has NO effect or control of Revit. Sure would be nice if it did nit that’s not the case.

So there’s really 2 options that I can see….

  1. Remove or Rename the COST.MAP, ETIMES.MAP, FTIMES.MAP and SUPPLIER.MAP tables from your database. These are where labor rates, times and costs are stored. Without these tables,, Revit can not store this information in the model. If you’re previously had a Revit model with this information saved, rename/remove the files and reload your configuration and the data will be removed. The down size is you’ll no longer be able to use ESTmep.
  2. Make a copy of your database without the COST.MAP, ETIMES.MAP, FTIMES.MAP and SUPPLIER.MAP tables and have Revit point to that. Each time you update your Fabrication database, you’ll need to refresh this copy. It’s fairly easy to script this process and have those files removed. The down side is you’ll no longer have access to Cost data in Revit but at least you can keep using ESTmep internally.

If you feel this is unacceptable, please submit a support ticket with Autodesk. The more people that raise the issue, the more likely that it will be addressed in a future release or update. To date, all they told me is the option I’ve outlined are the ONLY way to address the issue.