I’ve been doing some planning for a number of RevitAPI commands that can best be collectively referred to as practice integration. The problem with the current RevitAPI is that you can add toolbars and menus but you can’t provide the level of integration a large firm desires. This leads to training issues, duplication of functionality and code design problems. The standard API is no longer enough…
For example , take (the largely untouched since release) keynoting. Say a practice wants to present for their users a unified keynoting editing/selection database application with keynotes stored in a sql database. At the very minimum here are some of the issues we face designing an application to do this currently.
1.. keynoting is currently dependent on a text file which requires reloading to update the project keynote tree.
2.. There is currently no way of turning off the standard settings->keynotes menu nor extending the existing settings dialog.
3.. There is currently no way of providing a richer experience when selecting keynotes.
4.. There are no keynoting API’s in the current RevitAPI.
You end up creating a half baked application that never really does the job properly. Which is a shame because there isn’t a BIM application that comes close to Revit in terms of software design. And it would be nice to be able to extend this to 3rd party applications.
Here’s my suggestion, and I’m wondering how many agree. What’s needed is an additional plugin system for Revit, exposing appropriate interfaces for selected dialogs and events. The standard installation of Revit would utilise these interfaces for it’s own dialogs. If custom plugins implementing these interfaces are registered with Revit , events raised from standard revit menus and toolbars would utilise the custom dialogs instead. For example Alt-o opens a File->Open custom plugin dialog. This would allow the development of true practice integrated applications while not touching the underlying Revit database.
I can see resellers working in different countries being interested in this because it provides another level of localisation not possible currently. There are quite a few candidates for these plugins. Here’s my list in order of priority:
1.. Project selection (New/ Open/ Save/ SaveAs/ STC dialogs)
2.. Family selection (family/ annotation/ detailing/ including family component placement )
3.. View import/export (Save to library, insert to view dialogs)
4.. Keynoting (managing, settings, selection, editing dialogs)
5.. Revisions (managing, settings, selection, editing dialogs)
6.. CAD format ( export/ import settings dialogs)
7.. All other import/export dialogs (eg DWF, rendering, DWG etc)
8.. All settings dialogs (lines, dimensions etc)
Sort of related, a great post from Jeremy on database integration. Although I can understand the difficulty in extending the RevitAPI compared to ‘dumb’ cad like AutoCAD. I’ve got to say is it REALLY that hard providing pick a point functionality for Revit? I think we’d take anything even if it was limited to 2D views.