Visual
programming in BIM: Transforming the Emerson College Los Angeles (ELA) by
Morphosis
Arch
653 Building Information Modeling in Architecture
Spring 2017
Instructor: Dr. Wei Yan
Texas A&M University
Spring 2017
Instructor: Dr. Wei Yan
Texas A&M University
Project Description
This project is an extension to the previous
project “BIM-Based Parametric modeling of Emerson College Los Angeles (ELA)”.
In this phase, Dynamo as visual programming tool in Revit was used to model the
conceptual mass and some of the details in the building. However, the aim of
this phase is not about modeling the exact building but it is about starting
with similar conceptual mass and transformed (through changing its parameters)
it into a different project. Therefore, three different area were explored and
revisited: the general conceptual mass, the louvers façade and image-based
skin.
Parametric Modeling Diagram
Conceptual
Mass
The design intention in this model is modeling the
whole conceptual mass inside Dynamo without using any input from Revit then
export the results into Revit (conceptual mass environment). The challenge in
this model is not only to model individual masses entirely inside Dynamo, but
it’s also about how to establish relationships between multiple masses and
maintain these relationships while the parameters of each individual mass are
being changes.
The
Logic
·
First, the two rectangular prisms (towers) were
created through (cuboid. By Length) node in Dynamo.
·
Parameters were assigned to control each tower’s
length, width, height and coordinates.
·
Using mathematical formula, the (Z) coordinate of
each tower is driven by the tower height.
·
The third prism (base) was created through (cuboid.
By Length) and the Height of the base was linked as an input to (Z) coordinate
of each tower.
·
Additionally, using (Topology. Vertices) the x
coordinate of the external corners in each tower were used to calculate the
external distance between them which equal the base width.
·
The two towers were deconstructed using (Topology. Faces)
node and the faces were extracted.
·
Then using (List.GetItemAtIndex) the desired faces
were selected and transformed into surfaces through using (Face. Surafce Geometry).
·
Through using (Surafce. Offset), two types of skins
in this design were generated from these surfaces and imported into Revit
through (ImportInstance.ByGeometries).
·
The bridge that connects the two towers were also
created using (cuboid.ByLength). The internal distance between the two towers
were calculated and used as an input for the width of the tower. Two parameters
were assigned to control the length and the height of the tower. The tower can
move freely only in two directions (horizontally (Y) and vertically (Z)). While
the (X) coordinate is linked to the coordinates parameters of the tower.
·
The same bridge definition was repeated to create
another two bridges.
·
Finally, the two lofted curvilinear forms between
the two towers were replaced by two void masses. Each mass was created through
(Solid.byLoft) and parameters were assigned to control the location, dimension
and the orientation (rotation angel) of each profile in the loft command.
(Solid.Difference) node were used to subtract the lofted masses from the mass
of each tower and the results were imported into Revit using
(ImportInstance.ByGeometries).
Limitations
·
When using (ImportInstance.ByGeometries) it has to
be used for each individual mass and plane, otherwise if (create list were used
first with one (ImportInstance.ByGeometries) node) the imported geometries will
be grouped. And Revit cannot work with it as a group and it has to be exploded
and in some cases after applying the explode command some or all of the planes
of the mass were be deleted.
·
The second limitation in using
(ImportInstance.ByGeometries) even on individual elements is that the output un
recognizable. According to the Revit it is an “imported” family with
subcategory of (Non). Therefore, the command (Divide surface) cannot be used on
the imported “planes” because they are not recognized as surfaces. So one
solution was to re-model them in the conceptual mass environment.
Solar
Orientation
In
this definition, the two sides skin in the original design were replaced by two
curvilinear planes and the horizontal
louvers system were replaced by a vertical one that changes the angel of the
panels according to the location of the sun.
·
First, in Revit project environment the plane of
the building skin was imported as surface.
·
This surface was divided using
(Paneling.GridFromFace) and the number sliders were used to control the (U) and
(V) number.
·
The node (Paneling.Quadrilateral) was used to get
the four points of each divided panel so the points of the surface will be
arranged in list that each sub list has four elements (points).
·
Then, the current location of the sun in the
project environment was imported and using (Vectro.AltitudeAndAzimuth) node,
the azimuth was calculated. By subtracting the azimuth vector and the panels’
normal, the results will be the rotational angel for the louvers.
·
Using (AdaptiveComponant.ByParametersOnFcae),
simple four points adaptive component was imported through (family types) node
and it was mapped into the surface. The rotational angel of the adaptive
component was driven by value of (sun vector – panel normal) through using
(Element.SetParamterByName).
Using
Bitmap to change the family type
This
definition aims to use the level of brightness in an image as a design
generator to change the type of the family in a divided surface by pattern. It
takes three inputs from Revit: the file path for the image, the face or the
surface of the façade and the divided surface families at that surface.
·
First, the
image was imported using (File Path) and (File.FromPath) nodes.
·
Then, the image data were restructured and
extracted) using (Image.Pixels).
·
The (U) and (V) values of the original divided
surface in Revit were used as an input for (xSamples) and (ySamples) in
(Image.Pixels) node.
·
The level of brightness in the image was remapped
to a range (0-3) and through using (Math.Floor) the results of the remap became
only (0, 1, 2, 3).
·
Using If conditional statements, a list of true-
false (that was generated from the brightness level) was used as an input for
(List.FilterByBollMask) in order to filter the list of (divided surface
families) and get the family that correspond to a certain brightness level at a
certain location. This process was repeated four time using (0, 1, 2, 3) as an
equality condition in the If-Statement in order to work with four types in the
selected family.
·
Using change family type definition (Originally
Written by Dr. Wei Yan in Texas A&M University), the type of each separated
list was changed.