The second day.
I finally got to attend Angel Velez' IFC class – it always clashed with my own in previous years – followed by the product keynote and the Revit API panel discussion:
Before diving into that, here is a handful of snapshots from AU day two:

Angel Velez on IFC
Here are the slides and handout from Angel Velez' class AR20462 IFC Technical Overview and Survey of Autodesk Products, including Revit 2017:
Their content is not identical, so you might want to go through both.
I took a very few notes on some of the slides:
- 8: It makes no sense to talk of IFC without also specifying what MVD you are interested in. Each MVD specifies a subset of IFC that is mandatory, and another is forbidden
- 16: Use reference view MVD only if you cannot use transfer view.
- 42: Check the handout for more info.
- 48: Explained in much greater detail in the repo, and step by step in handout.
- 55+57: You can completely redefine both link and open IFC yourself. Link is more fully supported, though.
Especially noteworthy: the number of downloads of the open source implementation over the course of the years, currently well over 140k:
I snapped up one Forge and IFC related question:
[Q] What settings are used by the Forge RVT IFC translation?
[A] Forge RVT IFC translation uses default settings. We are discussing internally how to enable users to set specific additional options.
Product Keynote
Extremely fragmentary notes from the product keynote:
- Fusion 360, Shotgun, BIM 360...
- Project IQ pilot...
- Project Quantum: connect design, engineering, structural analysis, construction and fabrication. This project will be presented in more detail this afternoon at 2-4 pm in Marco Polo 703, Level 1. In case of interest, email [email protected]. Looks a bit like Dynamo...
- John Jacobs, CIO of JE Dunn Construction, talked about their use of Forge already today to significantly enhance and accelerate real live construction industry projects.
Revit API Panel
My last session of AU day two was the Revit API Panel SD20891 Revit API Expert Roundtable: Open House on the Factory Floor:
Panel Members
We have the following panel members:
- Angel Velez, Senior Principal Engineer, Autodesk
- Mikako Harada, AEC Technical Lead and Americas Manager, Autodesk
- Miroslav Schonauer, Solutions Software Architect, Autodesk
- Saikat Bhattacharya, Senior Technical Consulting Manager, Autodesk
- Sasha Crotty, Revit Core Product Manager, Autodesk
- Jeremy Tammik, Developer Support, Forge Platform Development
This represents an ideal combination of API designers, users and supporters.
Now we just await the participants input.
And here it comes!
Questions and Answers
Q. We heard that wishes now go into Revit Idea Station:
Will you pre-populate it with existing wish list items?
A. Please report them again. Please refer to the existing wish list numbers. We would like to clean up and separate the external ones from internal ones. All the existing wish list items still exist!
Q. How to separate product features and API requests?
A. Use the API tag.
Q. Access to the scale list?
A. We don’t know off-hand.
Q. Will you be exposing APIs for old missing objects, like ceilings?
A. All new functionality is required to be equipped with an API. Other than that, get many votes for it on Idea Station. Cut-off is currently 50, apparently.
Q. Suppressing messages?
A. There are several levels, cf. The Building Coder topic group on Detecting and Handling Dialogues and Failures.
Tell us what specific messages you have problems with. If all else fails, there is a Windows API that you can use as a workaround.
Q. Task dialogue ids are undocumented. We are forced to debug and reverse engineer to determine which id to catch. All info is in the UIFrameworkRes.dll, so it’s available. Could it be documented?
A. You can solve this more easily using logging. Every command can be logged. The log includes the id. Implement a log for everything you do, log all the dialogue info, the more info you have the better.
Q. Instantiating thousands of family instances (millions of bricks, in fact!) takes a long time. Also, a simple transformation. AutoCAD does this much faster.
A. Revit is more complicated. Submit a very specific reproducible case. We need a file to analyse. Analyse whether you can make it more effective. Revit was not designed for that kind of scale. Group things differently. Don’t model individual bricks, for instance.
Q. Multithreading support in the API?
A. Revit runs all API operations in a single thread. We cannot change this easily. We can move other operations into other threads. This applies to model modification. Extraction can conceivably run in a different worker thread. That might be exposed to the API sometime.
Q. Copy monitor in API?
A. No.
Q. Support programmatic material creation with images?
A. Look at the public Revit roadmap:
It is on there (applause).
Q. Is there a significant difference between the size of a Revit family inside versus outside a project?
A. They should be pretty close. The contents are copied from the family into the project, some things are shared, reducing size, nested stuff increases it, …
Q. Does the size matter?
A. High level yes, but it depends. A few instances make no difference. Millions of instances do. So does complex geometry and complex joins. We have worked hard at improving scalability and performance. Views and navigation has been speeded up.
Q. Can I edit a group?
A. No, sorry. Ungroup and regroup.
Q. New functionality coming out is built using the API. How many developers are working on that kind of thing?
A. A lot of our teams. We build as many features as we can on top of the API. They may be working on internal functionality at the same time. API and core functionality…
Q. Can you provide more examples using Python?
A. Nothing planned at this point. Good idea though. Log it.
Q. Point snapping when you manually instantiate. Can that be monitored? We would like to snap to specific points. A snap filter.
A. Not currently.
Q. Documentation has very little detail. Could this be published in a wiki-style format, so we can add comments?
A. We are looking at that. We need something more scalable. There are challenges.
By the way, look at Revit API docs, web-hosted CHM content:
Q. Can we get location points from free-form elements? And rotation?
A. Use DirectShape
instead. We use that a lot, and it is being actively developed.
Q. Can we use free-form surfaces with DirectShape
?
A. The Revit 2015 API introduced the tessellated shape builder. In 2017 the b-rep shape builder was added for curved surfaces. The original Dynamo builder was built early. If the B-rep builder fails, it tries to use the tessellated one.
Q. In the worksharing tooltip info, can the dates be exposed as well?
A. Not to our knowledge.
Q. How can I know when PostCommand
is complete? Or a modal window?
A. Maybe using the Idling event? Or the progress changed notification?
Q. Can I host a fixture to linked elements?
A. We guess not. One participant adds: I wouldn’t do that. We tried it. As an MEP coordinator, we explicitly un-host things for many reasons. Another participant copies the fixture to keep track of …
Q. How much custom development was done to integrate Dynamo?
A. Dynamo uses the Revit API. It may use one or two undocumented API hooks, but definitely nothing fundamental. If it was, it should be made public.
Q. Is the Dynamo player supported by the API?
A. It has no additional API at all. It is simply built on top of Dynamo and the public Revit API.
Q. Can I control the visibility state of face edges, hide specific face edges? E.g., for multiple tessellated faces, hide internal edges.
A. No. In the UI, you might be able to manually override. In direct shape, you have control over categories, and could use those to control visibility.
Q. What do you say about ODA Teigha BIM?
A. No comment. We do however see that there is considerable interest for that sort of thing out there.
Q. Will we see Forge design automation support for Revit?
A. Yes, we are looking at that. The Forge model derivative API already supports generating IFC and DWG from RVT.
Q. Access to link visibility settings?
A. No.
Q. Access to element relationships? Stair to handrail, e.g.
A. In many cases there is a one-directional relationship. You can easily invert it, cf. blog post number 16 from 2008 on the relationship inverter.
You can use filtered element collectors to very effectively implement such a relationship inverter.
Q. Debug and continue?
A. Yes! Please refer to the recent blog post on edit and continue using 'attach to process' and the AddInManager.
Q. New database connections, e.g. SQL server 2016?
A. Please submit to Revit Idea Station.
Q. Will you recycle aging Revit Idea Station entries?
A. Yes, if a wish sits for months with few votes it will be archived.
Q. Is 50 the right threshold for API wishes?
A. The number one API wish list has been implemented and had more votes than that. We may consider lower rated wishes as well.
Notes from Previous Revit API Panel Sessions
Here are the notes from previous similar Revit API panel sessions:
- SD5156 – The Revit API Expert Panel at Autodesk University 2014
- The Building Coder Revit API Panel at the Revit Technology Conference RTC Europe 2015
- SD10181 – Revit API Expert Roundtable at Autodesk University 2015
- RTC 2016 Revit API Panel, Idea Station, Edit and Continue
Session Materials
Here are the class materials: