Application Development & System Integration – No Coder Required

As many of our IT systems have moved to the Cloud, the promise of a “Single Source of Truth” seems further away that it ever has. Our data was always generated by multiple applications. But it was still stored on your servers. And related data was often in the same folder structure.

With Cloud based systems, you’re data is now locked in another company’s servers. Or is it?


Anyone Can Code – But They Don’t Need To

One of the great things about the technology landscape today is there’s a lot of solutions that allow non-programmers to create applications and integrate systems. If you can create a flow chart and have some logical thinking skills, you can built an app. You can build and integration. All without writing code.

I tend to think of these systems in 4 different groups. Those are No-Code, Low-Code, RPA (Robotic Process Automation) and Integration platforms. It’s often hard to draw lines between them because they have many of the same attributes and often overlap in functionality.

I’m not a technical purist or a trained IT professional despite a career in tech. So here’s my “unofficial” stab at how I define those classes of software.


No-Code

No-Code platforms are just what the names implies. A system that allows you to built an application, or database with forms and a workflow or even a website without any coding skills. They typically have drag & drop controls or widgets that can be configured to do what you need. Even to pull or push data to other systems.

Low-Code

Low-Code platforms are a little more misleading. The name implies you need to code….maybe. It’s not always the case. They often allow a lot of the same aspects of a No-Code platform but extend functionality with the optional ability to use code. But again, not always. Some of the Low-Code platforms do require coding. That “Low-Code” can very from simple syntax to more comlpex or even complicated. It could be based on an existing language or may even proprietary to the platform. Do you research carefully. But don’t let it deter you from using a Low-Code platform. It’s a lot lighter lift that hard core software development.

RPA (Robotic Process Automation)

RPA platforms are what the name implies….software robots. However don’t get too excited. Many people hear “Robot” and they think all finds of complex amazing workflows and interactions. That’s not the case…each RPA application is a little more narrowly focused. Think of an automotive assembly plant. Lot of robots. But each does a very limited set of tasks. A robot doesn’t make an assembly plant….an assembly plant is made of many robots, manual tasks and other technologies. RPA is similar….more task, data or workflow specific. Often mining data or running AI/ML analysis on those data sets.

Integration Platforms

Integration Platforms, sometimes called iPaaS (Integration Platform as a Service) are platforms designed exclusively for the purpose of integrating other systems. Many No-Code/Low-Code platforms even include iPaaS functionality. They may have built it themselves into their product or they just may incorporate another technology to serve that purpose for them. As an example, TrackVia is a No/Low-Code platform. They also offer integrations but use Workato for that purpose.

Integration platforms usually offer a number of “pre-built” connectors that aid in connecting to other systems. Those connectors eliminate your need to know how to code to connect to another system.

Using those connectors, you build your logic based flow, often visually to define how those systems interact. As an example, if you wanted a Slack notification everytime someone posts a file to DropBox, you’d use a Connector for Slack and Dropbox and configure their interation yourself. If there’s not a pre-built connector, they can typically be built as long as the system you want to connect to has an API. If you don’t have a coder, no worries. These Connectors are fairly easy to contract out to a developer.


Platform Selection

Unfortunately, it’s hard to offer blanket guidance on how to pick the platform you need. It may even require multiple applications. But here’s some rules of thumb….

If you want an Application, something that has a more complex user interface or workflows, No/Low-Code is likely were you want to look. If you have simple, repeditive or data heavy tasks RPA bots may be a good option. And if you want to connect other existing systems, an Integration platform is what you’re looking for.

Licensing is another area of concern. You may need to pay “Per Application” or “Per User” or “Per Integration” or “Per Task”. Your license may even be a combination of these factors and more. Ask lots of questions and think of every loophole you can think. Does your integration generate PDF’s? Is there a cost per page? Per file? Is there a limit to the amount of data the PDF can print? Questions like these will be bery helpful in determining your overall cost. It’s rare someone buys into a solution and it costs less than they think. It’s usually more. There’s nothing wrong with that if it’s providing more value than you expected. But plan accordingly.

Selection can also be daunting. Especially if you look at my list below. How the hell do you parse through that? Especilly when I tell you I’ve left a lot off the list? More niche platforms designed around only an industry or two.

It’s really not that hard. Look at the list. I’m sure some names will pop out at you. Do a search for “Low-Code” or “No-Code”. See what names keep popping up. Do a search on a specific platform and a serch engine will aften list “Ads” for their compeditors. If there’s no Ads taken out against them, that may be a smaller player. Crunchbase can also tell you a bit about the company….how much funding they’ve recieved…number of eplmoyees, etc. But with a landscape this large, expect some to disapear…maybe go out of business or perhaps be aquired. SAP in particular seems to be snappnig up a lot of them.

So with that in mind, here’s a list to get you started. I make no claims to it’s accuracy. Do you due dillegence.


List of Solutions

PlatformURLNo
Code
Low
Code
RPA iPaaS
8basehttps://www.8base.com/ X  
Airtablehttps://www.airtable.com/XX (x)
Adalohttps://www.adalo.com/X   
Agentyhttps://agenty.com/  X 
Alphabotshttps://www.alphabots.de/  X 
Alvariahttps://www.alvaria.com/  X 
AntWorkshttps://www.ant.works/  X 
Appy Piehttps://www.appypie.com/X   
App Engine (Service Now)https://www.servicenow.com/ X  
AppGyver (SAP)https://www.appgyver.com/X   
AppSheet (Google)https://appsheet.com/X  X
Appianhttps://appian.com/ XX 
Argoshttps://www.argos-labs.com/ XX 
AssistEdgehttps://www.edgeverve.com/  X 
Atoshttps://atos.net/  X 
Automaihttps://www.automai.com/  X 
Automatehttps://www.helpsystems.com/  X 
Automation Anywherehttps://www.automationanywhere.com/  X 
AutomationEdgehttps://automationedge.com/  X 
Ayehuhttps://proxima-software.com/  X 
Betty Blockshttps://www.bettyblocks.com/X   
Bildrhttps://www.bildr.com/X   
BiznessAppshttps://www.biznessapps.com/ X  
Blue Prismhttps://www.blueprism.com/  X 
Boomihttps://boomi.com/   X
Bubblehttps://bubble.io/X   
Build Firehttps://buildfire.com/ X  
Camundahttps://camunda.com/  XX
Carrdhttps://carrd.co/X   
Caspiohttps://www.caspio.com/ X  
Celonishttps://www.celonis.com/  X 
Choiceworxhttps://www.choiceworx.com/  X 
Claris FileMakerhttps://www.claris.com/filemaker/XX  
Claris Connecthttps://www.claris.com/connect/   X
Cloudstormhttps://www.cloudstorm.io/  X 
Cognifirmhttps://cognifirm.com/  X 
Cortexhttps://www.cortex-ia.com/  X 
Creatiohttps://www.creatio.com/X   
Dataflixhttps://www.dataflix.com/  X 
DWKithttps://dwkit.com/X   
Epiancehttps://www.epiplex500.com/  X 
electroNeekhttps://electroneek.com/X X 
Emmahttps://www.wianco.com/  X 
Flowdohhttps://www.enadoc.com/  X 
GeneXushttps://www.genexus.com/ X  
G1anthttps://g1ant.com/  X 
Gibotshttps://gibots.com/  X 
Glidehttps://www.glideapps.com/X   
HoneyCode (AWS)https://www.honeycode.aws/X   
Hylandhttps://www.hyland.com/  X 
.Internalhttps://www.internal.io/XX  
JitterBithttps://www.jitterbit.com/   X
Kissflowhttps://kissflow.com/XX  
Kofaxhttps://www.kofax.com/  X 
Lansahttps://lansa.com/ X  
Makehttps://www.make.com/X  X
Mendixhttps://www.mendix.com/ X  
Meta:prochttps://www.metaproc.com/  X 
MicroGenisishttps://mgtechsoft.com/  X 
Mulesoft (Salesforce)https://www.mulesoft.com/   X
Netbotixhttps://www.nexbotix.com/  X 
Nicehttps://www.nice.com/  X 
Nintexhttps://www.nintex.com/XXXX
Nividoushttps://nividous.com/  X 
Olive.Aihttps://oliveai.com/  X 
OpenRPAhttps://www.openrpa.dk/  X 
Orchestrahttps://www.onvisource.com/  X 
Outsystemshttps://www.outsystems.com/ X X
Pegahttps://www.pega.com/ XX 
Perpetuuitihttps://perpetuuiti.com/  X 
Pineapplehttps://pineapple.build/X   
Power Apps (Microsoft)https://powerapps.microsoft.com/ X  
Power Automate (Microsoft)https://powerautomate.microsoft.com/  XX
Pulse (IMAGINiT)https://www.imaginit.com/   X
QuickBasehttps://www.quickbase.com/ X X
Quixyhttps://quixy.com/X   
RapBothttps://rapidautomation.ai/  X 
Redwoodhttps://www.redwood.com/ XX 
Retoolhttps://retool.com/ X  
Robocoder (Rintagi)https://www.rintagi.com/XX  
Roboosthttp://roboost.info/  X 
Salesforce Platformhttps://www.salesforce.com/products/platform/overview/ X X
SAP Process Automationhttps://www.sap.com/  X 
Scoop Roboticshttps://www.scooprobotix.com/  X 
Sisensehttps://www.sisense.com/X  X
Skan.aihttps://www.skan.ai/  X 
Skyvehttps://skyve.org/XX X
SIB Visionshttps://www.sibvisions.com/ X  
Softrhttps://www.softr.io/X   
Stackerhttps://www.stackerhq.com/X   
Symphonyhttps://www.symphonyhq.com/  X 
TagUIhttps://tagui.readthedocs.io/  X 
Thunkablehttps://thunkable.com/X   
TrackViahttps://trackvia.com/
Tray.iohttps://tray.io/   X
Trubothttps://www.datamatics.com/  X 
UI Bakeryhttps://uibakery.io/ X  
UiPathhttps://www.uipath.com/  X 
Verinthttps://www.verint.com/  X 
Vinyl (Zudy)https://zudy.com/X   
VisualCronhttps://www.visualcron.com/  X 
vOnehttps://www.yourvone.com/X   
Uniphorehttps://www.uniphore.com/  X 
WinActorhttps://winactor.biz/en/  X 
Winwaihttps://www.win-wai.com/  X 
Workatohttps://www.workato.com/   X
Workfusionhttps://www.workfusion.com/  X 
Wrkhttps://wrk.com/  X 
Xalt (Hexagon)https://hexagonxalt.com/    
Xpertrulehttps://xpertrule.com/  X 
Zapierhttps://zapier.com/X  X
Zaptesthttps://www.zaptest.com/  X 
Zoho Creatorhttps://www.zoho.com/ X  

Autodesk Fabrication COD Object Model

I’ve added graphics to better illustrate the Autodesk Fabrication Object Model for COD Scripting,

If you write COD scripts for CADmep, ESTmep or CAMduct, this can help you better understand how the various properties and objects are structured when you write your code.

If you want to learn more about Fabrication COD Scripting and how to use these resources, register for MEP Force 2021 and look for my Fabrication Scripting sessions.

You can find links with the other Fabrication COD Language Reference items here…

Fabrication COD Scripting Language Reference

Individual Object Models can be directly accessed here…

There’s also a link to a printable PDF of the Object Models….

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.

Script Library Updated / Enhanced

COD Script Library was updated for JOB and LIBRARY Scripts. You can download them for free here. Here’s a summary of changes.


Script Consolidation

In the past, there were 69 to 75 COD Scripts to export all the various properties to separate TXT files. Properties that have multiple entries per ITM like Connectors or Seams are still exported to separate files because the data columns don’t line up between them and there are multiple lines per ITM.

All other properties where it’s a single property per ITM like Spool or Material have all been consolidated to a single script and single TXT file. The WriteAllMiscProperties(Job).cod and WriteAllMiscProperties(Library).cod scripts are where you can extract all other properties so no matter what combination of properties you want, there’s less data files to sort through or scripts to run.


Improved Script Properties Display

The properties scripts were displayed script settings before running the script. They still are but additional properties are displayed where appropriate along with some additional properties the scripts now support (both covered later). In addition to the additional items, you’ll note that clicking the No button no longer cancels the script. Instead, clicking No takes you to the Advanced Configuration (also covered later) where you can change some of those settings.


Advanced Configuration – Scan Folder (LIBRARY Scripts Only)

By default, the script looks to the root of your ITM Library folder of your database. This value can now be changed to point anywhere else. You may want to point to a folder of ITM’s outside your Configuration if that’s where you store your ITM’s. You can also scan further down the folder structure so you can perhaps skip exporting Duct ITMs but instead scan and export Piping ITMs.

Here’s what this looks like. Note that the path may use forward slashes ( / ). You can however paste a new path that uses backslashes ( \ ) and it should still work. There’s no option in COD Scripts to allow you to browse to a folder so make sure you type or copy/paste carefully.


Advanced Configuration – Export File (JOB and LIBRARY Scripts)

Similar to the Scan folder configuration, you can now also change the default export file name and location. Specifications for specifying paths are the same as above.

Also note that while you CAN specify “CSV” as the file extension, I recommend using “TXT“. When Excel sees a CSV file, it just opens it without giving you the ability to specify how data is interpreted. Using a “TXT” extension makes Excel prompt you for “How” the file should be read like which character is used as the delimiter or defining which columns are Text vs other data types.

Some numerical data or values can be interpreted incorrectly by Excel if you don’t explicitly tell Excel to treat them like Text. A good example of this is the size 1-1/2″ or 1-1/4″. Excel thinks these are dates and will display them as 1/1/2012 or 1/1/2014 respectively if you don’t explicitly tell Excel to treat them as Text. Using that “TXT” extension on the export file is a safe guard against this issue.

A lot more detail that you likely wanted but hopefully it’s helpful, here’s what that looks like….

Note you may see an extra slash character between the path and file name. This is can happen if your MAP.INI (Edit Configuration Utility) includes or doesn’t include an ending slash. I may add code to clean this up later but COD Scripts and Fabrication seem tolerant of this extra slash so no need to worry about it (or edit it out if you like).


Advanced Configuration – Folder/Path Wildcard (LIBRARY Scripts Only)

Instead of editing the folder you’re going to scan, alternatively you can specify a wildcard to use to limit which folders to export data from. As an example, you could specify *WELDBEND* and properties will only be extracted for ITM’s within folders containing the name “Weldbend”. Wildcard specification is not CaSe SeNsItIvE. By default, the wildcard is ( * ) to extract from all folders. Here’s what that looks like…


Advanced Configuration – File Wildcard (LIBRARY Scripts Only)

Just like the Folder/Path Wildcard specification, you can specify a wildcard for which ITM files to extract properties from. As an example, you could enter *PIPE* and you would export only from ITM files that contained the work “Pipe”. Again, the wildcard is not CaSe SeNsItIvE. You can use both Folder and File wildcards to very narrowly specify your data export scope. Default wildcard is an ( * ) to extract from all ITM files. Here’s what that looks like…


Advanced Configuration – Delimiter (JOB and LIBRARY Scripts)

Data exports by default use a Comma ( , ) to create a Comma Separated Value file. If your Fabrication Database uses commas in folder names or ITM file names this can cause data fields to shift in Excel when opening the export file. If this is the case for you, you can specify a different character to use to separate the data fields in the export file. The Pipe ( | ) character is always a good “rarely used” character for this purpose.

As a side note, it’s not a good practice to have commas in folder or file names. You can read more about that here. This option is really here in case you’re stuck with commas and haven’t fixed them yet.


Advanced Configuration – Max Custom Data Index (Only Scripts that export Custom Data)

Only used for scripts that export Custom Data, you can specify the maximum Custom Index value. Unfortunately, COD scripts have no ability to determine how many custom data entries you have or which index numbers are used without jumping through some hoops. To work around this, you need to specify the maximum Custom Data Index value. The script will then loop through all those numbers and find which ones contain values and remembers them. It then exports only those custom index values so that the script runs efficiency.

By default the script uses 5000 as the maximum index number. But as you can see from the below example, the maximum index number is 10000 so we need to specify that. We look at all 10000 possibilities (it goes fairly quick) and takes note that there’s only 8 indices used and then extracts only those 8 from the ITM’s. In the past, the script would loop through all 10000 for each ITM really slowing things down. Now, even if your largest number is 6 or 7 digits (not recommended) the script will still be fairly quick.

Here’s what that Delimiter Character configuration option looks like…


Summary

In the past, if you didn’t like the export files names, where they went, or wanted to change the scope of which files or folders you extract data from, you could have always changed the COD script code yourself. You now shouldn’t have to. Hopefully this makes running these scripts a little more flexible and user friendly.

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.

More Fabrication Scripting Updates

Autodesk Fabrication Scripting resources have had a few updates more updates. Believe it or not, the 22 ADD/REMOVE functions that apply to ITM Product Lists have been on my “Undocumented Functions To Research” list for over a decade. I’ve finally gotten around to figuring out how they work and documenting. Here’s a summary of the changes…

  • Global Miscellaneous Functions
    • Added ERROR function
  • Item Function Reference
    • Added function ADDALIAS()
    • Added function ADDAREA()
    • Added function ADDBOUGHTOUT()
    • Added function ADDCADBLOCK()
    • Added function ADDCUSTOMDATA()
    • Added function ADDDATABASEID()
    • Added function ADDDIM()
    • Added function ADDFLOW()
    • Added function ADDOPTION()
    • Added function ADDORDER()
    • Added function ADDWEIGHT()
    • Added function REMOVEALIAS()
    • Added function REMOVEAREA()
    • Added function REMOVEBOUGHTOUT()
    • Added function REMOVECADBLOCK()
    • Added function REMOVECUSTOMDATA()
    • Added function REMOVEDATABASEID()
    • Added function REMOVEDIM()
    • Added function REMOVEFLOW()
    • Added function REMOVEOPTION()
    • Added function REMOVEORDER()
    • Added function REMOVEWEIGHT()
    • Added function SETDONOTCUTFLAG()
    • Added function ADDLINK()
    • Added function DELETELINK()
  • File Object Function Reference
    • Added function SEEKENTRY()
    • Added function SEEKLINE()

Autodesk Fabrication Scripting – Did You Know?

In the list of COD Scripting updates I just posted, there’s a couple undocumented functions that have been on my list to explore for more than a few years. I’ve finally gotten to them and figured out what they do.

I won’t comment on how long it took me to actually explore what I had listed in my “To Research” list for years other than to say, Procrastination is a Virtue for those with no Patience.

So without further delay…here you go….


Output Function

This first one is the OUTPUT function. You can call it a couple different ways, with and without parenthesis just like the DEBUG function. It doesn’t really seem to matter. It’s really kind of a worthless function in my opinion.

Not only does it only work in CAMduct and ESTmep (not CADmep) it really isn’t that helpful. It just outputs a message to the Console window. I was initially hopeful it would allow me to “script” some of the secret Console command but no such luck. It’s just a message.

You can see in the COD Code editor the below with both syntax examples…

When you run the script, it’ll call up the Console and display the text you specified. You can see from the following example, it doesn’t even space the text when you call it multiple times. Even tried embedding a Carriage Return in the string and still no luck automating via the Console.


Breakpoint Command

The other command is much more helpful and something most folks don’t know about. I have run into a couple now who knew but most it’s not known. I wish I knew years ago…it’s actually a small step closer to what you’d expect in a modern IDE (Integrated Development Environment).

The Breakpoint function calls up the panel on the right. It displays the values of all your variables. You can see how the value of the “z” variable is displayed. When you hit a Breakpoint, code execution stops until you hit the green arc’d arrow. Code execution then continues until you get to the next Breakpoint if any.

You can access the COD Script editor in CAMduct or ESTmep using the FILE pulldown menu. You can also use the editor in CADmep but unfortunately, there’s no way to display it without writing intentionally wrong code to cause your program to fail and display it. You can then use the editor like you do in ESTmep or CAMduct.

One thing to note, BREAKPOINT only appears to work when you execute code from the Script Editor. If you call it from AutoLISP using (executescript “myscript.cod”) or the EXECUTESCRIPT command in CADmep or by right clicking in your Takeoff items in ESTmep or CAMduct, it runs without stopping your code. This means you can leave the breakpoints in your code and edit/debug via the script editor but not have to remove them when executing them un a production setting.

Fabrication Scripting Updates

Autodesk Fabrication Scripting resources have had a few updates. Here’s a summary of the changes…

Stratus Dashboard Header Trick

Quick little Stratus tip. This on for headers on your Dashboards. A normal dashboard doesn’t have the ability to customize the header. However, being Stratus is a web based application, you can inject some simple HTML tags to perform some limited modifications.

Take a look at the following headers….

These headers are a result of inserting some very simple HTML tags. Here’s a look at the Report configuration for these header modifications…

Here’s an explanation of these HTML Tags…

HTML Tag(s)DescriptionUsage
<br>Break Line / Carriage ReturnPlace between text to create a
new line
<i> </i>Italics Text placed between these tags will be italic
<u> </u>UnderlineText placed between these tags will be underlined

A few things to note…

  • You can nest <i>Italics</i> and <u>underline</u> to transform text to <i><u>both</u></i>.
  • More complex HTML tags don’t work, there’s just too many special characters.
  • HTML tags may (will) show in other places like in the output of CSV files and/or other types of reports.

The usage of HTML tags in your Dashboard headers is likely not supported. If you find any errors within Stratus on pages that you’ve used these, you may want to remove them to verify the special characters aren’t the cause of your issues.