[Radiance-general] Revit to Radiance proof of concept

Greg Ward gregoryjward at gmail.com
Wed Feb 24 16:58:25 PST 2016


Wow, Schorsch -- that's quite the unexpected gift!  We were just talking about a Revit exporter at the last Radiance workshop.  Everyone agreed it was a good idea, but no one really knew where to start.  Thanks for giving us the leg up!

Cheers,
-Greg

> From: Georg Mischler <schorsch at schorsch.com>
> Subject: [Radiance-general] Revit to Radiance proof of concept
> Date: February 24, 2016 2:53:15 PM PST
> 
> Hi all,
> 
> I have recently had access to a Revit installation and decided to experiment
> a bit with its API. The resulting Python file is attached for anyone to try.
> I consider this a proof of concept implementation at the moment. There are many
> rough edges, and lots of features missing that would be expected in a full blown
> translator. It has been tested on the sample files supplied with Revit, but not
> on any other files.
> 
> I may or may not have access to Revit in the coming months, so this is what
> you get for now...
> 
> 
> Technical considerations
> 
> Revit doesn't have the same geometry primitives as Radiance, but
> uses B-Rep geometry in winged edge representation.
> Surface elements don't close in on themselfes. This eliminates
> ambiguous positioning issues for the software. For an exporter,
> it means that eg. a cylinder is not one surface, but typically
> composed of two half-cylinders. A circle consists of two half
> arcs, etc.
> Recognizing simple volume types requires analyzing and reassembling
> several surface elements. This only seems to make sense for
> circles/rings and cylinders (cones?) which are sufficiently easy.
> 
> 
> Working features:
> 
> * Exports all geometry visible in the active 3D view (minus RPCs)
> * Seperate function for exporting topography meshes.
> * cylinders and circles/rings as Radiance primitives.
> * Planar faces as polygons (including holes)
> * All other surfaces tesselated into triangles (rectangles for
>  partial cylinders.
> * Names based on level and leaf node family name (type name for
>  non-family types) and material
> * Metric or imperial export (configured in code)
> 
> 
> To do
> 
> * Turn into an external add-in
> * Export RPCs in some way
> * Export regions (parts of a surface using different color/material)
> * Alternative primitive naming options (substitution lists?)
> * Possibly split up the output into several files (eg. by level?)
> * Detect cones (are those always coaxial in Revit?)
> * Export unmodified (other than positioning/scaling) Family instances
>  as seperate objects to be included via replmarks.
> * Export (sufficiently large) meshes as Radiance meshes
> * Export normals with curved surfaces for smoothing
> * Export material properties in addition to the names
> * Export light sources
> * Export views
> * Maybe export elements via selection instead of a complete view
> * Dialog box to configure output interactively
> * others?
> 
> 
> Issues to research
> 
> * It's not always easily possible to figure out on which level a certain
>  element resides (assuming they are associated with a level at all).
> * Small objects with fine detail may result in many zero-area polygons.
> * Installing an export function as a macro is clumsy. There may be a way to create
>  an external installable via the Revit Python Shell.
> 
> 
> Installation
> 
> Due to my lazyness, I created the exporter as an "Application Macro".
> Not sure if it can be installed as an external add-on without changes to the code.
> To install as a macro, select the "Manage" tab, click on "Macros".
> Select the "Application" tab in the opening dialog, and press "Create Module".
> Give your new application a name, chose "Python" as a language and press "Ok".
> The SharpDevelop IDE should open with a new project containing boilerplate
> code. Replace that with the contents of my file and press F8 to compile.
> 
> Now open the "Macros" dialog again, and your Module will have sprouted two macros
> named "ExportToRadiance" and "ExportTopoToRadiance". Select one of those and
> press "Run" (only works if the current view is a 3D-view).
> 
> 
> Configuration
> 
> Currently all relevant configuration happens in the code, near the top of
> the file. Configuration options are:
> 
> * Metric or Imperial
> * Output file name (default: "revout.rad" on your desktop)
> * Output file name for topography (default: "revout_topo.rad" on your desktop)
> 
> 
> The attached jpg is from one of the Revit samples. The scene file is around 50MB.
> Ironically, just in this example, the Brown chair at left shows some missing
> faces at the front of the armrest... Not sure if this is my fault or Revit's.
> 
> Anyone who wants to try improving and extending RRadout, just go ahead and share your
> results. Depending on the feedback, I may create a Github project.
> 
> 
> Have fun!
> 
> -schorsch



More information about the Radiance-general mailing list