I hope you had a successful Easter egg hunt.
As you probably noticed, I have been focusing on the research and implementation of my cloud-based round-trip 2D Revit model editing project for the upcoming Autodesk internal tech summit in June as much as my day-to-day tasks will allow.
To recap, the basic idea is simple: implement an example of round-trip minimal simple editing of a 2D rendering of a Revit model on any mobile device with no need for installation of any additional software whatsoever beyond a browser.
To keep the editing task as minimal and simple as possible, I just envision changing the 2D location and orientation of the furniture and equipment within the boundaries of the selected room.
Such an editor can be realised on any mobile device using JavaScript and SVG, scalable vector graphics, as I showed in my prototype room polygon editor using the Raphaël JavaScript SVG library.
Aside from the editing component, this workflow will also require:
The data repository is fed from the Revit model and queried by the mobile device editor. It also manages changes to the furniture and equipment location and orientation.
The editor displays the room, furniture and equipment and enables translation and rotation of the latter, which updates the repository data.
The Revit add-in can optionally be expanded to automatically query and update the Revit model based on new furniture and equipment locations, resulting in the following workflow:
I already discussed my current candidate for the cloud database using the CouchDB NoSQL database implementation and IrisCouch free hosting service.
Regarding the Revit add-in retrieving the room and furniture 2D boundary polygons, I also looked at the retrieval of plan view room boundary loops and family instances in a given room.
Next steps will include enhancing the Revit add-in to extract suitable boundary loops to represent the furniture and equipment in the mobile editor, and above all the data repository implementation.
As a very happy surprise, I now found a beta site to test the existing functionality and add even more, by hooking up the mobile device furniture layout editing functionality with a restaurant cash register to implement a fully automated restaurant seating layout and floor cleaning system.
The basic idea is to equip the restaurant furniture with unobtrusive mobility support and link the virtual model of the restaurant and its furniture with the real-world objects.
All that is required to provide real-world control over the furniture position are concealed wheels and locking devices inside the table base. The wheels are normally locked in position, and their existence goes unnoticed. They can be unlocked and driven by motors for displacement.
The entire restaurant layout can thus be rearranged via the 2D layout editor on the mobile device, with no manual intervention whatsoever required.
Each piece of furniture also includes location detection support. Besides the automatic rearrangement triggered by updating the virtual model, the inverse is also supported: moving the furniture around manually can trigger the virtual model to be updated instead to reflect the new real-world positions.
Here is a snapshot of the restaurant cash register showing the original layout before editing:
The cash register lives in the pillar in the centre of the restaurant. The pillar is not displayed on the cash register screen snapshot above:
The bar in the corner is marked in red on the screen snapshot, and its position cannot be edited:
This layout is stored in a Revit model and processed fully automatically via the following steps:
Here is the same model in Revit:
The SVG editor displays it like this in the browser on any mobile device:
Rotating and moving the tables in SVG triggers the synchronisation chain and drives the real-world furniture to its new position:
As you can see, the table base looks completely normal and can easily contain the required motors, wheels, locking and location devices:
Mobile autonomous furniture obviously also vastly facilitates the restaurant cleaning.
The furniture is programmed to flock together at one end of the room each night, making space for a cleaning robot to roam freely, and moves over to the other end of the room after the first half has been covered.
This obviously enables much more effective and thorough cleaning than if the furniture is left in place:
It is fascinating to see BIM expanding into new hitherto unexpected areas, and unbelievably exciting to participate in the process!
I trust you will find similar opportunities to embrace this paradigm and successfully use the Revit API to support expanding your applications and ideas into other new niches.
I am looking forward to keeping you posted on the further progress of this ongoing project!
By the way, talking about new niches and programming in and for the cloud, here is an utterly cool JavaScript physics sample simulating ripping a curtain of tearable cloth.
It provides an incredibly compelling and sheer unbelievably compact example use of HTML5, Canvas, CSS and JavaScript for an interactive graphical physical simulation in just three hundred lines of code.