CAMduct Machine Setup – Axis & Orgin

One of the things that can make machine setup difficult in CAMduct is setting up the coordinate system. This coordinate system must reflect the actual configuration of the machine. Some machines can be reconfigured to swap the axes or set the origin to any corner. This lets you configure the machine to match the software. Others can’t be reconfigured and require you to configure the software to the machine.

It doesn’t really matter where the origin is on the machine, just as long as the configuration in CAMduct matches. Matching the machine isn’t difficult, just as long as you understand what’s happening.

Default Origin and Axis Orientation

In the Machine Setup Dialog, the default Origin is in the lower left. Take a look at the settings and note the X-Axis and Y-Axis directions.

From this configuration, here’s a simulation of the code that’s generated.

If this configuration doesn’t work for your machine, it typically means the machine has a different origin and/or Axis configuration.

Coordinates Rotated 90 Degrees / X-Axis & Y-Axis Swapped

This next configuration rotates the coordinates which results of the X-Axis and Y-Axis being swapped. It also looks like the Origin location changes given the picture, but that’s not the case. This is why Machine Setup can be confusing. This picture does NOT change the origin location. This will become clear shortly.

With this configuration, you’ve now rotated the Coordinate System. When you look at the Simulation below, you’ll that the origin doesn’t actually move. The sheet is still oriented the same way. Long direction is the Rail and the Short direction is the Beam.

What you’ll notice here when looking at the code, is that the Part is Still oriented in the Lower Left Corner of the sheet. However, the X-Axis and Y-Axis are swapped. Additionally, looking at the code on the right, you’ll see how the Y-Axis goes into Negative coordinates. This also isn’t what most machines want, they typically work in positive coordinates but this is easily fixed which we’ll show a little later.

Coordinates Rotated 180 Degrees / X-Axis & Y-Axis Mirrored

This next configuration sets the X-Axis and Y-Axis so that both are mirrored…or rotated 180 degrees.

Looking at the simulation of this configuration, you’ll see both X & Y Axes are using negative coordinates.

Here the both Axes are in negative coordinates and the Part is still located in the lower left of the sheet. Again, not what a machine wants typically, but easily fixed and covered in a little bit.

Coordinates Rotated 270 Degrees / X-Axis & Y-Axis Reversed

Here’s the last configuration. Again notice which way the Axes are oriented.

In this next configuration, the X-Axis and Y-Axis are reversed like before. But this time, the X-Axis is in negative coordinates where as the Y-Axis is in positive coordinates.

Fixing Negative Coordinates

What makes this hard, is that the setting in the dialog makes you think you’re moving the origin of the code. You are not. You’re merely rotating the coordinate system. This is critical when using a machine tool like a Lockformer or Vulcan that uses Trimble’s TookShop controller (formerly called Vulcan). Those are a couple of the most common machines where the X & Y Axis are reversed.

When you look at the simulations, the sheet is still oriented in the same location and the part starts in the same location on the sheet.

You can look at the configuration and see that the Rail is set to the long direction and the Beam is set to the Short setting. Remember this….it’ll be important in just a bit.

For this example, we’ll again use the 90 Degree rotated configuration (our second example) where the X & Y are reversed and the Y-Axis coordinates are negative. You can see in the code, that the Y-Axis is the LONG sheet dimension due to the rip cut along the Rail that’s cut at the end of the program.

Because the Rail Rip Cut starts at Y=0.0 and goes to Y-120.0, you can see that the Origin is still on the left side of the sheet not the right as the configuration screen suggests. Here’s a reminder of the Axis directions…

So if cutting the Rip Cut on the sheet from Left to Right for 120 units means the coordinates go negative, it’s clear the Origin is on the left. To make those coordinates go positive, you need to shift the Origin to the right on the Beam (Y-Axis). You can do this on the Controller tab and entering the shift amount for the Rail.

How, when you run a simulation on this setup, you’ll see the Y-Axis is still the long sheet direction, but they’re all positive coordinates.

Notice on the simulation that the part is STILL on the left side of the sheet and because we shifted the Origin to the right side the Rip cut along the Rail (long side) goes from Y=120.0 to Y=0.0.

You’ve now successfully swapped the X&Y Axis and corrected the coordinates to they’re all in positive units. From here, you can go back and finish configuring all your other preferences like where the parts get nested on the sheet, starting cut location, etc.

Fabrication 2022.0.1 Update Released

Update: 2022.09.04

It’s recommended NOT to install this update for CAMduct or ESTmep. Installing the 2022.0.1 Update will prevent access to the Projects folder. CADmep does not appear to have issues with this update.

Thanks to Chris Nash of William R. Nash Company for reporting this issue on the XtraCAD.Com forums.

It’s been a long time, but Autodesk finally released an update to Autodesk Fabrication. 2022.0.1 Update was released recently and contains several fixes for 2022 versions of CADmep, CAMduct and ESTmep.

Install from the Autodesk Desktop App or download from your Autodesk Account portal (https://manage.autodesk.com)

Autodesk Fabrication: Best Practice #14

Eliminate All Broken Service ITM’s

Your services should not have broken links to ITM’s. Not only is it sloppy database management, it can slow performance of your database.

Use the Path Repair Tool to find (and fix) broken links in your services.

Right-Click and empty area of your Service Palette and select Path Repair Tool.

When you run the Path Repair Tool you’ll be asked to select a mapping file. You can click cancel and the tool will continue on. When it’s done, you’ll have a list of broken paths copied to the Windows Clipboard that you can paste into a file.

From this file, you can then create a mapping file. The mapping file is merely a text file in the format….

OLD PATH/NAME,NEW PATH/NAME

So the data you paste from the clipboard is good starting point, it lists all the broken paths. There may be duplicate paths listed if the path is used in multiple service templates. It’s ok to remove the duplicates.

Simply ass a comma after the broken path name and enter the new, corrected path. Once done, you can save the file and use it when you run Path Repair Tool again. It’ll then go and fix all those broken paths.

NOTE: This repair technique does NOT work if you have commas in your folder or file names. (See Best Practice #11)

Fabrication COD Script Library – Updated

If you’ve not downloaded the Autodesk Fabrication Script Libraries lately, you might want to grab an updated copy. There’s been several updates over the last month. Here’s what’s changed…

  • Damper Rotation Property (undocumented) has been added to all Debug, Job and Library scripts. Support for this property was added in 2017 but never documented. It’s there to support the rotation of Dampers on Fabrication Parts in Revit. It should be noted, that this value is Added to the Angle property of the assigned damper. As such, it acts as an Adjust and not an Override. e.g. Damper w/Angle of 90 + Rotation Property in the ITM of 90 results in a damper rotated 180 degrees.
  • Stiffener Group Property added to the Autodesk Fabrication 2022.0 and later versions of the Debug, Job and Library scripts.
  • Airturn Group Property added to the Autodesk Fabrication 2022.0 and later versions of the Debug, Job and Library scripts.
  • Splitter Group Property added to the Autodesk Fabrication 2022.0 and later versions of the Debug, Job and Library scripts.
  • Insulation StatusLock Property added but listed as “Unavailable” as it stopped working in 2017. Added in the hopes it gets fixed in future versions.
  • StructureType Property added to the Autodesk Fabrication 2022.0 and later versions of the Debug, Job and Library scripts. Property was “Write Only” in 2021 and prior versions so was unable to display in prior versions.
  • Product List HasCustomData Property has been added to all Debug, Job and Library scripts.
  • Product List HasFlow Property has been added to all Debug, Job and Library scripts.
  • Item PCFSKey Property has been added to all Debug, Job and Library scripts.
  • Item CostByLength Property removed from Material Debug scripts (never really belonged there).

You can find the updated scripts here….Script Library.

New Properties are documented here…Item Property Reference.

Fabrication 2022 Bug – Configure Users

If you run Autodesk Fabrication as a multi-user installation, there’s a defect in the Configure Users utility. When you run the utility from a 2022 installation, it won’t read any of the user accounts you have configured.

In fact, the only way to login, is to use the Default Administrator account Autodesk uses if there are no users configured. It won’t read your Administrative account regardless of what the login is. To see the issue, you can use the following to login and see the problem…

User Name: Administrator
Password:  Admin

Once logged in, there will be one account. You can make more but when you exit and come back in, those accounts don’t show up. IN fact, even the original Administrator account isn’t there, it’ll make a new one. The following image shoes the users accounts that were created in 2022 be repeatedly going into it. Next to it is the 2021 utility showing those same accounts. As you can see, they are there, its just 2022 won’t show them.

Note that all the other Fabrication products will read/honor the accounts properly. It only seems to be the Configure Users utility that had the issue.

How to Determine Which Version of Configure Users To Run

To make things ‘easy’, Autodesk chose not to add the version in the name of the shortcut. Simply looking for ‘Configure Users‘ shows a lot of indeterminate results.

To pick a particular version, Right-Click on one of the shortcuts and select ‘Open file location‘.

This will display a File Explorer window to the location of the shortcut you selected. As you can see below, the one I happened to pick was for CAMduct Components 2016. The product doesn’t matter, only the version, You can navigate back a folder then pick one of the Fabrication products for any version you want. 2021 and earlier will work.

Not sure if or when they’ll get around to fixing this. While 2022 has had a few issues fixed, they didn’t release any updates (yet) for 2021. Regardless if they fix it or not, it’s easy to work around by using any other version.

Autodesk Fabrication 2022 Updates

Autodesk Fabrication 2022 marks a decade that I’ve been updating various documentation for the program. As usual, in recent years not a lot has changed but there are a few changes. Here’s a review of the changes for the data I track…

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.

COD Script Extension for VS Code

If you write COD Scripts for Autodesk Fabrication, take note. There’s now an Extension for Microsoft Visual Studio Code (VS Code) which is Microsoft’s free code editor. If you use Notepad or Notepad++ to edit your code today you may want to consider switching. The COD Extension has some really nice features. Color coding of your code is the most obvious as shown below. However, there’s a lot more than just color coding. Features like Auto-Complete, Folding Sections and Dimension/Option Picker are nice additions in addition to a lot more robust documentation.

Installing The Fabrication COD Extension

If you don’t already have it, you can download and install VS Code here…https://code.visualstudio.com/. Once installed, go to the Extension section, type FABCOD and click the Install button.

Extension Summary

Once you’ve installed the Extension, you can review a summary of extension details here…

From here, you can review a couple of the key features and their keyboard shortcuts….

VS Code Feature – Mini-Map

Not a feature of the extension, but one reason VS Code is a nice editor is the Mini-Map which helps you visualize where you are your code.

FABCOD Extension Feature – Folding

One of the features the FABCOD extension exposes in VS Code is the ability to collapse/expand sections of code for Looping and Conditional function and other areas. When you move your cursor to the left margin, you see symbols that activate this functionality called Folding.

In addition to Folding sections of code, you can create your own areas of code to collapse/expand. These are Folding Regions and can be inserted (or typed manually using the proper syntax) by highlighting the code and pressing CTRL+SHIFT+/.

FABCOD Extension Feature – AutoComplete

Auto-Complete is another core feature of any code editor. VS Code’s Auto-Complete features is leveraged by the FABCOD extension. You’ll need to be editing a saved file with a COD file extension so the VS Code extension knows which code extension to use.

ABCOD Extension Feature – Hover Tips

If you hover over known functions/properties and their context can be determined, VS Code will display a tooltip for the function you’re hovering over. This can be a great way to learn coding as it’ll help you with the syntax.

FABCOD Extension Feature – DIM / OPTION Picker

One of the best features of the FABCOD extension is the ability to get suggestions for the Dimension (DIM) and Options. You can activate the DIM picker with SHIFT+F1 and the OPTION picker using SHIFT+F2 keyboard shortcuts. When using these features, you are presented with an edit box. You type the CID/Pattern Number you’re interested in and press Enter. You are then given a list of Dimensions or Options you’re interested in. It’s not fool proof because some patterns have variable DIM/OPTION values but it seriously helps none the less. Take a look here…

FABCOD Extension Feature – Additional Help

Sometimes you need added help for a function. The FABCOD extension is an open source project on GitHub (https://github.com/AgileBIM/FabCOD). This project contains added help for every function and property and is Auto-Generated and updated as the extension is developed. You can access this help from any of the popup ToolTips by clicking on the BLUE hyperlinked text.

FABCOD Extension Feature – AutoCAD Launcher

One of the other neat features of the FABCOD extension is the AutoCAD Launcher. Pressing F5 in the editor will initiate the script in CADmep. Simply Alt-Tab to AutoCAD and press enter. AutoCAD and CADmep must be loaded at the time for this to work. Due to Autodesk’s limitations in their API’s, this functionality does not work with ESTmep or CAMduct.

VC Code FABCOD Extension – Wrapup

There’s a lot more to VS Code that I won’t get into here. I’ve only covered the highlights of how it and the FABCOD extension can be used to help edit COD file in Autodesk Fabrication. As it’s an open source project, there’s instructions on how to become involved if you have the coding skills. You can also just head over and log issues or suggestions. (https://github.com/AgileBIM/FabCOD)

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.