DRX For Dummies

In this week’s issue of upFront.eZine, Ralph Grabowski made the following statement, which I believe, needs some clarification:

“All applications that use the DWGdirect API conceivably could run AutoCAD ARX applications, following a re-compile. This means that MicroStation, ArchiCAD, VectorWorks, SolidWorks, IntelliCAD, TurboCAD, and others could support ARX apps through DRX.”

First of all, what is this DRX that Ralph and I keep talking about? I will try and explain without getting too technical.

DRX is a technology, actually a framework, over which a CAD system can be built. It can be compared to the chassis of a car, over which every thing else is fitted. Going along with the car analogy, you can say that Autodesk created a chassis for their AutoCAD car and called it ObjectARX (ARX – AutoCAD Runtime Extension). They then added the various parts to the chassis: the engine (the complex goemetry stuff), the powertrain (the graphics pipeline), the boot (DWG data storage), the steering wheel, gear shift and pedals (user interface) and then finally gave you the keys after making your wallet a lot lighter.

But Autodesk did something more. They made extra holes in the chassis which could be used by other people to fit custom parts (the plug-ins). They then let people know where these extra holes are located and how to create custom parts so that they fit properly into the AutoCAD chassis. In fact, this is the way all the big CAD systems are built.

Coming back to DRX, since it is a clone of ARX, you can say the that DRX chassis is quite similar to the ARX chassis. People making ARX plug-ins will need to tweak their source code and rebuild them to arrive at a DRX plug-in, which will then fit into any CAD system built with the DRX chassis. The point to be noted here is that the CAD system needs to be built using DRX technology. Apart from the new IntelliCAD’s (which are being built using DRX technology), DRX plug-ins will not work into any of the CAD systems Ralph mentioned. It’s like trying to fit a car wheel to the axle of a truck. Sure, both wheels are round and have the ability to roll over a flat surface, but the car wheel just won’t fit the truck chassis.

True, the CAD systems Ralph mentions all use the DWGdirect API, but only to read and write DWG/DXF files, not for system level data manipulation which plug-ins are capable of doing. For example, an AutoCAD plug-in may ask the user to pick a line object in the AutoCAD drawing window and automatically scale it. To make this happen the plug-in developer has to write source code that connects with AutoCAD’s object selection mechanism, queries the current DWG database, modifies the object in the database and finally asks AutoCAD’s display pipeline to show the updated object on the screen. The ARX plug-in source code that makes all this possible is completely different from that of a SolidWorks add-in which does the same thing. You cannot simply take the source code of the ARX plug-in, compile it with the DRX libraries and expect it to work with SolidWorks. You will have to write a completely different SolidWorks add-in from scratch which talks to the SolidWorks framework and makes it do things the SolidWorks way.

I guess you can take a bearing from one car and make it fit into another, or maybe even an engine, after some modifications. That’s because there are standard specifications for bearings. There is no standard specification for CAD systems. Each CAD software vendor has developed their own framework and rarely do they even come close to each other.

In summary, porting AutoCAD plug-ins to a CAD system not built over DRX technology amounts to rewriting it from scratch. That’s the reason I believe that the new IntelliCAD’s have a far greater chance of relieving Autodesk of its 2D customers than anyone else, especialy those who rely on third party solutions. But first they need to get their act together. DRX has the potential to shake things up and I am curious to know what Autodesk intends to do about it.

I sense more DRX wind blowing. Watch this space.