ForgeFader UI, Lookup Builds, Purge & Room Instances

Blogging despite having already exceeded my work quota for the week, but there is so much to share...


ForgeFader User Interface

Yesterday, I mentioned the new ForgeFader and RvtFader samples to calculate and display a 'heat map', i.e. colour gradient, representing the signal loss caused by the distance and number of walls between the signal source and target points spread throughout a building using JavaScript and three.js and the Revit API, respectively.

Cyrille Fauvel implemented the shaders displaying the calculated colour gradient texture in the Forge model, and Philippe Leefsma‏ added a neat user interface to control the attenuation values, grid density, and turn on and off the display of the raycasting rays:

"Forge Fader" WiFi signal attenuation simulation by @jeremytammik, Shader by @FAUVELCyrille, #ReactJS UI by @F3lipek

— Philippe Leefsma (@F3lipek) April 6, 2017

You can try it out for yourself in the Fader sample.

ForgeFader user interface

RevitLookup Builds

Do you use RevitLookup?

If not, you might be best off to stop whatever you are doing right now and install and test it first.

You will not regret.

It is simply an interactive Revit BIM database exploration tool to view and navigate element properties and relationships.

Peter Hirn of Build Informed GmbH very kindly set up a public CI for RevitLookup at using Jenkins in a multi-branch project configuration to build all branches and tags from the GitHub repository. The output is dual-signed with the Build Informed certificate, zipped and published to an Amazon S3 bucket. For more information, please refer to the Revit API discussion forum thread on CI for RevitLookup.

RevitLookup builds

Purging Types, Families and Materials

The Revit API provides no direct access to purge, and this has been high on the add-in developer wish list for a long time, cf. the discussions on purging unused text note types and determining purgeable elements in general.

Now, Harry Mattison of Boost your BIM provided clever solutions to purge types and families and purge unused materials.

The former needs to handle and roll back if an error occurs due to attempting to delete the last type in a system family.

The latter uses the DocumentChanged event, rolling back transaction groups, and other good things do find materials that can be deleted without elements being modified. It takes a bit of time to run because it is deleting all materials and undoing the deletions that modify other elements.

Many thanks to Harry for implementing and sharing these long-standing wishes!

Retrieving All Family Instances in a Room

Question: I am interested in knowing the Revit family instances that are contained in a room. Apparently, Revit Rooms are currently not handled by the Revit to Forge translation. For a near term workaround, do you know of a Revit plug-in or script that generates a spreadsheet to report for each room in a model, the family instances contained by the room? I heard the Revit API's support this, but have not seen or verified it. The spreadsheet could be as simple as a three-column table that lists Room ID, Room Name, and Family Instance ID, where the ID is the Revit Element ID.

Answer: Sure; look at the RoomEditoreApp sample, in the module CmdUploadRooms implementing the external command to upload the room data to my cloud database.

The lines L157-L217 implement code to retrieve the furniture and equipment contained in given room.