Jeremy Tammik blogging on the Revit API

Desktop

March 13, 2019

Several people have recently asked how to get started with Forge Design Automation for Revit or DA4R.
I will not get into any nitty-gritty details, since they are well covered by the Forge Design Automation API documentation, which includes DA4R tutorials and samples.
Here are examples of two conversations on planning first steps for DA4R solutions
– Structural analysis with DA4R
– Implementing a DA4R RVT round trip...
Read more →

October 19, 2017

I completed the presentation and recording of my presentation yesterday on Rational BIM programming using Revit and Forge at Autodesk University in Darmstadt, Germany
– Rational BIM Programming recording
– Pleasant walks in the Odenwald
– Some of my favourite recent books
– Where to continue after finishing school
– New AlphaGo Zero is completely self-taught
– TotalPressureLoss units...
Read more →

October 17, 2017

I am attending Autodesk University in Darmstadt, Germany, and putting the final touches to my presentation tomorrow on Rational BIM programming using Revit and Forge.
Here are the slides and the handout document in their current state in PDF format
– Slide deck
– Handout document
– For your convenience, here is the full text of the latter as well...
Read more →

November 03, 2016

I am in Darmstadt preparing the Forge and BIM presentation and hands-on workshop at Technische Universität Darmstadt, Institut für Numerische Methoden und Informatik im Bauwesen, the institute for numerical methods and computer science in the construction industry at the technical university here. Many other larger events are coming up after this
– BIM@TuDa agenda
– Getting started with Dynamo
– Forge news
– New Forge resources
– Forge events and community
– DevDays – Developer Day conferences and accelerators...
Read more →

October 20, 2016

I am in the last stages of preparing my presentation this afternoon on connecting the desktop and the cloud for the RTC Revit Technology Conference Europe. For your and the audience's convenience, here are the materials I am presenting, and some of the main links to further information – Handout – Slide deck – Recording – Samples Connecting Desktop and Cloud...
Read more →

October 06, 2016

Lots of exciting news for today, like every day, once again on the pure Revit API, connecting the desktop and the cloud, and Autodesk Forge
– Isolating an element in a newly created view requires two transactions
– Forge research enquiry
– Connecting desktop and cloud – Roomedit3dv3 live
– Could you demo this remotely?
– Connecting desktop and cloud draft handout
– Table of contents...
Read more →

September 19, 2016

As I already pointed out, it is really high time now for me to get started preparing for the upcoming presentations on connecting the desktop and the cloud. Let's look at what I prepared for that in the past, in the recent almost-present for the Forge DevCon in June, and plans for the future
– Past connecting desktop and cloud samples
– DevCon Forge sample for Freeing Your BIM Data
– Roomedit3dv3 starting point
– Augusto's node.js sample guidelines and naming conventions
– Forge Viewer access to Revit 2D views...
Read more →

March 18, 2016

Our fearless leader Jim Quanci already
explained the importance of our Forge platform and his vision
of the future of making things.
Now, after more than 20 years, the time has come to change the name of our team, ADN, the Autodesk Developer Network
– It's time for a change – Forge and Cloud
– Forge Accelerator in Barcelona
– The Block Research Group at ETHZ...
Read more →

February 26, 2016

Developers frequently lament bad search functionality on Typepad-hosted blogs.
Furthermore, it is always handy to have an offline local copy of any kind of important documentation you need to consult regularly.
With a local copy of The Building Coder source text, you can use your standard system tools to search and index locally in any form you like.
Finally, wouldn't it be nice to have a simple line-by-line index of all The Building Coder blog posts ever published?
– Publishing The Building Coder source and index on GitHub
– GitHub size limitations
– Alternative blogging platforms
– Fork and clone to create your own local installation
– El Perro Semihundido by Goya...
Read more →

November 18, 2015

I am still working on my Autodesk University preparations, and, as always, lots of Revit API cases, both from ADN and Revit discussion forum threads. Let's look at the current state of affairs regarding AU, DevDays, and two of those threads
– AU 2015 – Connecting Desktop and Cloud for AEC
– Regeneration invalidates all geometry
– Autodesk DevDays 2015 and Cloud Accelerator Week...
Read more →

November 06, 2015

Last week, I listed my three Revit Technology Conference classes on connecting the desktop and the cloud, The Building Coder chatroom, and published the full detailed handout of the lab on getting started with Revit macros. This week, I published the notes from the Revit API panel Q&A. So what do we have left to talk about? Oh yes, connecting the desktop and the cloud. That is actually the most interesting of the three, and also the topic of my Autodesk University session
– Connecting the desktop and the cloud
– Message and Takeaway
– The 2D cloud-based round-trip room editor
– FireRating in the cloud
– The CompHound component tracker
– Dotty animated 3D assembly instructions
– Conclusion...
Read more →

June 10, 2014

I spent a wonderful weekend and yesterday's Whit Monday holiday enjoying high summer in Swiss nature with no electricity and a Chäschessi, the Swiss variant of a Jacuzzi or hot tub. Today I am leaving for a ten-day camping vacation in nature in Sweden. Here are two topics I would like to address before leaving that will hopefully keep you occupied and entertained during my absence: Room Editor Live Adding a custom button to the Modify tab Vacation time Room...
Read more →

June 01, 2014

Yesterday, I mentioned some last-minute clean-up of the JavaScript part of my room editor, adding the handlebars module and a call to refresh on save. Today, for the sake of completeness, I'll add a last-minute pass over the Revit add-in part as well, including an even more trivial change. I'll also mention that I had some time out in nature again, before jetting to Toronto for two days next week, celebrating a deep and wonderful sweat lodge or back to...
Read more →

May 19, 2014

When you read this, I will already be sitting on the plane back from New York to Switzerland. Before leaving, though, I wanted to add some more explanations on the extremely fruitful work we accomplished this weekend. I am very happy and grateful that we spontaneously formed such a wonderful team and worked together so enthusiastically, pleasantly and effectively. Most of all, I enjoyed the companionship, competence and professionality of my closest teammate Matt Mason of Imaginit Technologies. In the...
Read more →

May 18, 2014

The New York AEC Symposium and Hackathon is nearing its conclusion. The end and final result demos are scheduled for Sunday noon, coming up all too soon. A bunch of us have been working non-stop through the night since Saturday morning. It is now early Sunday morning, and coffee is eagerly awaited by all. I am participating in a pretty big project to implement a general-purpose 3D AEC model viewer. It is designed to consume models defined in three.js JSON...
Read more →

April 30, 2014

Several people recently brought up the question of running Revit as a service, e.g. in this Revit API forum discussion thread, so let us take a closer look at that. I also finally got around to making some seriously overdue progress on the RoomEditorApp, which I should really rename to SimplifiedBimEditorApp. It now displays a Windows preview form showing the sheets, the views, and the elements they contain in preparation to uploading them to a cloud database. While I'm at...
Read more →

April 17, 2014

Today, let's look at how to determine the size and location of a sheet and the views displayed by it. This is part of the first and most Revit-related of the three enhancement goals for my simplified 2D BIM editor: Display selected BIM elements in their sheet and view context – in addition to pure model space room and family instance elements. Display and edit non-graphical parameters – in addition to the purely graphical family instance outlines. Implement more graphical...
Read more →

April 16, 2014

Yesterday I discussed the typical steps you would need to go through to set up a Revit 2015 add-in development environment. My top priority right now is getting my Tech Summit talk prepared, which involves adding some functionality to the room editor application add-in. I decided to migrate it to Revit 2015 as well. Here are the steps I took: Flat RoomEditorApp Migration Selection.Elements is Obsolete ViewSheet.Views is Obsolete Enabling CopySourceAsHtml for Visual Studio 2012 Download Flat RoomEditorApp Migration Just...
Read more →

April 11, 2014

Today we take a look a profiling tool that works with Revit add-ins, and a few small new enhancements to my RoomEditorApp. The entire following article was contributed by Ben Bishoff of Ideate Software: Profiling Revit Add-ins using GlowCode Performance profiling tools allow you to increase the speed of your code by pinpointing slow methods and methods that are called excessively. For the past several releases, we have successfully used GlowCode real-time performance profiler (www.glowcode.com) to analyse and improve the...
Read more →

April 02, 2014

Today I look at interactively picking sheets to export, instead of views. First, however, I must mention the list of April Fool's posts compiled by Stephen Preston, including my own visionary idea to recycle waste as insulation and curtain wall material around the building producing it. Personally, I like Stephen's own post on the Autodesk Toilet Design Suite product much better :-) Back to picking sheets... This is the third instalment of implementing the new RoomEditorApp features required for my...
Read more →

March 25, 2014

Today I look at interactively picking specific categories to export to the simplified 2D BIM editor cloud database from a list of all categories retrieved from a collection of elements displayed in a given set of plan views. This is the second instalment of implementing the new RoomEditorApp features required for my generic 2D simplified BIM editor Tech Summit presentation. Specifically, I now address steps 4 and 5 in the tentative workflow: Launch the RoomEditorApp export plan views command. Display...
Read more →

March 21, 2014

Today I discuss some uses of generics to elegantly and efficiently handle lists of Revit elements and .NET Windows forms, specifically: One line of code to retrieve all printable floor plan views from the BIM. One line of code to retrieve all selected floor plan views from a Windows check box list. This is my first step starting to implement the new RoomEditorApp features for my generic 2D simplified BIM editor Tech Summit presentation. The current tentative planned workflow steps...
Read more →

December 10, 2013

We held our first West European Devday in Paris on Monday and I am now sitting in the airport headed for Milano. En route to Milano, I worked at testing Joe Ye's trick to trigger the Idling event (potential SetRaiseWithoutDelay workaround) to force an immediate execution of my external event. I also added a comment from Guy Robinson on Revit requiring focus that had me worried for a moment. However, the solution is easy! Before we get to that, here...
Read more →

December 09, 2013

I arrived back in Europe safe and sound from America. Healthy, as well, in spite of air conditioning and the freezing temperatures in some of the Autodesk University conference rooms. Thank God, I went well prepared with long-sleeved woollen underwear and thick heavy sweaters to face the arctic challenges of the desert town. As I hinted at when describing my last day at AU, I realised that I can significantly improve the implementation of the RoomEditorApp subscription to real-time database...
Read more →

December 06, 2013

When you get to read this, I will be sitting in a plane at 30'000 feet over the middle of the Atlantic Ocean... or somewhere over Greenland, whatever. Thursday was the third and last day of Autodesk University. I went out for a quick beer with some of my ex-Autodesk-colleagues from decades ago on Wednesday evening, and a very nice time was had by all. It turned out to be not quite so quick, however, and not just one beer,...
Read more →

November 19, 2013

I solved my two RoomEditorApp Idling issues! They were especially worrying due to the fact that I am planning to present this application in my Autodesk university class DV1736 on Cloud-Based, Real-Time, Round-Trip, 2D Revit Model Editing on Any Mobile Device. By the way, you should now enrol in the AU classes you are interested in – unless you already did :-) Go to the AU class catalogue, sign in, click 'View All Classes', use the filters or keyword search...
Read more →

November 01, 2013

A couple of days ago, I wrote about creating the RoomEditorApp GitHub repository for the Revit add-in part of my cloud-based real-time round-trip 2D Revit model editing application on any mobile device and promised to discuss its implementation details anon. Well, the obvious place to start that is by providing an architectural overview, followed by a look at its external application implementation. I'll also mention an issue with unresponsive Idling that I am currently experiencing and hope to resolve, and...
Read more →

October 28, 2013

I discussed my Revit add-in for my cloud-based, real-time, round-trip, 2D Revit model editing application on any mobile device in depth last spring, with the last update on its implementation status published back in May. Even at that time, since I was mainly concentrating on the exciting cloud aspects of the application, I had added quite a bit of functionality to the Revit add-in that I never got around to documenting, such as External application Automatic immediate BIM update from...
Read more →

May 06, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, here are some issues I tackled since my last report: Updated project description and status CouchDB SVG editor implementation Home page: list all models and select one Updated Project Description I originally thought I would be implementing three cooperating components: the Revit add-in, a cloud-based data repository, and a browser-based JavaScript SVG viewer and editor client for the mobile devices. After struggles with and resolution of...
Read more →

April 25, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I now implemented the first of the next steps mentioned at the end: Separation of symbol and instance data in my add-in and database structure: currently, the furniture loops are placed absolutely, and multiple instances of a symbol duplicate the same loop over and over again at different locations. I will rewrite this to separate the furniture loop definition, defined by the family symbol, and its...
Read more →

April 19, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, here are some issues I tackled since my last report: Project Overview Replicating a CouchDB with Python Same origin policy snag and resolution Learning and struggling with CouchApps Relief moving to Kanso Next steps Project Overview To recapitulate, the grand plan is to grab a 2D floor plan with furniture and equipment layout from the BIM, upload it to the cloud, and make it accessible for...
Read more →

April 11, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I now started looking at storing the plan view room and furniture boundary loop data in the cloud. I wound up the main Revit add-in functionality using the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances, sort and orient its output curves, determine their bounding box and visualise the results in a dynamically generated GeoSnoop .NET form for verification....
Read more →

April 08, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I explained how I use the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances, sort and orient its output curves, and determine their bounding box for visualisation. Today let's look at a simple loop visualisation implementation in a dynamically generated .NET form. The components of interest are: Point2dInt – an integer-based 2D point JtLoop – a closed polygon boundary...
Read more →

April 04, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I looked at using the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances and implemented a utility method SortCurvesContiguous to sort and re-orient the curves it returns into a closed contiguous loop. An alternative and more effective method is to use the Edge AsCurveFollowingFace call instead of AsCurve, as we shall see below. In any case, we want to...
Read more →

April 03, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I looked at using the ExtrusionAnalyzer to create a plan view boundary profile for the furniture and equipment family instances and implemented a utility method SortCurvesContiguous to sort and re-orient the curves it returns into a closed contiguous loop. I did not yet display the code driving the extrusion analyser, though, or discuss my experiences with that. Those are the topics of today's post: Using the...
Read more →

March 31, 2013

Continuing the research and development for my cloud-based round-trip 2D Revit model editing project, I need to determine the boundary loop polygons to represent the furniture and equipment family instances for manipulation on the mobile device. To display a polygon using SVG in the mobile device browser, I obviously need a set of contiguous and sorted curve elements forming a closed loop. I mentioned using the Revit API ExtrusionAnalyzer class to determine the plan view boundary outline for the family...
Read more →

March 28, 2013

I am continuing the research and development for my cloud-based round-trip 2D Revit model editing project. At the same time, Revit 2014 has been announced, and I am sure you are eager to hear more about that, especially from the API point of view, so let's have a look at that first. The Revit 2014 API It is impossible to cover everything, and I have to start somewhere. Here are a couple of highlights: API access to the project browser...
Read more →