Tuesday, April 25, 2017


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

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.














SaveSave

No comments:

Post a Comment