Thursday, July 23, 2009

Getting What We Ask For - API

I recall in 2002 that I was against the idea of any sort of API (Application Programming Interface) being part of Revit. Why? I was tired of managing a pile of LISP, ARX applications for AutoCAD/ADT etc. I was tired of making and maintaining them too. The "promise" was if the application needed it, it would get put in the application...Revit that is. I was worried about Revit in the future becoming the "present" (the present back then) AutoCAD situation.

As I understand it, initially the rationale for excluding an API was for control and speed-to-market. No API meant that the code was isolated and safe from outside interlopers and no distractions from providing features. This meant that they could focus and do what was needed to be done without worrying about what someone outside might try to do with the code. I'm making some sweeping generalizations here and may be sweeping some facts into corners.

When Autodesk acquired Revit developing the API became a priority and it has been ongoing since. Each release has seen large strides forward in what can be done externally. Ultimately the scope of the API is much larger than the founders had in mind.

Getting back to my bias against doing this and my selfishness. I liked the simplicity of "one" application doing so much. I hated the idea that I'd have to buy this or that from one vendor and hunt for another tool from yet another vendor. I hated the idea that I'd have to beg someone to make me a "free" utility or worse learn how to do it myself.

Yet the development of Revit can't seem to keep up with our needs and dreams. My personal dissatisfaction (yes I am not satisfied) with 2010 has little to do with the new interface than the lack of substantial tools and finishing existing features. No insult intended to the new massing tools because they represent a significant shift.

There are so many other things that are needed NOW, not in another 12 months. They were needed 12 months, 24 months ago. To name just two...Railings and Stairs. They have not been "touched" since release 7.0. Release 7.0 came out in December 2004 and there have been roughly ten releases since then including "point" releases. That's almost FIVE years ago now without so much as a "look" or "tweak" at stairs/railings. That so much effort was applied to the user interface at their expense is extremely frustrating.

Enter the API. For many things we can contact a developer and pay them to make something we need now. We'll get it faster than Autodesk will "give" it to us too. It will (hopefully) work exactly the way we want it to. Except that the "future" I was afraid of is here. My user interface now includes tools from many different vendors. In 2009 it is a real mess of menus and toolbars. In 2010, they are at least clustered under "add-ins" on the Ribbon, so far.

Here we are in that "future" I was dreading where I can get 3rd party applications from more than a dozen places and spend anywhere from $35 to $thousands. Some applications are charging as much as 25% of of the purchase price of Revit for their tools. Considering how much Revit does for its price and how little by comparison some tools do that seems a bit aggressive and it can make it harder for a firm to seriously consider them. Price is a difficult thing to figure out. Price it light and sell a lot. Now you've got a lot of customers and the difficulties that brings. Price it high and you sell less but you have a smaller pool of customers to please.

The future is here. There are quite a lot of cool tools available now and the API has made MORE possible. I just wish that more of it could be part of Revit itself.


djnelson75 said...

I agree looks like the Autodesk model has come to Revit. "Why should we spend money developing tools when someone else will do it for us"

Robert said...


I generally agree with you too. I will says that there are very good uses of the API for being able to connect Revit to other programs that offer features or functionality that should probably never be in Revit. However I've never been a fan of the idea of building "API" tools to do things that simply should be at the core of Revit. Revit should allow us to document and design a building(s). The tools to accomplish the task should be there, as should the tools that one would expect to make that task relatively streamlined and straight forward (fine replace for example). I don't need an API tool that helps me build a window family (2010 SDK), I need API tools that do cool things like important/exporting data and sharing it with other applications (like my curtain grid, to send to a Mfr.) While I count at least one API developer as a good friend, it is a sad state of affairs, when basic functionality, that should just be there, is not. I guess the motto for API development should be "extend" not "enhance". Many of the tools that you speak of enhance or automate tasks, they don't extend Revit's reach.

Gregory Arkin said...

I'm so conflicted. As a reseller and personally involved with so many of the Revit related products, it's in my best interest to sell them.

On the other hand, I agree with you on the pricing side and can't imagine every user of Revit having to buy $10,000 worth of peripheral software for every station. It is a problem and more and more products are being added.

We now have the issue of balancing the expense of development of the plugin, price point of the product, volume of sales and money coming in to maintain the product and continue it's development of improvements. Of course, like Autodesk, there's the cost of subscription on top of Revit's $725/year.

Let's take all of that and look at the bigger picture. How much productivity does the plug-in add?

Someone making $50k/year is broken out at 40 cents/hour.
Let's take Tools4Revit BID/Dynamic legend product at $400.
$400/40 cents/hour means a break even point if you could save 1000 minutes a year (16.6 hours).

Now, let's take a task like insert a light into each of 100 rooms of a building and you design 10 buildings a year.
How long does it take now to go into each room and place a center hanging light? Let's just say it's 30 seconds/room. Doing the math, that's worth $200 in your labor. If the plugin can do the same job in 2 minutes (which it can by the way), is it worth $400?

I think you have to look at the Return on Investment in productivity increases per person and from that see the value of the plug-in.

Steve, I went so far as to make a blog post asking people what they'd be willing to pay for BID/DL from Tools4Revit. I certainly want to maximize the deployment of the product, increase efficiency of the BIM bees and we're all happier for it.

It's funny to me because it's mostly the AutoCAD users who grumble at every upgrade or subscription renewal and "why does Autodesk have to charge them every year for the software. We were fine using release 14 and we don't use any of these new features."

It's a different mindset. I am working on trying to create a pricing point specifically for Tools4Revit incorporating all of the plug-ins into one product at a reasonable price so everyone can benefit from it. Even Avatech just started charging for some of their utilities that they were giving away for free.

I'm trying to come up with a plan of if someone wants a 6 month free trial of Tools4Revit, let me know and we'll see what we can do in exchange for productive feedback.

I think we really need to figure out how much any of these tools are worth in terms of time savings.

Maybe instead of API, they should rename it PAI (Pay).

Guy said...

While I share your concern I'd have to disagree. It's nothing like the AutoCAD API.

The AutoCAD API exposes (largely) the full API on whick AutoCAD is built. Revit API does not. And I remain confident the underlying API will never be fully exposed. What does this mean?

You'll never be able to build a 'better' stair tool using the Revit API. And that's a good thing. You might be able to automate aspects of the stair functionality but that'll be about it.

However, I understand your frustration with 2010. As I've said before there have been good reasons for this lack of new functionality in the last 2-3 releases. See

The fundamental problem I believe is mgmt are still under resourcing Revit development. IMO to implement a feature in Revit requires significantly more resources than AutoCAD or other non-BIM applications. And mgmt still don't seem to appreciate this.