I worked part time for a few years as a software developer for HRS Systems, developing an API to integrate AutoCAD drawings with the HASS sprinkler calculation software.
HASS is an industry leading calculation software which takes in a sprinkler system configuration, and returns its performance, including whether or not it is up to spec. Many fire protection engineers (FPE) use AutoCAD to model their sprinkler systems, before calculating them with HASS. The AutoCAD integration allows users to copy a system directly into HASS, and transfer a system back to AutoCAD. This can be useful as often systems are adjusted and redesigned to meet spec within HASS, and then the AutoCAD drawing can be immediately updated given the new design.
I designed the AutoCAD Plugin using C# and the .NET framework, which is the backbone of many Autodesk products. The core of the addon is relatively simple, just transferring coordinates and properties of objects within the drawing. The complications all arrive in the edge cases. AutoCAD is a simple drawing software, and as such representations of different objects could be one of any number of things. Handling intersections, connections, and different representations was the most challenging design aspect of the tool.
I have additionally spent some time beginning development on a REVIT integration API, however the question of what that would ideally look like for HASS and HRS has not been fully answered.