Friday, September 30, 2011

A Wizard for the Revit .NET API

On his blog, Spiderinnet has posted information about free wizards, coders and widgest that can be used to simplify the Revit API add-in development process.

From the blog post:

It finally comes out a very user friendly multi-page wizard, various needy coders, and many cool widgets for Revit .NET Addins. They have the following features:

  • Can specify which Revit version and flavour to work with.
  • Can start the specified Revit executable automatically when the Visual Studio project is being debugged.
  • Revit API assemblies will be referenced into the project automatically.
  • The Copy Local properties of RevitAPI.dll and RevitAPIUI.dll assembly references are set as FALSE automatically to avoid confusions and problems.
  • Necessary namespaces are added to source files automatically.
  • External application (IExternalApplication) is supported.
  • External command (IExternalCommand) is supported.
  • Application/command names can be named at will.
  • Transaction mode (TransactionMode) can be specified.
  • Regeneration option (RegenerationOption) can be specified.
  • Ribbon panels (RibbonPanel) can be created.
  • Ribbon buttons (PushButton) can be created.

  • External commands can be added onto ribbon or into menu.
  • Command button images (ImageSource) will be created automatically.
  • The image has both small (Image) and big (LargeImage) sizes.
  • Command invisibilities (VisibilityMode) are supported.
  • The AddIn menifest file (having RevitAddIns XML elements) will be created and put into the user roaming folder automatically.
  • All the Assembly, FullclassName, ClientId, and Name tags in the manifest file will be filled out  accordingly and automatically.
  • Both Application and Command AddIn Type are supported.
  • Both a link to and a copy of the AddIn manifest file will be added into the project.
  • Exception handling code will be generated for both the application and the command.
  • Supports C#, VB.NET, and Managed C++/CLI.
  • Supports both Visual Studio full version and Express.
  • Supports Visual Studio both 2008 and 2010.
  • Supports Revit both 32  bit and 64 bit.
  • Help add various application event handlers at will, specify class/source file for them, register (unregister) them in the OnStartup (OnShutdown) of a selected external application.
  • Help implement the special FailuresProcessing application event handler including failure id lookup, transaction checking, and severity considerations.
  • Help implement the IFailuresPreprocessor interface.
  • Help implement the IFailuresProcessor interface.
  • Help generate various element finders with any combinations of logical operations, filters (ElementFilter, quick or slow), revert or not, and different arguments.
  • Help add UIApplication event handlers and generate registration code. 
  • Help add various document handlers and generate registration code for either  the current document or all documents including existing and coming ones. 
  • Help add more IExternalApplication classes.
  • Help add more IExternalCommand classes.
  • Implement IExternalCommandAvailability interfaces with kinds of options.
  • Implement ISelectionFilter interfaces with kinds of options.
  • Create application manifest files for any existing external applications and deploy a test copy to the Revit addin roaming folder.
  • Create command manifest files for any existing external commands and deploy a test copy to the Revit addin roaming folder.
  • All the project item wizards support both C# and VB.NET.
  • All the project wizard and item wizards support Visual Studio both 2008 and 2010.
  • Can create all kinds of RevitRibbon items in any types of groups, with any options, and in any possible combinations.
  • Create PickObject calls with all possible options and combinations.
  • Create PickObjects calls with all possible options and combinations.
  • Create PickElementsByRectangle calls with all possible options and combinations.
  • Various Element Parameter coders such as infoer, reader, writer, typer, grouper and filter.
  • Various FamilyParameter coders such as infoer, collector, writer, extensioner, and creator.
  • Various Shared Parameter coders such as infoer, creator, attacher, eraser and group eraser.
  • Various Project Parameter coders such as infoer, creator, eraser, reshaper, and extensioner.
  • Various Paramere Converters like Element Parameter to Shared Parameter, FamilyParameter to Shared, Project Parameter to Shared, Shared to FamilyParameter, etc.
  • Create kinds of TaskDialog instances flexibly with the TaskDialoger.
  • Create various Splash Window instances flexibly with the Splash Window coder.
  • Categorize parameters conveniently with the Parameter Categorizer.
  • Fitler element parameters based on kinds of criteria with the ElementParameterFilter coder.
  • Many coders support both C# and VB.NET.
  • Provide a Manifest Navigator widget to navigate to the Revit addin roaming folder of either current user or all users automatically in no time.
  • Provide a RegEdit Launcher widget to launch the RegEdit window with a single click.
  • Provide a Revit Locator widget which can list out all installed Revit products and locate either of them right away.
  • Revit Manifest Organizer which can organize Manifest files in various aspects such as Backup, View, Edit, Merge, Dismangle, Check Integrity, Detect Duplicate, and more.
  • All these Revit Addin Widgets are available for any types of Visual Studio projects.

The wizards (RevitAddinWizard), coders (RevitAddinCoder), and widgets (RevitAddinWidget) can be found in a single installer here.

More information can be found on Spiderinnet's blog.