Once the score for the geometric and construction complexity factors are obtained, they can be used to compare the buildings or the buildings main parts. This comparison process allows the designer to use the scores not only as individual factors but can also answer questions like, which building has the higher construction complexity or which building main part has the lowest geometric complexity?
The ranking process consists of comparing one-factor value for different buildings or building main part. The factor values and their respective building or building main part names are placed in a table. See table 4a and 4b.
Table 3 Factor metrics compilation.
Table 4a Complexity factor result example 1.
Complexity Types Formula
Area Size Floor Area in Square
meters
Factor I Factor II Factor III
Building A 8 1.5 50
Building B 10 2.5 25
Building C 11 3 15
Factor I Factor II Factor III
Building A 10 1 8
Building B 5 3 10
Building C 3 5 10
Buildings Complexity
Buildings Complexity
Table 4b Complexity factor result example 2.
The scores are sorted from the highest to the lowest, where the highest is positioned in the top of a list and the lowest at the bottom of the list. This sorting step is applied to all the factors values for the different buildings. If any factor has the same value, then they are placed in the same position. See table 5a and 5b.
With the sorted values and building names for each factor, then the factor values are removed from the list to obtain a list of the sorted building names. Then a weighting value is applied to the list depending on the number of comparable design that is being ranked. In this case, there are only three buildings and the weightings will be between three and one. The highest value of the weighting is given to the ones in the top of the sorted list while the lowest is given to the ones in the bottom of the sorted list. See table 6a and 6b.
Factor I Factor II Factor III
3 C C C
2 B B B
1 A A A
Factor I Factor II Factor III
3 A C B-C
Factor I Factor II Factor II
Factor I Factor II Factor II
Table 6b Sorted building names for example 2.
Table 5b Complexity sorted results for example 2.
Table 5a Complexity sorted results for example 1.
Table 6a Sorted building names for example 1.
Building score that can be used to determine the actual ranking of the buildings or the building main parts. This final value helps to decide which design has the highest or the lowest complexity, while the assigned score for that complexity is the factor values.
If one of the summation results shows the same value as other building and the numbers in the summation are not the same, then the summation of the square values of those weights are used to determine the final score of the ranking. See table 7a and 7b.
Table 7b.1 Example 2 weight summation.
Table 7a.1 Example 1 weight summation. Table 7a.2 Example 1 building ranking result.
Table 7b.2 Example 2 building ranking result.
Building
A = 3*3 + 1*1 + 2*2 = 14 B = 2*2 + 2*2 + 3*3 = 17 C = 1*1 + 3*3 + 3*3 = 19 Weight Summation
5 Implementation
The complexities scoring methods were implemented using Revit 2017, as the BIM authoring tool; and Dynamo 2.0 [31] with some packages dependencies [32] such as LunchBox for Dynamo, archi-lab.net, Clockwork for Dynamo 1.x. The building classification system used was the Uniformat classification. The model complexities score implementation process included four steps which are: the database preparation, the labeling stage, the grouping stage, and the characterization stage. All of the stages are necessary to obtain the correct characterization of the model complexities factors.
5.1 Database Preparation
To objectively characterize the model regarding the two complexities proposed in this research, the user must prepare a database structured using the Uniformat building classification system for the further data assignment. The preparation of the database includes the manual input of the values for the different building element types. The database preparation for this research was done in Excel for two reasons: Dynamo has a built-in function to read files from Excel, and the Uniformat classification system can be download directly in that format. Besides those reasons the data used during the implementation did not exceed the range supported by Excel. See Table 8.
Table 8 Uniformat sample flat table.
Assembly Code Levels Elements
A 1 Substructure
A10 2 Foundations
A1010 3 Standard Foundations
A1010100 4 Footings & Pile Caps A1010110 5 Strip Footings A1010120 5 Spread Footings
A1010130 5 Pile Caps
A1010200 4 Foundation Walls A1010210 5 Foundation Walls - CIP
The Uniformat table is extended by adding three new type of data. Three new columns are added to the original Uniformat list. The columns will contain information regarding the buildability index (BI), the constructions systems max score value (MS) and the direct stakeholders involved in the design and construction (SH). The added data can be then modified if it is necessary or it can be used by any other user who wants to obtain the complexity score for a specific design. See Table 9.
Table 9 Uniformat flat table extended.
This research uses the same data provided by the buildability assessment model [23]. The data used as buildability index and system max score can vary and is needed to use the same values to have a final objective characterization of different models. While the stakeholders involved data is a list created by this research that combines generalized stakeholders for construction [26] and building design [25].
5.2 Labeling Stage
The labeling stage is a manual process that every user need to do to their model to correctly link the model instances with the prepared database. The procedure to correctly label the model instances consists of the edition of the Revit model types’
parameters. The user should be aware that the labeling process requires the model be
Assembly Code Levels Elements Buildability
Index (BI)
A1010 3 Standard Foundations 0 0
A1010100 4 Footings & Pile Caps 0 0
A1010110 5 Strip Footings 0.2 14
Groundwork, Main Work , Formwork , Concrete Production , Substructure Concrete or precast others,Structure,Architecture, Schedule, Cost, Substructure Design Others
A1010120 5 Spread Footings 0.2 14
Groundwork, Main Work , Formwork , Concrete Production , Substructure Concrete or precast others,Structure,Architecture, Schedule, Cost, Substructure Design Others
A1010130 5 Pile Caps 0.2 14
Groundwork, Main Work , Formwork , Concrete Production , Substructure Concrete or precast others,Structure,Architecture, Schedule, Cost, Substructure Design Others
A1010200 4 Foundation Walls 0 0
A1010210
5 Foundation Walls - CIP 0.179 19
Groundwork, Main Work , Formwork , Concrete Production , Substructure Concrete or precast others,Structure,Architecture, Schedule, Cost, Substructure Design Others
Figure 12c Drop down button to the Uniformat Assembly Code selection. interface.
Figure 12a Uniformat classification in the Revit interface.
made instances specific for their purpose, in other words, the instances used in the model should be positioned and used only for that specific reason.
The way to do the labeling is by preparing the instances that are going to be used before the entire modeling process starts; this will save some time and avoid mistakes.
The user gives the correct or the closest assembly code to each instance in the model. This code comes integrated into the Revit type parameters (see figure 12a), and it can be changed directly on the Revit interface by selecting from the dropdown list (see figure 12b) or by copying and pasting the assembly code from Excel (see figure 12c).
The primary goal of giving an assembly code to the instances in the model is to standardize the type of the instance so different models can follow the same classification method. The filtering processes that happened in the following stages are also depending on the assembly code. Once the instances in the model are correctly labeled, then the grouping stage can be started.
Figure 12b Assembly Code parameter in the type properties.
12.a 12.b
5.3 Grouping Stage
The grouping stage is based on user selection, retrieval of selected data and then grouping into different building main parts. This process can be done because all the elements in the model possess an assembly code. One characteristic of the assembly code is that its first character is a letter that represents the building main part. The grouping stage is an automatic process that takes advantage of the assembly code in each instance to filter them according to the building main part that the user needs. See figure 13.
The process starts with the manual input from the user. The user allows the code to use selected instances as the input for the grouping process in the Dynamo environment.
To do this, the user in the Dynamo environment uses the selection node and then change to the Revit environment to select all the instances that make a 3D solid in the entire model.
Once the model elements are selected; due to the Revit way to organize elements, the selection done by the user may include elements that are not forming a 3D element but they still a part of a 3D instance. These type of instance can be the stairs runs or the railing top rails, these types of selection may cause problems in the grouping stage, so the code filters them before proceeding with all the other steps.
Each instance possesses a specific assembly code that is going to be used to filter the instances in the selection. The code retrieves each instance’ specific type; then, the parameter called ̏ Assembly Code ˝ is called for each specific type. The value of this parameter is used for the last part of the grouping process.
Assembly Code = A 10 10 1 10
Level 1 Level 2 Level 3 Level 4 Level 5
Figure 13 Assembly Code interpretation.
Once each instance assembly code is obtained, the first character of this assembly code will guide the grouping process. Here all the instance that has similar fist character will become part of one sublist. The entire list that contains these sublists should contain the same quantity and the same instances that were used from the selection filtering just that rearranged into sublists.
The grouping last part consists of extract the sublist that has the building main part’
instances that the user needs to examine. Then, a list is obtained as an output and the instance on that list will be isolated in the Revit environment. The isolation allows the user to visualize the elements that made that building main part, and by doing so, the user can decide before the input for the next stages if the labeling stage is correct or not.
The grouping stage is the first step before the characterization can be done. This step ensures the correct selection of the instances in the characterization stage and also reduce the computational power use by reducing the number of instances that are going to be used in the characterization process. See figure 14.
Figure 14 Grouping stage Dynamo code procedure.
5.4 Characterization Stage
The characterization stage refers to the following processes to the grouping stage;
this stage is divided into six factors with different calculation process. These factors are the general geometric entropy, variety, the number of elements, the buildability, the size, and the multidisciplinarity.
General Geometric Entropy
To characterize the geometry of a building main part is necessary to do a manual input to the code, similar to the one in the grouping stage, the general geometric characterization has a selection node that is the main input to this characterization process.
The input for this characterization is the output of the grouping stage, is to say, the user needs to select the isolated instance in the Revit environment. See figure 15a.
Once the instances are selected; the code starts to retrieve information regarding the instances’ geometry. Firstly, the Dynamo code retrieves all the faces that compose all the selected instances. Then, all the faces are joined into one or several surfaces. These surfaces are transformed into a solid or solids, depending if the surfaces intersect each other or not. From the solid or solids is extracted the edges, vertices, and face, which are going to be labeled depending on their characteristics. See figure 15b.
Figure 15a User input, conceptual building main part made of different instances.
Figure 15b User input, merged 3D solids.
The Dynamo code extracts all the adjacent faces from the edges of the composed 3D solid and creates a second surface over each one with a small offset going outward the 3D solid to label the vertex types. Then it creates a line that goes pointing outward the surfaces of the 3D solid from the center of each surface. The offset surfaces and the lines are used to determine the internal angle between all the adjacent surfaces. Depending on the internal angles difference in a vertex then this vertex will obtain different names. See figure 15c.
Figure 15c Vertex internal angle calculation and vertex labeling
The Dynamo code uses the faces and the already labeled vertices to label the faces.
All the labeled vertices are mapped into each face vertices. The faces are labeled when the Dynamo code creates a string with all the vertices labels. The way Dynamo gets the vertices from a face is by counterclockwise; this ensures that a solid may have repeated face names. This process created a new string that will represent the name of the face.
See figure 15d.
Figure 15d Face labeling.
Then, the Dynamo code uses the already labeled vertices and the adjacent edges for each vertex and the edges of the 3D solid to label the edges. First, the labeled vertices are mapped into the vertices adjacent edges vertices; the result is the labeling of all the vertices adjacent edges vertices. Then the vertices adjacent edges vertices are mapped into the edges start and end vertices; this action creates duplicated edges for each 3D solid edge. The duplicated edges are filtered, and the result is the labeling of each edge vertex.
The label of the edge consists of a string that contains the edge start and end vertex adjacent edges end vertex label. See figure 15e.
Figure 15e Edge labeling.
The entropy of the entire selected building main part as a 3D solid can be obtained once the vertices, edges, and faces are labeled. See figure 15. This process uses entropy of information formula, that was mentioned in chapter 4. See equation 1.
Figure 15f General geometric entropy Dynamo code procedure.
Variety
The individual geometric entropy characterization code uses almost the same process as the general geometric characterization; the only difference is that the selected instances are not combined into one solid; instead, they are a list of individual solids. At the end the code will return a list of with geometric entropy scores, that will be used in the variety characterization.
To obtain the variety calculation, the output of the individual geometric entropy characterization is used as an input. Then the standard deviation formula explained in chapter 4 (Variety characterization), is used to obtain the deviation of the individual geometric entropy score. See figure 16. The value obtained there will represent the variety score for one building main part.
Number of Elements
After the grouping stage, the number of isolated elements that form a building main part is calculated. This value will represent the factor named the number of elements. See figure 17.
Figure 16 Variety from the individual entropy scores, Dynamo code procedure.
Figure 17 Number of elements Dynamo code procedure.
Buildability
The buildability characterization is also part of the characterization stage, the input of this factor consists of all the construction core systems. The buildability characterization is one of the factors that helps to obtain the final construction complexity.
Buildability is calculated by a code implemented in Dynamo that call information from Excel, then call information from the model, also use a list with the normalization factors and map them to calculate the buildability.
The first two inputs are the selected model elements and the information from the database in Excel. The model elements are selected using the select Revit model node;
here the user selects the model elements that correspond to the construction core systems.
The database information is converted into a list that will be used after.
Once the two inputs are stated, the selected model elements are filtered, and their types assembly code are called to create a new list that combines the instance and the respective assembly code. Also, the solids geometry of the filtered selected instances is called to create two separated list, one with the volumes and the other with the largest area in the solid.
The used instances are mapped to their respective sublist which is on the list created from the database, by using the assembly code. The result is a list with the assembly code, the buildability index, max system score, stakeholder numbers and other information from the Uniformat table. The mapped list is combined with the area and volume list.
This action extends the list by adding the area data and the volume data to each instance in the list.
With all the data gathered in one list, the area data is removed for the instance that corresponds to the structural frames, while the volume is removed from all the other instances that are not part of the structural frames.
Three main steps are used to obtain the data needed to be plotted in the buildability formula. The unique buildability index used by the selected instance is obtained and ordered. Then the total summation of all the instances that are from one specific construction core system is obtained. Also, the summation of the instances that have the same buildability index in the same construction core systems is obtained. These two new lists are used to obtain the area or volume percentage for each type of construction core systems.
The area or volume percentage, the used buildability index list and an input of a list with the normalization factors are used in the buildability formula to obtain the buildability score of the construction core systems for that design. The difference between one hundred and the obtained buildability score is what this research uses as the value for the buildability factor. See figure 18a and 18b.
Example:
Figure 18a Buildability calculation example.
Figure 18b Buildability Dynamo code procedure.
Multidisciplinarity
The Dynamo code to calculate the multidisciplinarity uses two of the same inputs in the buildability but in a different way. This code use information from the prepared database and also call information from the model selected instances. This Dynamo code has two main steps which are: the data compilation and the data filtering.
The multidisciplinarity code, first calls the information from Excel as a list. Then, it calls the type for each specific instance in the selection node. The ̏ Assembly Code ˝ parameter is called for each type and used in a list mapped to their respective instances.
Then this list is combined with the list created from the database to complete the compilation of the data in one list.
Once the data is extracted from the model and the database, the code filter the stakeholders that are found in all the selected instance. The stakeholders’ names are placed in a list as a string and then the code filter the unique words. The unique words list is counted to finally give a value to the multidisciplinarity factor. To obtain a more detail idea of the buildability code, see the figure 19.
Figure 19 Multidisciplinarity Dynamo code procedure.
Size
The size characterization code has only one input, which is the selection of the
The size characterization code has only one input, which is the selection of the