Fabrication Reference Data Updated for 2021 Versions

Autodesk Fabrication reference data has been updated to include 2021 versions of Autodesk Fabrication software.

Updated references include…

The only change I’ve found in from 2020 to 2021 versions is the CADmep command DWNLDC Command (DOWNLOADCONTENT Alias) is no longer present. This use to download ITM content from Autodesk’s www.Building3DContent.com site. This site is no longer active and Autodesk has included all the content within the default Imperial and Metric configurations that ship with Autodesk Fabrication Content.

User’s of Trimble’s Managed ITM Content (building-data.net) use to use this command as well. It was just redirected to the Building Data site. It’s unclear how this change will affect them as the core DLL’s used for this process appear to have been removed in 2021 versions of Autodesk Fabrication.

If you’re a user of Trimble’s Building-Data, I’d suggest contacting them for support if you have issues.

Merging Autodesk Fabrication Databases (Method 4 of 4)

Warning: This is last part (4 of a 4) in a series on merging Autodesk Fabrication Databases. Autodesk Fabrication software is extremely powerful and flexible but that also makes it very fragile. Use the below guidance with caution. I highly recommend backing up your configuration before attempting anything I’ve recommended. It never hurts to have a firm grasp of how Autodesk Fabrication functions from an administrative perspective. Consider yourself warned!

Method 4: MERGEDB (CAMduct only)

This last method is very quick and powerful but only available in CAMduct. If you’re not a CAMduct user, simply download and install to perform this process while in the 30-day trail period.

This method doesn’t let you pick and choose individual database entries but you can pick certain database types and quickly merge all of them into a new configuration. Unlike prior methods were you typically started in the old Database to export an *.IOX / *.IEZ file or create a Proxy ITM first, in this process, you start with the database you want the items to be imported into.

In addition to make of the database entries Method 1 supported, this method also supports these additional entries.

Hanger SpecificationsNotchesVanes

To use this method, start CAMduct and type CTRL-SHIFT-C to display the command window as shown below.

From the command window, type MERGEDB and press <Enter>. This doesn’t do anything other than tell you the data the command needs as shown below. The Strict/Unstrict options tell the merge process if it should only look at the name or the data to determine if it’s duplicate. If you choose strict and the items are already in your database, something as simple as 3 vs 4 digits after a decimal will cause a duplicate entry. In most cases, unstrict is all that’s required.

For this example, we’ll type MERGEDB UNSTRICT NOTCHES to import all the notches from one database to another as shown below.

When you press enter, you’re prompted to select a folder. You should select the Database folder of the old database you want to merge into your current database.

If new items are found, you’ll be notified and prompted if you want to save the changes or not.

Upon completion of the merge, you’ll need to go to those items in your database and make permanent any you intend to keep and remove those you didn’t want.

> Only way to import some database entry type.
> Easiest way to merge the bulk of 2 database together.
> Extremely fast and efficient.
> Requires CAMduct.
> Can not pick and choose database entries, only database types.
> Requires post merge cleanup of deletion or making entries permanent

Merging Autodesk Fabrication Databases (Method 3 of 4)

Warning: This is Part 3 of a 4 part series on merging Autodesk Fabrication Databases. Autodesk Fabrication software is extremely powerful and flexible but that also makes it very fragile. Use the below guidance with caution. I highly recommend backing up your configuration before attempting anything I’ve recommended. It never hurts to have a firm grasp of how Autodesk Fabrication functions from an administrative perspective. Consider yourself warned!

Method 3: Service Export/Import

This method is very similar to Method 2 above except that it works on a full service and all the items within it’s service template. If you have an existing service you want to post from one Database to another, this is a great method. Even if you just have a library of multiple ITM’s, it’s very common to create a transport service. That service holds those ITM’s and can be used as a means to get ITM’s from one database to another. Here are the steps.

From CADmep, type EXPORTSYS at the command line or in ESTmep or CAMduct, while in the Takeoff screen, select Takeoff -> Services -> Export as shown below…

This displays the Export Systems dialog. Use the Browse button to select the location and name of the *.IEZ export file. Select the service(s) you wish to export and click the Export button.

Importing is a similar process. Type IMPORTSYS from CADmep or from the Takeoff screen in ESTmep or CAMduct, select Takeoff -> Services -> Import as shown below…

You are prompted to select an *.IEZ file for import. The file will be read and display all the services that were exported. Select those you want to import and click Import.

Because IEZ imports can contain a lot of data, it’s likely you may have a lot of duplicates. Upon import, you are prompted if you’d like to Import ALL or NEWER item. Select as appropriate for your situation as shown below.

If Estimating data is found, you are also prompted to Replace or Keep existing tables. Because the database you are importing to is likely your current desired database, I’d recommend to Keep existing tables and only Replace if you intend to bring over labor and cost data in the Import. Once again, choose the option that best suits your needs as shown below.

Like in Method 1 earlier, if the import finds a service or template it thinks is the same, it’ll prompt you how to proceed. I highly recommend NOT selecting the “….To All” options as it’s common for the database index to cause false matches and mislead you.

You are prompted once the import is complete. As with Method 2, if ITM’s imported through this process contain new database entries, you’ll need to find those and make them permanent in a similar way.

> Easiest way to import large numbers if ITM’s and their related database entries.
> Easy way to import Services and Service Templates
> Slowest of all process do to all the verification the Import process needs to do.
> Can Import a lot more data than you intend.
> Can not pick and choose individual database entries to import

Stay tuned for Method 4 in my next and last post in this series.

Merging Autodesk Fabrication Databases (Method 2 of 4)

Warning: This is Part 2 of a 4 part series on merging Autodesk Fabrication Databases. Autodesk Fabrication software is extremely powerful and flexible but that also makes it very fragile. Use the below guidance with caution. I highly recommend backing up your configuration before attempting anything I’ve recommended. It never hurts to have a firm grasp of how Autodesk Fabrication functions from an administrative perspective. Consider yourself warned!

Method 2: ITM’s as Proxy

Another method of transferring data from one database to another is by using ITM’s. Simpy take an existing ITM or make a new one and set some of it’s properties to those you want to transfer. After you’ve completed this, copy the ITM to your desired database.

In your desired database, right-click on the newly copied ITM from the Folders view and select Edit or Properties as shown below.

Once the Edit Item or Item Properties dialogs are displayed, you can simply close them. The only purpose in calling them up was to force Fabrication to read all of their settings which in turn causes them to be created as Proxy entries in your database if they don’t already exist.

Once the database entries are in your new database, you’ll want to navigate to those database entries and make the proxy items permanent as shown below.

> Every property an ITM uses is supported.
> Dependent database entries supported (e.g. Fixings on a Support)
> Can bring in more properties than you want which need to be cleaned.
> Time consuming for large property sets as multiple ITM’s required.
> Proxy items must be manually made permanent afterward

Stay tuned for Method 3 of 4 in my next post.

Merging Autodesk Fabrication Databases (Method 1 of 4)

Warning: This is Part 1 of a 4 part series on merging Autodesk Fabrication Databases. Autodesk Fabrication software is extremely powerful and flexible but that also makes it very fragile. Use the below guidance with caution. I highly recommend backing up your configuration before attempting anything I’ve recommended. It never hurts to have a firm grasp of how Autodesk Fabrication functions from an administrative perspective. Consider yourself warned!


You shouldn’t find yourself merging parts of different Fabrication databases very often. If you do, you may want to revisit your database management workflow and practices.

However there are a number of legitimate reasons you may do it. Most common is the database you’re using now isn’t the one you used a few years ago because you started over. It’s common for a Fabrication database to be a mess. They’re hard to learn and understand and while you learn, you do a little damage unknowingly. Maybe it’s turnover of the staff managing your configuration. Each new person will say they know how to manage Fabrication and what you’re doing is wrong. So they fix it. In the end, you end up with a mix of database management “Styles”.

And last but not least, it’s because trades men and women manage your data. Don’t get me wrong. Your trade staff are hands down the most qualified to manage an Autodesk Fabrication configuration. This is why the task gets assigned to them. But ultimately, what do companies “want” them to do? Detailing and modeling….run piping, plumbing, sheet metal, electrical, etc. Management more often than not pushes them to get back to modeling because management really doesn’t understand the importance of a good database. This leads to shortcuts and mismanagement through no fault of those doing the work. They’re doing the best they can given the constraints their under.

Whatever the reason, if you need to merge parts of different Fabrication Database configurations together, I’ll explain four different methods in the coming posts.

Method 1: Importing / Exporting Database Items

Export/Import Database is the most commonly used method. It’s also the most widely know. In 2014 and earlier versions, many of these were separate commands for each part of the database. In the 2015 version, they were wrapped up in a single command. This process allows you to export and import the following items…

AirturnsInsulation SpecificationsSplitters
Ancillaries (except Kits)Installation TimesStiffeners
ConnectorsSeamsSupplier Costs
Fabrication TimesSpecifications

To initiate the Export process, type DBEXPORT at the command line in CADmep. In CAMduct or ESTmep, select File -> Export -> Database Export from the menu as shown below…

Once you start the command the Database Export dialog is displayed. You can switch tabs and select various database entries to export.

Once you’ve selected the items you wish to export, click OK and save the export file.

This *.IOX file contains everything you selected for export. You can then use this file to import those settings into another database configuration. The process for importing is very similar. Type DBIMPORT at the command line in CADmep or pick File -> Import -> Database Import in ESTmep or CAMduct from the menu shown below…

Upon initiating the command, you’re prompted to select an *.IOX file for import. Select the file you wish to import and click OK.

After selecting the file, you are presented with a dialog just like the Export dialog. In this one, you can navigate the various tabs and select what you would like to import.

There is no good way to see what’s available for import without checking all of the tabs. Only items included for export will be displayed. You can pick and choose to import some or all of the items that were in the export file.

If an item you are importing already exists, you can choose to Skip, Duplicate or Overwrite the item. A word of caution, if your configuration has not been managed well, be very careful selecting the Apply to All button. There are times when the items Fabrication thinks are duplicate are indeed different items. This can be due to database corruption or misaligned indexes or any number of other reasons. If you’re concerned, select Apply for each item one at a time to verify the duplicates aren’t unexpected.

> Easy to use
> Most common items supported
> Dependent items (e.g. Ancillaries attached to a Support) are included even though they are not displayed.
> Not all database areas supported (e.g. Materials, Ancillary Kits, Notches, etc.)

Stay tuned for Method 2 in my next post.

DOS – Still Relevant

Not only is DOS still relevant, its often one of the quickest ways to get some things done.

On XtraCAD.com, someone recently asked how to get the system Date and Time in an Autodesk Fabrication COD script. I provided a solution that uses DOS commands inside a COD script. That solution is explained in more detail here.

DOS’s “Date” Command

Using DOS, we can use the “DATE” command with the “/T” Switch to output the current date to a DOS prompt.

The information given by this simple command is all we need. A script can easily read the data if the output is redirected to a data file.

We’ll get a little more ambitious and get particular on the formatting. We’ll remove the “Tue” and format the date in the format “yyyy.mm.dd”.

To do this, we can use the “FOR” command in DOS.

for /F "tokens=2-4 delims=/- " %A in ('date /T') do echo %C.%A.%B

The Red circled area is the command. It takes the data from the Date command and breaks it apart by the delimiters (DELIMS) which is spaces ( ), forward slashes (/) and dashes (-). You’ll note that the Date doesn’t actually contain any dashes so it’s just ignored.

The TOKENS specifies we want the 2nd thru 4th items of data. They will be assigned sequentially to variables starting with “%A”. The Green circled area is the resulting output ECHO’d to the DOS Window in the format we want.

  • %A = 2nd piece of data (month)
  • %B = 3rd piece of data (day)
  • %C = 4th piece of data (year)

Sending Data to a File

Now that have our DOS command, the next step is to send the output to a file on disk. Doing this will allow the COD script to read it back later.

For this purpose, we use a re-director to pump the data to a file. We simply append a suffix like this…

for /F "tokens=2-4 delims=/- " %A in ('date /T') do echo %C.%A.%B>"C:\Temp\COD Data.Txt"

A few notes about redirecting data to a file….

  1. We use double quotes around the file path and name in case it contains spaces. This way, DOS doesn’t interpret the space as a separator between commands.
  2. The Greater-Than (>) symbol is used to redirect output to a file. If the file already exists, it will be overwritten.
  3. Double Greater-Than (>>) symbols can be used to “append” to the end of an existing file. This is handy if you want to add more data to the same file. If the file doesn’t already exist, it will be created.

We Have DOS, Now for the COD Script

Now that we have our DOS syntax down, we can start writing out COD Script. To start, I typically generate a few variables that help me format things.

REM ------------------------------
REM DQ = Double Quote Character
REM CR = Carriage Return Character
REM ST = Single Tab Character
REM WF = Working File
REM ------------------------------

DIM DQ = ascii(34)
DIM CR = ascii(10)
DIM ST = ascii(9)
DIM WF = "C:\Temp\COD Data.Txt"

Because some of our syntax contains double quotes, and because strings (text) in a COD script also contain double quotes, having multiple double quotes in a row can be confusing. Additionally, sometimes the script has trouble understanding where one string ends vs what’s a string containing a double quote.

To handle this, I set a variable (DQ) that will represent any double quote within a COD Script string. I also use a Carriage Return (CR) variable and a Single Tab (ST) variable for formatting purposes that you’ll see later.

Lastly, I also set a variable for the data file. It’s at the beginning, it’s easy to find and change without having to get in the middle of a lot of confusing formatted string data later.

Executing DOS From the Script

To execute an external command from a script, we can use the EXEC function.

EXEC(<“command”>, <execution mode>, <“command data/arguments”>)

Here’s the 3 pieces of data we’ll need…

  1. <command> = “CMD.EXE”
    This is the DOS Command Interpreter
  2. <execution mode> = exec_wait + exec_show_min
    These are a couple variables that tell the external program to “Wait” until finished before proceeding with the rest of the script and to minimize the Window.
  3. <command/arguments> = The Prior DOS Syntax (with modifications) goes here.

The CMD.EXE program takes an argument of “/C” followed by the command it’s going to execute which is our DOS Syntax. Pay close attention, because here’s where we’re going to have to break up the DOS commands and embed our variables for the embedded double quotes.

The below is a single “String” with double quotes on each end. It also has a lot of double quotes inside the text which will confuse you and your script. This below syntax is WRONG and needs to be corrected….

"/C for /F "tokens=2-4 delims=/- " %A in ('date /T') do echo %C.%A.%B>"C:\Temp\COD Data.Txt""

To do this, it’s easier to illustrate in color. We’re going to take one very long complicated string, and break it into several smaller strings when there’s double quotes within the string.

That is, where ever there’s a double quote within the string, we’re going to make a smaller string before and after, and piece them back together and use our DQ variable to embed the double quote between them.

This works for the first two double quotes. But at the end of the string, we’re going to do something a little different. Here, we want to remove file name and use the WF variable we set earlier to store the file name. And because the filename may have a path, we surround it with DQ variables to embed it in double quotes.

The next piece of code should look like this when we’re done. This will run our DOS command and dump the date to a file,

REM ---------------------
REM Get Date (yyyy.mm.dd)
REM ---------------------

Exec("cmd.exe", exec_wait + exec_show_min, "/C for /F " + DQ + "tokens=2-4 delims=/- " + DQ + " %A in ('date /T') do echo %C.%A.%B>" + DQ + WF + DQ

Reading Our Data File

Now that we’ve dumped the data file to disk, we can read it back in from the COD script using the following code…

DIM myDate
Object myFile as File (WF, forinput+istext)
myDate = myFile.Readline()

This code opens the file and reads its data and saves it to a variable. You’ll also note that this code doesn’t add extra double quotes around the WF “Working File” variable. That’s because they aren’t needed here, and will in fact cause problems. The COD Script language is actually better at handling files with and without spaces because it uses a comma (,) as it’s data separator between the file name and file read modes.

Displaying Our Data

Last, we can display the data in a simple debug dialog. Here, you’ll see I make use of the ST variable to place a single tab between the data purely for formatting purposes.

Debug "Date:" + ST + myDate

The Bigger Picture

The following code takes all the above principals and goes a little further. With everything you’ve learned, you should be able to figure out what it’s doing and how. It’s doing all the same things plus a little extra…

  1. Also writing TIME and the USERNAME of the currently logged in Windows User to the data file.
  2. It’s “Appending” the TIME and USERNAME using “>>” instead of “>” that DATE uses.
  3. It’s reading 3 lines of our data file
  4. The data file is deleted after it’s read leaving our system clean of temporary files.
  5. The data is displayed by also using the CR (Carriage Return) variable to start new lines for the additional pieces of data.
REM ------------------------------
REM DQ = Double Quote Character
REM CR = Carriage Return Character
REM ST = Single Tab Character
REM WF = Working File
REM ------------------------------

DIM DQ = ascii(34)
DIM CR = ascii(10)
DIM ST = ascii(9)
DIM WF = "C:\Temp\COD Data.Txt"

REM ---------------------
REM Get Date (yyyy.mm.dd)
REM Get Time (hh:mm)
REM Get User (login name)
REM ---------------------

Exec("cmd.exe", exec_wait + exec_show_min, "/C for /F " + DQ + "tokens=2-4 delims=/- " + DQ + " %A in ('date /T') do echo %C.%A.%B>" + DQ + WF + DQ)
Exec("cmd.exe", exec_wait + exec_show_min, "/C for /F " + DQ + "tokens=1-2 delims=: " + DQ + " %A in ('time /T') do echo %A:%B>>" + DQ + WF + DQ)
Exec("cmd.exe", exec_wait + exec_show_min, "/C echo %username%>>" + DQ + WF + DQ)

REM ---------
REM Read Data
REM ---------

DIM myDate
DIM myTime
DIM myUser

Object myFile as File (WF, forinput+istext)

myDate = myFile.Readline()
myTime = myFile.Readline()
myUser = myFile.Readline()

REM ----------------
REM Delete Data File
REM ----------------
Exec("cmd.exe", exec_default + exec_show_min, "/C DEL " + DQ + WF + DQ)

REM ------------
REM Display Data
REM ------------

Debug "Date:" + ST + myDate + CR + "Time:" + ST + mytime + CR + "User:" + ST + myUser

Whole program can be downloaded here…

Fabrication 2020 Resources Updated

Resource information for Autodesk Fabrication has been updated. They now include information on the 2020 version of CADmep, ESTmep and CAMduct. In short, nothing has changed.

The FabViewer Command Reference did have one new command added. However, this was not new to the 2020 version. The CADmep 2019.1 update added a command which was missed previously.

Pages that were updated are the following…

Disabled Material & Specification in Revit Fabrication Parts

Fabrication Parts in Revit don’t always allow editing of their Material or Specification properties. Look at the below side by side images. Revit’s properties can be seen grayed out on the left but those on the right are not.

Material & Specification Properties – Left Read Only, Right = Read/Write

Revit can obscure the reason for this because you have no access to edit your Fabrication Database within the Revit environment. The answer however is quite simple.

Fabrication Parts with the “BoughtOut” property set do not allow editing of Material or Specification. After all, a bought item is typically static and can’t be easily changed. Non-BoughtOut items do allow editing of the Material and Specification properties.

The following is another side by side image of Fabrication Part properties. The properties on the left have the BoughtOut property set. The properties on the right do not have the BoughtOut flag set. While not accessible from Revit, any of the other Autodesk Fabrication products can display and edit the BoughtOut property.

BoughtOut Property / Left = Set, Right = Not Set

ATTN: Autodesk Fabrication Part Users – Revit 2019.2.1 Hotfix

For Autodesk Fabrication Part users, this is a Hotfix you’ll want to get applied. Since the first release of Fabrication Parts in 2016, there’s been ongoing issues with MEP Systems modeled with Fabrication Parts.

The issues is that to add/remove or update Fabrication services, you need to reload your configuration. This often would cause “disconnects” between parts. Often this would happen for no good reason or explanation as the parts involved may not have even had changes to them.

This has been a difficult issue for Autodesk to resolve because it’s been difficult to reproduce. Since the 2016 until now, Autodesk has slowly made the issue better but it’s still not eliminated. With this hotfix in 2019, Autodesk is taking another stab at it and hopefully it’ll be eliminate. IF not fixed once an for all, hopefully it’ll be another small incremental step better.

You can review the release notes for all Revit 2019 updates here. Look for the notes under 2019.2.1 Hotfix and you’ll see the following note…

“Resolved an issue that could cause MEP Fabrication elements to disconnect when reloading a Fabrication configuration.”

Downloading The Update

The Update is available from the Autodesk Desktop App provided it’s working for you. (Note: Mine seems to lockup or crash repeatedly since installing the Autodesk Desktop Connector. Uninstalling and reinstalling the Desktop App seems to only resolve the issues for a short while)

Alternatively you can download from the Autodesk Accounts portal if you have download permissions given to you from your contract administrator.

Autodesk Fabrication COD Script Libraries

Over the years, I’ve written a number of scripts helpful for managing an Autodesk Fabrication configuration. I’ve given them away in my Autodesk University session I’ve taught so they’ve circulated around a bit.

I’ve rewritten most, streamlined them, made enhancements, added others, etc, etc. Because I’m always updating and changing them, I thought I’d host them here too. I can then just post when I update them.

There’s are 2 sets of scripts covering the following topics…

  • Debugging Properties Scripts
  • Job Item Scripts
  • Library Item Scripts

One set is for use in 2019.0 and earlier versions (but work in any version), the others are designed for 2019.1 and later when Autodesk added support for the Pattern Number property.

You can get to the scripts from the menu or click here. The scripts are free to use for all except employees of ENGworks or anyone working on the behalf of ENGworks. (contractors, consultants, etc.) who are prohibited from use.