Académique Documents
Professionnel Documents
Culture Documents
Class Description
This class will discuss various methodologies for dealing with
interoperability between Revit, Rhino, and Inventor. This presentation
will also address in a broader sense the motivations behind these
various approaches.
As the lecture was prepared as a last minute substitution, this
document will attempt to be more detailed than just a basic outline.
Any questions or comments can be directed to
frankfralick@beckgroup.com.
How we build
Our aim is to create processes that support and organize construction
efforts from the earliest design phases. How the building will come
together is part of the concept.
We start out to build this:
Then this happens. All the parts and pieces show up for assembly at
the site:
This is what we want. The process is organizing the work at earlier times
in other locations:
Page 2 of 27
The parts and pieces are assembled into a seemingly ad-hoc solution:
When the situation changes, if this work is truly ad-hoc, the process is
typically designed again.
However, though different at first glance, the work fits within productprocess families designed to efficiently deal with the variability of
scope.
Page 3 of 27
Flow of Information
Marketing around digital prototyping and BIM usually involves emphasis
on how digital prototyping can support building information modelling.
The methods for using digital prototyping to support BIM are well
documented and will not be discussed in this document.
Page 4 of 27
Risk
Much is made about the role risk mitigation plays in preventing
collaborative workflows.
Consider
For both architects and builders, fees have dwindled in the last 40
years. This is mostly a result of risk aversion on a massive scale. In the
same time period, the cost to build a building has gone up past the
rate of inflation. This is for the same reasons (this isnt true everywhere,
however).
Often, its likely that the cost of separating your firm from a particular
risk is much higher than the cost of actually realizing that risk. Its like
taking a lower fee in exchange for inordinate amounts of clerical work,
no time for those with the experience to focus on the execution of the
project, project partners that by default see you as an enemy, and a
disjointed process that dysfunctional, change-order-filled projects are
symptomatic of!
Often risk is not truly evaluated. Old modes of behaviour drive
decisions, even when less than beneficial. The scope and responsibility
held by project participants is taken for granted by most.
Viewing the use of design information in this light, and re-evaluating the
approach to doing business, can allow for new opportunities for
designers and those building the building.
Page 7 of 27
Risks are real, and they require specific strategies on a case by case
basis that rely on good processes and solid execution as opposed to
giant contingencies. However, shifting attitudes and changing
economics around risk, partly made possible through new
technologies, bring popular risk mitigation strategies into question.
Process Design
Designing processes to support new means and methods, and new
division of responsibility can become complicated.
It may work, it may not. No matter what happens, the person along for
the ride will at best be extremely uncomfortable, at worst, feel a lot of
pain. Investing in testing new methodologies is essential for successful
Page 8 of 27
Page 9 of 27
Examples
Hinman Research Building, Georgia Tech College of Architecture
Page 10 of 27
Examples
Hinman Research Building, Georgia Tech College of Architecture
Page 11 of 27
Examples
Hinman Research Building, Georgia Tech College of Architecture
Page 12 of 27
Examples
Tuttle Courthouse Annex. Self-performed blast glazing support
structural steel.
Page 13 of 27
Page 14 of 27
Page 15 of 27
In the end, with enough tweaking and prodding, iCopy can be made
to work:
The biggest single drawback to iCopy is that there are very few
situations where repeating, but different assemblies can be instantiated
all at once. If components arent parallel or along a path, you must
instantiate iCopy assemblies one at a time. If you cant program, this is
better than nothing, otherwise, this limitation becomes very frustrating
quickly. Internally we have abandoned the use of iCopy for API
functions that are more flexible and robust. The next few sections will
discuss programmatic approaches to this kind of interoperability
problem.
Page 16 of 27
I read a lot of API code examples for Revit, Rhino, and Inventor. With
Revit and Inventor, what you will notice is that the vast majority of
example code you will find will deal with interrogating the model.
When I move data from Rhino to Revit, or Revit to Inventor, these
processes need to be generative. I want to make the detailed model
automatically using the lower level-of-detail model.
As model generating code samples are scarce, especially with
Inventor, there is hardly any downside to using a language that is not
commonly used for these platforms, but is better for generative model
making procedures. Rather than VB.NET or C#, we predominantly use
Python when programming in all three of these platforms.
Why Python:
Page 18 of 27
for wrapping existing C and C++ libraries. You can learn Python
and accomplish a lot before feeling the urge to learn your next
language.
Direct access to COM automation APIs like NavisWorks,
MSOffice, and Inventor. Effectively becomes similar to a
command prompt. .NET languages cant offer this kind of direct
access feel in most situations.
There are few differences between how IronPython is coded and
Python is coded. Beginners will not likely run into these nuances.
works with Vasari. Python within Revit is great for generating geometry,
placing families, modifying instance parameters, and a host of other
things. One of the more powerful aspects is you can go into a tool like
Rhino that is better suited for creating freeform geometry, get a
dataset out of it, and go into Revit and create native Revit geometry.
There are several basic examples of using Python with Revit available
on Nathan Millers Revit API Notebook:
http://theprovingground.wikidot.com/revit-api
Page 21 of 27
The code samples I show here are not meant as a tutorial so much as
they are meant provide some ideas about how to most effectively use
Python, and reuse code. These code samples use an internal module
with a variety of classes and functions that are meant to be reused.
Writing most of the code you write one time is the key to gaining
forward momentum with API programming. The final result of this
exercise will look like a lot of work, but it will have been accomplished
with very little coding.
Page 22 of 27
The first thing we need to do is evaluate the Rhino surface, check and
make sure we dont have any panels that have their normal directions
facing the wrong direction, and create class instance objects with
certain attributes. For what we are doing we dont need many to
move forward. This example uses text files to temporarily hold data, but
long term you will be better off learning some other form of data
persistence like pickling.
The first line imports an external module that contains the functions and
classes we need to obtain panel data in a way that we can use later.
Again, the point is if you choose to start learning Python, learning to
organize your code for reuse is the key to success. Without this module,
this program would be five times as long.
The second line imports Rhinos API module and names it rs. The 5th
line makes a call to a function calls MeshToRhinoPanel which does
what it sounds like. The interesting thing to note for programmers
reading this coming from other languages, is that rs is being passed
into the function without ever having called the function. Classes and
functions are first class objects in Python and can be passed around
just like variables. This is an important feature of the language. If this
were not so we would have to import rhinoscriptsyntax again within the
function since functions have their own isolated namespaces.
After we call MeshToRhinoPanel, data is written to a file, and we can
move on to Revit or Inventor.
Page 23 of 27
Adaptive components are the easiest way to create something like this
form in Revit. For instantiating families for something like this, fairly
custom content is required but it can be worth the effort. When we go
into RevitPython Shell, a similarly short script that relies on an external
module instantiates all the adaptive components:
Its hard to tell, but the program was told to create deeper louvers at
the bottom, shallower at the top.
Page 24 of 27
Page 25 of 27
The code that was written to generate the instances of these models
was fairly short, maybe 20 lines. The code within the imported module
it relies on to do this however is hundreds of lines. This strategy also
allows intermediate and beginner Python users to be able to be able
to do more and learn faster. The 20 lines to do this in Inventor is
something a beginner can handle. Writing the whole thing is not very
approachable for someone just starting out.
The results of the program running are very informative. This information
can be used to get accurate pricing as well as really inform the
designer about what a proposed set of systems might look like. This
was all generated in thirty minutes.
Page 26 of 27
Summary
The previous example showed a workflow where the doing of each
step produced the information necessary to complete the next task as
a by-product. This type of back-and-forth API based interoperability
process will become more and more prevalent in progressive projects
where a premium is placed on efficiencies through collaboration. The
hurdles to improving and expanding the technology associated with
these types of workflows are still relatively small compared to the hurdle
that entrenched, old-school cultures can impose. Deep process
innovation that is based on cooperation will protect design intent,
allow architects to accomplish more, reduce the cost of work, enable
new means and methods, and reduce schedules. These things will be
very achievable only if organizational leadership can see the
opportunities, and be willing to rethink how they do business, create
new business models, and start to define a new culture within the
design and building professions.
Page 27 of 27