Download presentation
Presentation is loading. Please wait.
Published byMariah McGee Modified over 10 years ago
1
How the Revit API has saved our company time and money
Rod Howarth Bornhorst + Ward
2
Overview Introduction What you can do with the API
Examples of B+W’s commands What others are using it for Technical overview of each macro Where to start learning Learning tools / resources The ‘research process’
3
Goals Describe WHAT can be done with the API
Overview of HOW I’ve implemented the API Show you WHERE to find information on the API Show you how to LEARN how to use it Overarching aim is: ‘teach a man to fish’
4
Bornhorst + Ward and Autodesk Revit
Began implementation in 2005 Used for all structural documentation Fully customized families Continuously looking for ways to improve
5
My experience with Autodesk Revit
I don’t claim to know Autodesk Revit in any great detail I’m coming from a programming background Began developing with API in 2008 I’ve picked up some Autodesk Revit skills along the way As opposed to Autodesk Revit users who learn programming
6
How we have implemented the API
Ideas pulled from years of Autodesk AutoCAD experience Had a fully customized Autodesk AutoCAD setup Mentality of ‘surely there’s a better way’ Here’s what we want to automate – go code it Feedback provided by drafters
7
Various API Examples Load Families Title Block Editor Plotting
Model Stripper Element Numberer Visibility Togglers Quick Placer Plan Copier Detail Number Modifier Sheet Setup Family Management
8
LoadFamilies Replacement for built in Load Families dialog
Loads multiple families at once Small amount of time saved quickly adds up Adaptable to different file structures
9
LoadFamilies – Technical Details
WPF (Windows Presentation Foundation) user interface Allowed a nice code design with data binding Looks better than tab based windows forms Pictures from thumbnail Actual API implementation is simple Just calls document.LoadFamily / document.LoadFamilySymbol FamilyLoadOptions to override ‘family already present’ dialog
10
Title Block Editor Easily update all of your title blocks
Huge timesaver Original way was to manually edit a schedule – took hours Now this is done in a few clicks
11
Title Block Editor – Technical Details
Heavily coupled with title block families Parameters setup for revisions 1-rev 1-desc 2-rev etc To allow for history As well as parameters showing current revision Loops through parameters to find latest revision Then adds a new one
12
Plotting - Overview Replaces inbuilt printing dialog
PDF, DWF, Paper, DWG Automatically names + moves files Links with document management Saves time issuing documents Keeps print settings standard
13
Plotting – Technical Details
ViewPrinter example is best place to start here This shows a replication of the inbuilt menu A lot going on, but nothing too complex Uses DSOFile for document properties Has been a few quirks in the API Different default file names Prints don’t come out in order Has been improvements with every API release
14
Model Stripper Allows stripping of files down to bare minimum
Used for sending models out of the office Removes a lot of our intellectual property Reduces file sizes Still retains BIM data
15
Model Stripper – Technical Details
Uses FilteredElementCollectors to search document elements ParameterFilter, OfClass, OfCategory Calls Document.Delete method with found elements New Revit 2011 API has vastly improved it
16
Element Numbering Sets mark instance parameter
Numbering manually has problems Tedious Human error (C1..C2..C4…C4..) Does Beams, Sections or Columns in Structural Architectural does Doors, Stairs, Windows, etc Run the tool, setup and click the elements One after the other – will number accordingly Allows control over numbering
17
Element Numbering – Technical Details
Document.Selection.PickObject(ObjectType.Element) method Used in a loop Allows users to select elements one after the other Accessible by getting the Reference.Element Property returned Then simply set the Mark parameter of each picked element
18
Visibility Togglers Toggles visibility of certain things on/off
Simple API, small time saved but adds up Emulates Visibility/Graphics menu Allows use in keyboard shortcuts Saves a number of clicks each time Eased transition from Autodesk AutoCAD
19
Visibility Togglers – Technical Details
Used manifest file to make customizable toggles possible Create KeyboardShortcut to External Tools menu View.setVisibility method Accepts category and visibility
20
Quick Placer Keyboard shortcuts to place detail components
Similar to Autocad functionality Custom shortcuts, not Revit shortcuts Imports family if its not present
21
Quick Placer – Technical Details
Reads CSV file for shortcut details Searches this based on user input KeyPress event on Windows Form 1 Character shortcut to open form UiDocument. PromptForFamilyInstancePlacement
22
Plan Copier Select Plan Type to use as base
Select the plans from that type to duplicate Duplicates it for plan types in template View types are setup in template, any version of Autodesk Revit
23
Plan Copier – Technical Details
Uses FilteredElementCollector.OfClass to get a ViewPlan Then GetValidTypes() to get the types of plans in model Gets ViewPlans with that Type Document.Create.NewViewPlan to make new plan newPlan.ApplyTemplate(originalView) to copy original newPlan.ChangeTypeId(newTypeId)
24
Detail Number Modifier
Detail Number automatically set Our numbering is done by View Name Copies the View Name to the Detail Number Does this for all Sections + Callouts on sheets
25
Detail Number Modifier – Technical Details
Uses a category filter with BuiltInCategory.OST_Sheets Loops sheets, and loops all Views in sheet.Views Retrieves View Name parameter from view.Parameters Sets Detail Number with parameter.Set
26
Standard Sheet Setup Sets up sheets at start of project
Ensures standard names + numbering Based on a text file with company standards Saves time, typing and human error
27
Standard Sheet Setup – Technical Details
Reads text file line by line Title Blocks from Document.TitleBlocks Document.Create.NewViewSheet newSheet.ViewName newSheet.SheetNumber
28
Selection Filter User selects elements Only wants certain types
Runs tool, chooses types, It changes selection
29
Selection Filter – Technical Details
Reads the categories and types of elements selected Edits the UiDocument.Selection.Elements set
30
Family Management System for managing and documenting families
Needed an efficient way of providing documentation Old way (PDF version) was too much manual work Multiple parts Saver – saves metadata to files Documenter – adds information + pictures to database Documentation – Intranet page with live view of families Reloader – Updates a project to have the latest families
31
Family Management: Saver
Writes metadata to family files Automatically prompts and updates version number parameter Stores Version, Date, Author, Editor Breaks barrier between Autodesk Revit and ‘outside world’
32
Family Management: Documenter
Does initial import to database Select a family file Automatically gets a thumbnail Can add more pictures Add a comment
33
Family Management: Documentation
Web page with documentation on families Retrieves all the information from the database Reads metadata from files Displays in easy to read and reference manner Easily accessed from internal systems
34
Family Management: Documentation
35
Family Management: Documentation
36
Family Management: Documentation
37
Family Management: Reloader
Ensures the families in the model are the most up to date Gives the option to replace any superseded families Uses the metadata from library to compare to current families
38
Family Management: Saver – Technical Details
ExternalApplication that captures events DocumentSaving, DocumentSavingAs DocumentOpened, DocumentCreated, DocumentClosed Gets/Updates the parameters when saving Uses DSOFile.dll to store metadata after closed
39
Family Management: Documenter Technical Details
Guy Robinson has a thumbnail grabbing library on his blog Can set which view for preview when saving Imports to SQL database Reads the text file with family for sizes
40
Family Management: Documentation – Technical Details
ASP.NET intranet site Stored in SQL database Uses a batch update of a database scheduled every night So there’s no IO access done when user loads a page
41
Family Management: Reloader – Technical Details
Loops through the families loaded in the document Find the matching family in the families database Read the Version that was taken from the metadata in database Compare with the matching parameter on family loaded Give the user a list of families that have been updated Use LoadFamiliy to replace if user selects it
42
What others are doing Autodesk Revit Extensions
Import/Export to 3rd party applications Analysis Software Cost Estimation Software Room ReNumberer Google Earth Export Revit Content Browser/Importer
43
What others are doing Room Phase Copier Case Changer Door Mark Updater
Sort and Mark tool Wood Framing tools Facilities Management Avatech, Tools4Revit RevitTv
44
Where do I start? How do I start learning the Autodesk Revit API?
Question I’ve been asked many times There are a number of tools and resources for you to use Handouts lists the ones I’ve mentioned here
45
Learning Tools + Resources
Started out fairly scarce Now getting a lot better Autodesk and the community actively trying to make it easier to learn But you still have to be prepared to do some “trial and error”
46
C# / VB.Net Resources First step is going to be to learn how to code in C# or VB.NET Make a ‘hello world’ application in .NET first Plenty of information online MSDN Stack Overflow As well as lots of good books on C# Read mainly the first few chapters Head First C# (Stellman, Greene – O’Reilly)
47
SDK Samples Lots of samples Majority written in C#
Can do conversions online A HTML file lists all of them (useful for searching) An External Application puts them all on your ribbon
48
Developers Guide eBook
Shipped with SDK on disk Very good overview Easy to understand Best place to start
49
Compiled HTML Help File
A CHM file is included with SDK Technical documentation on the classes Detailed descriptions and some examples Learn the basics first
50
Webcasts Dev TV introduction to API webcast recording
Regularly done live with question and answers Do a little research into the basics before viewing Check autodesk.com for new live webcasts
51
Autodesk University AU Virtual
Previous years classes are available online Download podcasts and listen to them whilst travelling to work
52
Blogs The community is actively increasing the information out there
Best is ‘The Building Coder’ by Jeremy Tammik of Autodesk Other great blogs: Cad Application Development by Matt Mason Revit Programming by Ed Pitt Bolt out of the Red by Guy Robinson Blog.RodHowarth.com
53
Autodesk Revit API Search Engine
Google custom search engine I set up Only indexes API specific sites/blogs Search for API specific information Without the general clutter of the internet
54
Online Forums Great place for beginners 2 main ones
AUGI Revit API Forums (most active) Autodesk Discussion Group Lots of helpful people to answer your queries More importantly... lots of questions already asked!
55
Autodesk Developer Network
A must for all serious API developers. Direct line to Autodesk when you are stuck If they can’t do it – chances are it’s not really possible. Works on a subscription model with online support and downloads
56
RevitLookup Saved the best for last
This tool is essential to my API development work Allows you to ‘snoop’ the database via the API. Pick an element, and see what properties and parameters are exposed via the API. First point of call Available free online Formerly known as RvtMgdDbg
57
‘The Process’ A number of steps that I generally follow when given a new task Something to use once you’ve learnt the basics This is ‘how to fish’
58
1. Learn how to do it manually
Generally you are trying to automate something Rarely possible to do something you can’t manually do What are the steps/menus to do it in Autodesk Revit?
59
2. Identify key words / areas
What were the menu names? What type of element are you working with? What is the functionality you are doing? Examples Load Family Beam Level Visibility
60
3. RevitLookup Pick the elements you were manually choosing
Snoop the whole database and look for the keywords Try and identify parameters or properties If you can see the property here – you are in luck!
61
4. Search SDK Samples + Developers Guide
Use your key words to do a search Windows can search inside .cs files Can also use the solution with all samples Or the HTML index of samples If there is a sample, life just got easier!
62
5. Search CHM Find more specifics on what you are after
Or use it as a refiner for your keywords For if you haven’t had any luck yet Do a search on variations of your keywords to find correct one Gives you an idea of methods and how to use them
63
6. Search online For if you are still out of luck or are confused
API search engine AUGI forums Autodesk Forums ADN knowledge base
64
7. IntelliSense / Experimentation
If you have at least a starting point Use IntelliSense to find your way through Good for when you are using a sample as a base Create a test application Run it, use Message Boxes or Debug.Write to output info VSTA can be helpful to avoid reloading Autodesk Revit
65
8. ADN / Forums Reached the end of the line – still stuck
If you have ADN subscription, use DevHelp Or AUGI forums can be a great, free, help Usually takes a day or two for responses
66
Conclusion The API is very powerful and can save you time + money!
Big investment up front, but pays dividends There is a lot of information out there nowadays See your handouts for links Buy pre-made Hire a programmer Or learn yourself! I will be at AEC booth if you want to chat
67
Questions ... and don’t forget your survey form! Rod Howarth
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.