The first day at Autodesk University was jam-packed full and exciting as always.
My main highlights were:
- The Keynote session
- The DevHack
- Arnošt Löbel's class SD10752 on Revit External Services
- The Revit API panel
I'll discuss Arnošt's class and important information later separately.
Here is my keynote photo album:
The keynote featured the following speakers:
Here are my very short and possibly rather cryptic notes on the event:
Lynn Allen checked an item off her bucket list and was accompanied onto the stage by a star wars escort of a dozen-plus armoured stormtrooper warriors:
Rather a lot of loud music and break dance.
The production of a car has a much larger environmental impact than its entire lifetime of running it. More important to improve the process of making it than improve its running. Look at the right problem to address. There won't be a shortage of jobs, but a shortage of good people. How can you attract good employees? People care more about doing meaningful work than perks.
Andrew McAffee, MIT, author of The Second Machine Age. Analysis human development, ever increasing use of resources. Innovation. Dematerialization: use of basic commodities is sinking: alu, copper, potash, phosphate, lead, iron and steel. Computerization. Bottomless thirst for resources is being replaced by a bottomless thirst for information, code and computerisation. Very optimistic! Two remaining challenges:
- Global warming.
- Economic problems
Diminishing labour class. Capital versus labour: Corporate profits versus GDP is in a healthy place. Non-farm labour share is sinking dramatically since turn of the century. What happens to people as their skills get left behind? Can we unplug all the robots? No, we do not want to go back.
We are restoring forests. Whales are coming back to NYC.
The next 20 years will change our work as much as in the past 2000. Four eras: hunter and gatherer, culture, industrial, information. Cusp to next era: augmented age. Augmented cognition. Tools, levels of computing: passive → generative → intuitive → empathic. Computers explore entire solution space and find solutions we never imagined. Autodesk and Airbus: generative design project. Save half a million tons of CO2 emission per year for just one single improved component. Intuition: learn by observation. Pay attention, remember what happens next, retain a pattern in your mind. Machines are learning to learn. Empathic: embed human reactions into the system. Give you not just what you ask for, but what you really need. Project Hive, a pavilion built by cooperation of robots and humans. It could not have been built by either alone.
Dr. Hugh Herr, MIT Media Lab, lost both legs from frostbite in the eighties. Now he is back to climbing with artificial limbs. He is climbing at a higher level than before. His artificial limbs enable him to achieve things than natural limbs cannot.
With technology, I am free.
IoT, give the computer a nervous system. Bandito bros in LA. Guinness world record for the longest car jump, first cork screw and double 360 loop. Feed the input from test drives back into the design of a car chassis.
This is session SD10181 Revit API Expert Roundtable – Open House on the Factory Floor.
- Find answers to Revit programming questions bugging you
- Meet and make yourself heard to the Revit development team and ADN experts
- Discuss your needs and wishes with Autodesk employees and your peers
- Gain a first-hand impression of the current hot Revit API issues
Interact with a panel of Revit API experts from Autodesk to answer your questions and discuss all relevant topics of your choice. For anyone writing add-ins for Revit, this is the perfect forum to better get to know the people who shape the APIs you work with and explain your views, ideas, and problems face to face. Please note that prior .NET programming and Revit add-in development experience is required. This class is not suitable for beginners.
We meet, introduce ourselves, and discuss advanced Revit API issues. Please also refer to the notes from previous similar Revit API panel sessions, e.g.:
- SD5156 – The Revit API Expert Panel at Autodesk University 2014
- The Revit API Panel at the Revit Technology Conference RTC Europe 2015
- Arnošt Löbel, Revit Development, Senior Principal Engineer
- Augusto Gonçalves, ADN, Senior Developer Consultant
- Ian Keough, Principal Engineer, Dynamo Expert
- Jeremy Tammik, ADN, Principal Developer Consultant
- Mikako Harada, ADN, AEC Technical Lead
- Saikat Bhattacharya, Autodesk Consulting, Technical Consultant
Questions, Answers and Notes – Live!
[Q] PostCommand during Idling suddenly crashes Revit since Revit SP2. What happened? It is giving us a bad reputation.
[A] It worked in SP1, and crashed in SP2?
[Q] Yes. It actually crashes Revit, Revit just disappears. We did raise a case for this.
[A] You need to make sure this is reported properly and we will look into it. We have to be able to reproduce it. Please describe exactly how we can reproduce the issue for testing and analysis and verification that our fixes really help. There was a problem of using PostCommand within PostCommand. That part was fixed and has been released. We also try improve the pre-release handling so testing can be improved. Another issue: some commands could not be posted. That has been fixed in Revit 2016. Unfortunately, this introduced a different issue that caused an exception to be thrown. If you have bad reviews in the AppStore due to this, please contact hazel Wood and ask her to arrange with the AppStore customers to fix those detrimental comments.
[Q] We have a modeless app. Revit goes into edit mode. The Idling thread is not running due to the edit mode.
[A] Unfortunately, this is not possible. We are not in control of Idling. If Idling does not come to your application, we cannot help. When the first Idling call occurs, you can control whether further calls should be made. If you want more control, you might want to look at the external events instead. Second part: how to find out whether it is possible at all to communicate with Revit? There is no such API call, e.g. to ask whether Revit is busy.
[Q] Wish: Could we have an event so that Revit can tell us, 'I am ready to accept requests'?
[Q] Locking a custom family within another family. When you move a family instance, another instance should follow it.
[A] Use DMU, dynamic model updater. Yes, please look at the DynamicModelUpdate AssociativeSection SDK sample.
[Q] I implemented a Revit add-in that exports all schedules in the model to Excel. I used the built-in ViewSchedule.Export method. Unfortunately, it just exports the schedule data, but does not provide the element id enabling me to link it back to the source elements to connect the external data back into the BIM. Could we have an element id added to the schedule rows? Or is there some other solution?
[A] In Autodesk Consulting, we often address this by adding shared parameters that hold the element id or UniqueId so that these show up automatically in the schedule.
[Q] An issue with shared parameters. I have text, numerical and Boolean valued ones. When creating a shared parameter in grouping, they are allowed or not allowed to have different values. Certain parameter types are not allowed to vary within groups, only text ones. This is the same in both UI and API. This is not a bug, more a wish list item.
[A] Please submit a wish list item with a minimal reproducible case and use case to the Revit API discussion forum.
[Q] I would like more API access to the ribbon. How can I put something into the ribbon without a label?
[A] Yes, the Revit ribbon customisation functionality is rather limited. This sounds like another wish list item. Please avoid creating workarounds for things like this, because that will probably cause problems in the long run. We prefer hearing about your needs and trying to address them directly. The initial ribbon was not customisable at all. That was intentional. The limitations are partially intentional.
[Q] How about adding a label to the ribbon? And the little ticks that you have in the corner of the panel? Those two things would be really useful.
[A] Please log a wish list item for that as well. Thank you.
[Q] I have a question about transactions, transaction groups and sub-transactions, and how they affect the undo list. I would like to avoid partial undos. Surely there must be a way to roll several transactions into one in the undo list.
[A] Yes, this can be done. The transaction group is the solution for this. All transaction can be rolled into one single undo item by calling Assimilate on the group instead of Commit. This does not just affect the user interface, but really saves space in the undo stack as well. When you assimilate, you can also define the name that appears and is displayed to the end user.
[Q] What are the top five wish list items?
[A] We cannot share certain information for legal reasons. We also do not want to get your hopes too high. Until we are done we don’t know for certain whether we can complete anything at all. The priorities are affected by a number of factors: number of requests, expense, gains, feasibility, marketing, project management, etc.
[Q] My add-in was affected by the Revit 2016 R2 release. As a developer, we need to test the new functionality introduced between releases before it becomes public. As Autodesk moves towards continuous releases, how are we going to be able to test these changes before they are released?
[A] Become a beta tester. In the case of the R2 changes, some of the effects on add-ins were unintended. Lessons were learned. The update was totally binary compatible. In real life, even if it is binary compatible, some unintended changes behind the scenes can still break things. It helps if the add-ins really only makes use of the API in a legal manner.
[Q] I have a PickPoint question, or possibly a wish list item: Does PickPoint support snapping? We are placing a face based family instance.
[A] We are working in this area. Look at Arnošt’s presentation on external services. Please do submit a request for your exact need. Letting us know will always help. There might be another workaround: you can pick a 3D point by temporarily setting up an appropriate work plane.
[Q] Pipe fittings and MEP. We use categories to differentiate pipes, fittings, etc. For fabrication, this is harder, because they are all fabrication parts, one single category.
[A] First step might be to use RevitLookup and examine the properties. Please let us know about your needs.
[Q] Many Revit API functions just return true or false. Could we have more information on why it might have failed? For instance, view sets.
[A] Sorry :-) There are obviously some historical reasons. These often come from the first API generation. Communication was limited. Newer functionality should behave better.
[Q] We see solid modelling errors in Revit. Is the kernel really the same in AutoCAD, Revit and other products? That seems improbable.
[A] The modeller really is the same. All products use the same modeller internally. It has its own API. Each product uses the modeller differently and creates its own wrapper for it. If you see a problem, please report it to us. Thank you!
[Q] Can we call a Dynamo script from within a Revit add-in?
[A] The official answer is no. Unofficially, you should check out the dynamo automation package to allow Dynamo to start up Revit as a batch process using journaling and launch Revit on top of Dynamo, also launched via journaling. Search for Dynamo automation on GitHub.
[Q] Adding shared parameters seems a bit inefficient. You have to switch to a different shared parameter file. Could this be improved? Just create a shared parameter on the fly?
[A] Yes, this area is not beautiful.
[Q] Wall justification. I would like more options for them, and a placement point for columns, not just offsets.
[A] Please submit a wish list item for these. Thank you!
Many thanks to everybody, participants and panellists, for your enthusiasm and interest!