Development of Communication Protocols between BIM Elements and 3D Concrete Printing

Featured Application: This research has speciﬁc applications for architectural and structural design ﬁrms to help them to develop communication protocols to connect BIM projects with robots able to print 3D concrete elements. Abstract: Historically, the construction industry has exhibited slow technological development when compared to other industries. However, during the last several years, investigations related to automation in construction have been conducted, such as additive manufacturing in concrete. This study aims to delve into this topic, providing effective communication between BIM-designed elements and its additive concrete manufacturing, with the help of an articulated robotic arm. Therefore, the paper addresses the preparation of computer code that allows such BIM–robot communication, checking the parameters utilized, and analyzing the results of tests with the equipment involved.


Context
Building information modeling (BIM) is one of the most promising recent developments in the architecture, engineering, and construction (AEC) industry. BIM technology consists of digitally constructing an accurate virtual model of a building [1]. BIM allows virtually modeling a structure before physically constructing it, empowering project participants to design, analyze, sequence, and explore a project in a digital environment that is exponentially cheaper than making changes during construction [2].
One of the most important developments in the industry is the incorporation of new technologies, showing a great potential for future advancement [3]. Such is the case of 3D concrete printing that, together with the use of robotic arms and integrative software, allows the creation of specific geometric structures [4]. This is an innovative construction method that promises to be highly advantageous in the construction field, in terms of optimization of construction time, costs, design flexibility, and reduction of errors.
3D concrete printing consists of the manufacture of a predesigned construction element in a digital model, where the concrete, which is poured through a printing nozzle, does not need any formwork or subsequent vibration. This method aims to improve the construction of concrete structures on one or more levels. It minimizes the duration of the construction process by eliminating time-consuming procedures in the traditional method, and it reduces

Scope of the Study and Research Objectives
In this research, we aim to contribute to a change in traditional construction methods through the use of tools that allow automating and connecting design and manufacture of personalized structures through 3D concrete printing. To do it, the following software were used: Autodesk Revit TM , Dynamo TM for Revit, and a KUKA TM robotic arm, along with a robust computer.
In addition, the equipment used in this research corresponds to a robotic arm, specifically the KUKA|Quantec KR120 R2500, which has six axes of movement, which gives it the possibility of printing detailed and complex construction elements. The robotic arm is connected to a concrete pump by means of a nozzle through which the concrete used for the printed element circulates.
The use of these tools allows not only automating a process that for years has been carried out in a traditional and little mechanized way but also optimizing the use of resources by reducing construction time, maximizing the use of the material, and avoiding the use of formworks. Most of the unused material-95% to 98%-can be recycled [10].
Thus, the main research objective consists of designing communication protocols between BIM-designed elements and their 3D concrete printing. The specific objectives are: (a) to develop a code that allows constructive elements to be linked to a KUKA TM robot; (b) to design printing paths allowing the correct 3D printing process of BIM-designed elements; (c) to check that a KUKA TM robot correctly executes the parameters entered in the code; (d) to run the code into the KUKA TM robotic arm to test different printing paths.

Parametric Design and BIM
A parametric model allows generating changes in structures and dimensions quickly and accurately. In a parametric design, designers must model not only the element to be designed but also a conceptual structure that guides the different variations it can have. Parameterization can improve the search for designs, in different contexts, that better adapt to the requirements of each particular project. It can facilitate the discovery of new forms and reduce the time and effort required for changes or reuse. It can also improve understanding of the conceptual structure of the element to be designed. However, parameterization can also have certain disadvantages, such as requiring additional effort to implement it and increasing the complexity of design decisions [11].
The parametric approach establishes relationships between the parts and builds a design based on them. Then, it can modify the designs based on the evaluation and selection of the results obtained, opening the possibility of examining variants without the need of redoing, in each attempt, the representation work. When talking about a parametric model, each entity has associated parameters that control its geometric properties, its location in the model, and how they relate to each other. The parameters can be modified by the operator to create the expected geometry [12].
For its part, BIM, an acronym for building information modeling, is one of the most promising developments for the architecture, engineering, and construction (AEC) industry. Today, BIM is considered a common language in construction projects and a driver of resounding change on a global scale. Recent government requests for fully collaborative BIM, as a requirement in different countries, have generated great interest in the adoption of BIM and its uses, creating a great demand for a competent BIM workforce.
This technology allows creating a virtual model with more data and with more precise, and necessary geometries to support the construction, providing functions needed to model the life cycle of the project. With this methodology, it is possible to obtain better quality projects at lower cost and in less time [13], supported by software and tools that help designers to better perform in their specialized fields [14]. Some software packages have modules that can build a 3D model of structures and facilities. BIM is a new world for professionals accustomed to single drawing or calculation software [15].
The workflow is through categories, families, and elements that are interconnected. The category is the procedure in which the type of object is defined according to its function and its general properties. Within these categories, the elements are grouped into families, and in turn, the families put together elements with common characteristics. In particular, Revit TM , a design software developed by Autodesk, predefines a collection of parameters for each family; these parameters are called "type parameters". Within families, parametric objects are organized by types, in which at least one type must be defined [16].

Additive Manufacturing and 3D Concrete Printing
Additive manufacturing or 3D printing is a process that uses technology that, in an automation process, allows users to design and create personalized three-dimensional objects, directly from a digital model, without using formworks in their manufacture [17]. Only the material required for the creation of the element designed is used without generating waste. This lowers cost and allows greater efficiency and more sustainable production [18]. Specifically, in the architecture industry, additive manufacturing is replacing manual construction techniques used in traditional structural works [19].
All this has advanced the construction industry in the development of new additive manufacturing technologies, such as 3D concrete printing [21], where concrete is considered the most used material in the construction industry [20], given that the components for its manufacture are easily accessible and inexpensive in the most places in the world. As is known, concrete has the advantages of being durable and resistant, and because of its fluidity before setting, it is possible to create almost any concrete element [22].
Concrete elements require formworks for their manufacture [10], where the cost of formworks can vary between 35% to 60% of the total cost of the concrete structure [23]. Therefore, the possibility that structures can be built without the need of using formworks creates great advantages for the construction industry, reducing costs and manufacturing times [24].
Concrete printing uses additive manufacturing techniques based on placing layers of concrete successively; this allows creating structures with more complex geometries compared to the traditional process [25]. This construction technique can become an efficient process, but to achieve it, it is necessary to overcome its limitations [26]. These limitations are related to the hardening and the placement of concrete layers over time, because the time between layers must be long enough to ensure the strength of the concrete, without experiencing deformations when the subsequent layers are deposited, and short enough to ensure the union between them in an optimal way [24].

BIM and 3D Concrete Printing Process
For years, robotics has been commonly used in manufacturing industries; however, the situation in the construction industry has not been as favorable, in particular with a lack of research bridging the gaps in integrating BIM with a manufacturing system and BIM with task-oriented robotics [27]. Existing knowledge of BIM serves as the basis for developing new approaches, which point to more frequent use of automated manufacturing processes. Digital building models (specifically the design, planning, and construction) are relevant to 3D printing [28].
BIM covers not only geometry information, but also material performance, spatial relationships, and manufacturing information. More recently, BIM has proved to be an effective method to implementation of 3D printing, both on the small and large scales [29]. In this sense, BIM methodology will be the core of future 3D printed buildings because, thanks to 3D printing, it is easier and faster to create buildings with complex shapes [30].

Parametric Programming Languages and 3D Printing of Concrete
Dynamo TM is a platform that allows visual programming through a plugin that can easily work with Revit TM . It uses workflows that enable it to work algorithmically (a set of steps that follow a basic logic of input, processing, and output). Dynamo TM is intended to be used by architecture and construction professionals who require its capabilities but without the need for advanced knowledge about programming [31]. Additionally, Dynamo TM has proved effective in creating and estimating the 3D printing elements and components [32].
Grasshopper TM is a complement to the CAD Rhinoceros TM software. Like Dyamo TM , it works through data workflows, allowing users to create acyclic graphics. Grasshopper TM focuses on sequences and constant visualization in real time, facilitating quick reaction to changes or errors, without having to restart the code [33]. Grasshopper TM is currently the most used program in 3D concrete printing, with the help of content add-on KUKA|prc.
On its part, KUKA|prc allows the user to program industrial robots directly from the parametric modeling environment, including complete kinematic simulation of the robot. The generated files can be executed in the robot KUKA TM robot, without the need for any additional software [34].
Finally, designing the printing path by directly extracting information from the BIM platform in 3D printing processes can reduce data loss from a 3D BIM model to printing path generation [35].

Combination of Revit TM and Dynamo TM Software
Revit TM is a parametric modeler capable of creating relationships between design and building elements that help streamline the construction process by improving visibility and graphics of the objects based on a rational list of well-understood categories. This is different from CAD, where each line belongs to a layer, and the handling of each layer is up to the user. In the world of BIM, layers do not exist, as in the real world where constructions are not made of abstract layers. Additionally, one of the features of Revit TM is the ability to work around a single file in which the design and construction documentation are carried out in a holistic model [36].
Regarding Dynamo TM , this is an open code platform that serves to manage a BIM model and can be used in conjunction with Revit TM [37]. The combination of both types of software helps designers deal with projects as 3D models or as parametric models of complex constructions [38].

The Role of Robotics in 3D Concrete Printing
Despite being considered a traditional industry in terms of technology, the construction sector is developing robotic technology to help in complex or dangerous tasks [39]. In this sense, the use of robotic technology in construction has the advantages of improving the quality of the final product and reducing costs thanks to the optimization of time and resources [40].
Robots used for 3D concrete printing are commonly equipped with a nozzle, capable of extruding layers of cementitious materials with specific dimensions. As a complement, both the material preparation and a delivery system are required to continuously feed concrete to the nozzle. In turn, software controls both the robot and the material preparation unit [41].
The purpose of these robots is to reproduce the movements and joints made by the human arm and hand, which allow up to 7 degrees of freedom. This is possible because of the combination of the 5-axis head together with a 6-axis robotic arm. Their greatest advantages are the improvement in efficiency in construction, a reduction in the margins of error, and an increment in terms of work safety [20].

Functioning of the Robotic Arm
The present study used a German KUKA TM robot. The company that manufactures this equipment is currently one of the main providers of intelligent automation solutions for the world industry, even manufacturing sensitive robots capable of working in collaboration with their operators [42].
The KUKA TM robot works through a SmartPAD connected to the control unit, which, in turn, connects to the robot by connecting cables. A pen drive containing the printing file is inserted into the SmartPAD, sending the movement instructions for the robot to follow. Before executing these instructions, the controller moves the robot to a starting point to initiate the trajectory. From the SmartPAD, the movement speed can be controlled. In addition, the speed is limited by the number of points the traced element has on the tracking path. Figure 1 shows all of the tools previously described. Our research uses a KUKA TM robot model Quantec KR120 R2500. The Quantec series offers a versatile design intended for work in any market segment [43]. This robotic arm will have a pipe connected to a screw pump that will be fed with a continuous flow of concrete, and at the effector end of the robotic arm, a metal nozzle will be installed perpendicular to the platform on which the printing is intended, as shown in Figure 2. Our research uses a KUKA TM robot model Quantec KR120 R2500. The Quantec series offers a versatile design intended for work in any market segment [43]. This robotic Appl. Sci. 2021, 11, 7226 6 of 23 arm will have a pipe connected to a screw pump that will be fed with a continuous flow of concrete, and at the effector end of the robotic arm, a metal nozzle will be installed perpendicular to the platform on which the printing is intended, as shown in Figure 2. Our research uses a KUKA TM robot model Quantec KR120 R2500. The Quantec series offers a versatile design intended for work in any market segment [43]. This robotic arm will have a pipe connected to a screw pump that will be fed with a continuous flow of concrete, and at the effector end of the robotic arm, a metal nozzle will be installed perpendicular to the platform on which the printing is intended, as shown in Figure 2.

From the Scanner to BIM
Next, it is needed to link tools that incorporate the BIM methodology (as is the case of Revit TM ), with a central database management system capable of communicating data bidirectionally with computerized maintenance management systems (CMMS). The scan to BIM process consists of three main steps: scanning, registration, and modeling.
Scanning involves the installation of a total station, a 3D laser scanner, and a set of target artifacts.
Registration is the process of transforming two or more scans of the same scene, from different positions, into a single and unique points cloud for a common frame of reference. The 3D laser scanner establishes a new coordinate frame for each scan and assigns coordinates to the scanned points; this step is essential to avoid losing the orientation of points.
Modeling is the process of exporting the points cloud to a CAD environment to model it in BIM. After the points cloud is registered, the modeler exports it to a CAD environment and assign primitive CAD objects to it using adjustment algorithms or manual adjustments. Due to the complexity of tracking points in 3D space, modelers may need to prepare flat sections of the cloud, parallel to the elevation planes. BIM is then created

From the Scanner to BIM
Next, it is needed to link tools that incorporate the BIM methodology (as is the case of Revit TM ), with a central database management system capable of communicating data bidirectionally with computerized maintenance management systems (CMMS). The scan to BIM process consists of three main steps: scanning, registration, and modeling.
Scanning involves the installation of a total station, a 3D laser scanner, and a set of target artifacts.
Registration is the process of transforming two or more scans of the same scene, from different positions, into a single and unique points cloud for a common frame of reference. The 3D laser scanner establishes a new coordinate frame for each scan and assigns coordinates to the scanned points; this step is essential to avoid losing the orientation of points.
Modeling is the process of exporting the points cloud to a CAD environment to model it in BIM. After the points cloud is registered, the modeler exports it to a CAD environment and assign primitive CAD objects to it using adjustment algorithms or manual adjustments. Due to the complexity of tracking points in 3D space, modelers may need to prepare flat sections of the cloud, parallel to the elevation planes. BIM is then created based on measurements made on the CAD model. Figure 3 summarizes the process performed for modeling [44]: based on measurements made on the CAD model. Figure 3 summarizes the process per formed for modeling [44]:

Computer Procedure for Connection between BIM and 3D Concrete Printing
In this section, a computerized connection procedure between BIM and 3D concret printing will be carried out, detailing the programs used, how they work, how to mak the connection, and how to modify the necessary parameters.
In addition, verifications regarding the geometry of the design will be applied, t corroborate that the dimensions of the elements designed in BIM are being respecte within the communication program.
It will be explained how, once the element is printed, its dimensions can be checke with the help of a laser scanner and that information can be projected in a BIM desig software.

Computer Procedure for Connection between BIM and 3D Concrete Printing
In this section, a computerized connection procedure between BIM and 3D concrete printing will be carried out, detailing the programs used, how they work, how to make the connection, and how to modify the necessary parameters.
In addition, verifications regarding the geometry of the design will be applied, to corroborate that the dimensions of the elements designed in BIM are being respected within the communication program.
It will be explained how, once the element is printed, its dimensions can be checked with the help of a laser scanner and that information can be projected in a BIM design software.

Brief Explanation of the Steps to Establish Communication between BIM Models and 3D
Concrete Printing Figure 4 schematically shows the stages needed to carry out the communication between BIM models and 3D concrete printing. These stages are subdivided into the design of the initial constructive element modeled in Revit TM , the process of exporting the constructive element from Revit TM to Dynamo TM software (which is integrated into the Revit TM interface), and the creation of the printing process control code in Dynamo TM , for the KUKA TM robotic arm.

Computer Procedure for Connection between BIM and 3D Concrete Printing
In this section, a computerized connection procedure between BIM and 3D concrete printing will be carried out, detailing the programs used, how they work, how to make the connection, and how to modify the necessary parameters.
In addition, verifications regarding the geometry of the design will be applied, to corroborate that the dimensions of the elements designed in BIM are being respected within the communication program.
It will be explained how, once the element is printed, its dimensions can be checked with the help of a laser scanner and that information can be projected in a BIM design software.

Brief Explanation of the Steps to Establish Communication between BIM Models and 3D
Concrete Printing Figure 4 schematically shows the stages needed to carry out the communication between BIM models and 3D concrete printing. These stages are subdivided into the design of the initial constructive element modeled in Revit TM , the process of exporting the constructive element from Revit TM to Dynamo TM software (which is integrated into the Revit TM interface), and the creation of the printing process control code in Dynamo TM , for the KUKA TM robotic arm.

Designing an Initial Construction Element in Revit TM
The objective of this stage is to design a base construction element using Revit TM and, subsequently, to transfer it to the Dynamo TM graphical programming interface to be represented by a points cloud that describes its printing path. This element designed in Revit TM corresponds to a solid element, but for the purpose of this investigation, the printing corresponds only to the perimeter. NOTE: It is recommended that the user considers the width of the concrete cordon during the design stage before moving to Dynamo TM .

Designing an Initial Construction Element in Revit TM
The objective of this stage is to design a base construction element using Revit TM and, subsequently, to transfer it to the Dynamo TM graphical programming interface to be represented by a points cloud that describes its printing path. This element designed in Revit TM corresponds to a solid element, but for the purpose of this investigation, the printing corresponds only to the perimeter. NOTE: It is recommended that the user considers the width of the concrete cordon during the design stage before moving to Dynamo TM .

Exporting a Construction Element from Revit TM to Dynamo TM
Once the element has been designed in Revit TM , Dynamo TM must be opened through the "Manage" interface and export the selected element. Once Dynamo TM is open, access the Revit TM library and use the node that selects the designed element in Revit TM .

Preparation of a Control Code for the Printing Process with the Robotic Arm
This stage is performed in Dynamo TM . The steps to carry out this procedure are described below:

1.
To obtain the surfaces to create the points cloud of the element to be printed. To get the points cloud that describes the construction element, it is necessary to delimit the previously selected element in Revit TM . To do it, a bounding box for the element must be created and transformed into a collection of surfaces and a solid body. Here, the thickness of each layer is specified to create a sequence of heights consistent with the total height of the element.

2.
To create a points cloud that describes the contour of the figure. The sequence of heights is later converted into a sequence of surfaces, which contain the information of the contour points and the lengths of each trace. From this information, it is possible to create a points cloud that extends uniformly on each surface that describes the perimeter of the figure.

3.
To create the printing path from the points cloud. Once the contour path that describes the dimensions of the construction element in two dimensions (X and Y) has been created, it is essential to generate an additional elevation path (Z-axis) to avoid accumulations of unwanted material. This is achieved by gradual elevation, such that the last point on one surface on the Z-axis coincides with the first point on the next surface. Thus, continuity in the print path is achieved. 4.
To transfer the points cloud, within the coordinate plane, to a position within reach of the robotic arm. The objective of this step is to synchronize the position of the figure in the action plane of the robotic arm. To do this, it is necessary to understand that the points cloud is within an already defined coordinate plane, so its transfer simply requires a modification of the coordinates of each point of the cloud along this plane.

5.
To develop the KUKA TM robot arm control code. At this stage, the main objectives are to correctly select the KUKA TM robot model to be used and to define the control parameters of the robot arm. A node that controls the linear movement of the robot and the value of the printing speed must be established.

Calculations and Printing Costs
Once the perimeter of the surfaces of the construction element to be printed has been obtained, the length of the printing cordon is obtained; together with the extruder area, it yields the volume of concrete required to print the element. With the volume of the material requested and the detailed information of how much material is used for 1 m 3 of printing, it is possible to calculate how much material will be used and the cost of printing this item. All of this information is exported to an Excel file to be viewed.

Management Phase of the Resulting Element
Once the element under study has been printed, it is necessary to know its real dimensions to compare the virtual design with what is obtained in practice. This procedure requires the use of a Leica BLK360 model laser scanner. This laser was chosen because of its interaction with Revit TM , which projects a 3D model of the scanned item. In this way, measurements are made to determine its real dimensions, which makes it possible to carry out a comparative analysis between design and execution, facilitating the study of the different heights of the printing cordon in each layer of the printed element. Figure 5 is a flowchart that schematically shows the procedure for printing a construction element:

Step-by-Step Development of the Computer Procedure That Communicates a Model Designed in BIM and 3D Printing Concrete Elements
This section aims to show a summary of the development of the computer procedure required to communicate a model designed in a BIM software, and 3D concrete printing elements, by means of using Dynamo TM , a plugin of Revit. It is important to emphasize that one of the most important contributions of the procedure presented in this research is the possibility of easily replicating it in other plugins or software such as Grasshopper TM and others. The entire step-by-step procedure is shown in Appendix A.

1.
Designing the initial construction element in Revit TM .

2.
Exporting process of a construction element from Revit TM to Dynamo TM . 3.
Preparation of the control code for the printing process with the KUKA TM robot.
• To obtain the surfaces to create the points cloud of the element to be printed.   Figure 5 is a flowchart that schematically shows the procedure for printing a construction element: Design of a construction element in Revit TM , described in Section 4.1.1.
Exporting a construction element from Revit TM to Dynamo TM , described in Section 4.1.2. Control code of the printing process with the robotic arm, described in Section 4.1.3.
Calculations and printing costs, described in Section 4.1.4.

Step-by-Step Development of the Computer Procedure that Communicates a Model Designed in BIM and 3D Printing Concrete Elements
This section aims to show a summary of the development of the computer procedure required to communicate a model designed in a BIM software, and 3D concrete printing elements, by means of using Dynamo TM , a plugin of Revit. It is important to emphasize that one of the most important contributions of the procedure presented in this research is the possibility of easily replicating it in other plugins or software such as Grasshopper TM and others. The entire step-by-step procedure is shown in Appendix A.
1. Designing the initial construction element in Revit TM . 2. Exporting process of a construction element from Revit TM to Dynamo TM . Design of a construction element in RevitTM, described in Section 4.1.1.
Exporting a construction element from RevitTM to DynamoTM, described in Section 4.1.2. Control code of the printing process with the robotic arm, described in Section 4.1.3.
Calculations and printing costs, described in Section 4.1.4.

Analysis of Results
The KUKA TM robotic arm has certain default parameters that, for safety reasons, are immovable or are not within the reach of the robot's capabilities. It is essential, then, to verify to what extent it is possible to control the parameters of the robot and to verify the accuracy of the printing movements. Therefore, in this section, verifications related to the control of low-magnitude speeds will be applied to corroborate that the designer of the control program can control the printing speeds, as long as reasonable speeds are applied.
In addition, the error associated with the measurement of the controlled speeds will be calculated, which will allow corroborating whether or not there is a variation between the theoretical speed (entered in the code) and the measurement in the field. To this end, the relative error, absolute error, confidence level, uncertainty interval, and concordance of each case will be calculated. Thus, a measurement procedure will be carried out to calculate the maximum printing speed, for different spacing between the points that describe the contour of the element to be printed. The objective of this procedure is to know the speed limit of printing for different spacing between points.
Finally, for each of the tests, the results will be described and explained in detail. Observational and experimental conclusions will be obtained, according to the field measurements and the physical results obtained from these.

First Test: Verification of Dimension Recognition for the Printing Code
This test is purely digital, and its purpose is to verify whether the dimensions of any construction element designed in BIM (in this case in Revit TM ) are indeed being respected in the control code. To do this, a series of digital designs were built in Revit TM with different geometries that allow checking the effectiveness of the code. The designs were then transferred to Dynamo TM .
In Figures 6 and 7, it is possible to appreciate that the printing code develops not only develops the exact replica of the dimensions of the designed element but also automatically traces the spiral-shaped printing path, so it can be deduced that, digitally, the tests are successful. The above is not trivial. The fact that this test has been verified is important for future research because it will facilitate the exploration of 3D concrete printing processes with different shapes without the need of creating a printing code for each of them.
accuracy of the printing movements. Therefore, in this section, verifications related to the control of low-magnitude speeds will be applied to corroborate that the designer of the control program can control the printing speeds, as long as reasonable speeds are applied.
In addition, the error associated with the measurement of the controlled speeds will be calculated, which will allow corroborating whether or not there is a variation between the theoretical speed (entered in the code) and the measurement in the field. To this end, the relative error, absolute error, confidence level, uncertainty interval, and concordance of each case will be calculated. Thus, a measurement procedure will be carried out to calculate the maximum printing speed, for different spacing between the points that describe the contour of the element to be printed. The objective of this procedure is to know the speed limit of printing for different spacing between points.
Finally, for each of the tests, the results will be described and explained in detail. Observational and experimental conclusions will be obtained, according to the field measurements and the physical results obtained from these.

First Test: Verification of Dimension Recognition for the Printing Code
This test is purely digital, and its purpose is to verify whether the dimensions of any construction element designed in BIM (in this case in Revit TM ) are indeed being respected in the control code. To do this, a series of digital designs were built in Revit TM with different geometries that allow checking the effectiveness of the code. The designs were then transferred to Dynamo TM .
In Figures 6 and 7, it is possible to appreciate that the printing code develops not only develops the exact replica of the dimensions of the designed element but also automatically traces the spiral-shaped printing path, so it can be deduced that, digitally, the tests are successful. The above is not trivial. The fact that this test has been verified is important for future research because it will facilitate the exploration of 3D concrete printing processes with different shapes without the need of creating a printing code for each of them.   Figure 6b represents the same beam but with its printing path using the code designed in Dynamo TM . The dimensions of this element were modified from Revit TM so that, at the time of printing, it matches the desired measurements. Figure 7a presents a circular column with a diameter of 300 mm and a height of 1000 mm designed in Revit TM . Figure 7b represents the same column but with its printing path built with the code designed in Dynamo TM . As done with the previous element (Figure 6), the dimensions of this element were modified from Revit TM so that, at the time of printing, it coincided with the desired measurements.

Second Test: Controlled In Situ Speed Associated with Defined Point Spacing
The code developed in Section 4 enables the user to enter a linear printing speed in meters per second (m/s). The purpose of this test is to verify the precision of the KUKA TM robotic arm to carry out this speed in the field. The test consists, briefly, of entering speeds in the program and measuring in situ if these speeds are achieved.
Previous studies have shown that robotic arms limit their maximum operating speed when they execute codes that require a series of points, as is the case with the code of this investigation. Thus, this test works with speeds that allow the robot to properly perform the printing process.
Three different speeds were tested: 0.04 m/s, 0.06 m/s, and 0.08 m/s, with spacing between printing points of 12.5 mm, 25 mm, and 50 mm, respectively.
To perform the measurements in the field, samples of 3D concrete printing were made, and the execution times were measured. Thus, based on the distance run by the robot, it was possible to calculate the speed in each attempt. As an example, a couple of images of the process are shown in Figure 8a,b, whereas Figure 8c shows other 3D concrete printed elements that were tested.   Figure 6b represents the same beam but with its printing path using the code designed in Dynamo TM . The dimensions of this element were modified from Revit TM so that, at the time of printing, it matches the desired measurements. Figure 7a presents a circular column with a diameter of 300 mm and a height of 1000 mm designed in Revit TM . Figure 7b represents the same column but with its printing path built with the code designed in Dynamo TM . As done with the previous element ( Figure 6), the dimensions of this element were modified from Revit TM so that, at the time of printing, it coincided with the desired measurements.

Second Test: Controlled In Situ Speed Associated with Defined Point Spacing
The code developed in Section 4 enables the user to enter a linear printing speed in meters per second (m/s). The purpose of this test is to verify the precision of the KUKA TM robotic arm to carry out this speed in the field. The test consists, briefly, of entering speeds in the program and measuring in situ if these speeds are achieved.
Previous studies have shown that robotic arms limit their maximum operating speed when they execute codes that require a series of points, as is the case with the code of this investigation. Thus, this test works with speeds that allow the robot to properly perform the printing process.
Three different speeds were tested: 0.04 m/s, 0.06 m/s, and 0.08 m/s, with spacing between printing points of 12.5 mm, 25 mm, and 50 mm, respectively.
To perform the measurements in the field, samples of 3D concrete printing were made, and the execution times were measured. Thus, based on the distance run by the robot, it was possible to calculate the speed in each attempt. As an example, a couple of images of the process are shown in Figure 8a,b, whereas Figure 8c shows other 3D concrete printed elements that were tested.

Second Test: Controlled In Situ Speed Associated with Defined Point Spacing
The code developed in Section 4 enables the user to enter a linear printing speed in meters per second (m/s). The purpose of this test is to verify the precision of the KUKA TM robotic arm to carry out this speed in the field. The test consists, briefly, of entering speeds in the program and measuring in situ if these speeds are achieved.
Previous studies have shown that robotic arms limit their maximum operating speed when they execute codes that require a series of points, as is the case with the code of this investigation. Thus, this test works with speeds that allow the robot to properly perform the printing process.
Three different speeds were tested: 0.04 m/s, 0.06 m/s, and 0.08 m/s, with spacing between printing points of 12.5 mm, 25 mm, and 50 mm, respectively.
To perform the measurements in the field, samples of 3D concrete printing were made, and the execution times were measured. Thus, based on the distance run by the robot, it was possible to calculate the speed in each attempt. As an example, a couple of images of the process are shown in Figure 8a,b, whereas Figure 8c shows other 3D concrete printed elements that were tested.

Calculation of Error and Concordance in the In-Situ Controlled Speed Test in Terms of the Defined Spacing between Points
Once the data have been obtained, it is important to demonstrate the significance of the experimental speed variations, for the theoretical or typed speed. Accordingly, there are two ways to quantify the measurement error: (a) by means of the absolute error (E), which corresponds to the difference between the average of the measured value X m and the real measured value X r , so E = X m − X r ; and (b) by means of the relative error (e), which corresponds to the quotient between the absolute error E and the average of the measured value X m , expressed as a percentage, or e (%) = E/X m ·100. With the calculation of the relative error (e), it will be possible to verify the level of confidence in each measurement, i.e., n (%) = 100 − e (%).
Furthermore, a match is found between the theoretical predictions of a hypothesis (model or theory) and the results of a measurement, when both values coincide within a range defined by the measurement error. The error E defines, around the value under study, an interval of uncertainty equal to twice the error (2E), that is, it indicates a zone within which the true value of the magnitude must be found. Thus, the lower limit (L lim ) and the upper limit (U lim ) of the uncertainty interval is given by L lim = X m − E and U lim = X m + E. If both the theoretical or typed speed and the experimental speed measured in the field are within this range, the previously mentioned match between the theoretical predictions and the measurement results is achieved. Figure 9 shows the experimental speeds measured in the field for each speed entered by the user in Dynamo TM . In addition, a comparison is made between all the speeds by calculating the absolute error in each measurement, where S i corresponds to the speed and E i to the error as shown in the boxplots. oretical predictions and the measurement results is achieved. Figure 9 shows the experimental speeds measured in the field for each speed entered by the user in Dynamo TM . In addition, a comparison is made between all the speeds by calculating the absolute error in each measurement, where Si corresponds to the speed and Ei to the error as shown in the boxplots.

Results of the Relative Error, Level of Confidence, Interval of Uncertainty, and Concordance
The concordance (significance) between the theoretical and experimental data is analyzed. The conditions of the experiment are Llim < Typed speed < Ulim and Llim < Average experimental speed < Ulim, where: (a) if the conditions are fulfilled, then the data reflect concordance between the theoretical typed speed and the experimentally measured speed; or (b) if conditions are not fulfilled, then there are physically significant differences between

Results of the Relative Error, Level of Confidence, Interval of Uncertainty, and Concordance
The concordance (significance) between the theoretical and experimental data is analyzed. The conditions of the experiment are L lim < Typed speed < U lim and L lim < Average experimental speed < U lim , where: (a) if the conditions are fulfilled, then the data reflect concordance between the theoretical typed speed and the experimentally measured speed; or (b) if conditions are not fulfilled, then there are physically significant differences between the typed theoretical speed and the measured experimental speed. Table 1 summarizes the obtained results. In terms of average speeds, the conditions L lim < Typed speed < U lim and L lim < Average experimental speed < U lim were fulfilled in all cases. Therefore, the data reflect concordance between the theoretical typed speeds and the experimental speeds measured in the field. Furthermore, Table 1 shows that levels of confidence in the experiment are around 98% and 99%. Related to the error found between designed models and printed models, Table 1 shows that the relative error is less than 1.5%, which decreases as printing speeds increase.

In Situ Maximum Printing Speed Test in Terms of Defined Points Spacings
The objective of this test is to determine the movement speed limit of the KUKA TM robotic arm for different spacings between points.

Background
First, it is assumed that the robotic arm restricts its speed of movement, depending on the spacing between the points that describe the trajectory of the element to be printed. Therefore, the purpose of these tests is to quantify such limitation, with the objective of knowing what the maximum movement speed for different spacings between points will be achieved by the robot.
Based on the previous statement, because it is needed to determine a maximum speed for the robot, a speed value that it is difficult for the robotic arm to achieve when it is printing was established; in this case, it was proposed to enter a theoretical speed of 1 m per second.
Then, the spacings between points were being modified accordingly. For this case, they will be 12.5 mm, 25 mm, and 50 mm. Figure 10 shows the maximum experimental speeds obtained from the measurements made with the robotic arm with a constant theoretical speed of 1 m/s and with different spacings between points. The boxplot shows each of the maximum speeds for different spacings between points, along with Table 2 which complements the boxplot (quartiles, median, lower and upper limits, and atypical values).

Background
First, it is assumed that the robotic arm restricts its speed of movement, depending on the spacing between the points that describe the trajectory of the element to be printed. Therefore, the purpose of these tests is to quantify such limitation, with the objective of knowing what the maximum movement speed for different spacings between points will be achieved by the robot.
Based on the previous statement, because it is needed to determine a maximum speed for the robot, a speed value that it is difficult for the robotic arm to achieve when it is printing was established; in this case, it was proposed to enter a theoretical speed of 1 m per second.
Then, the spacings between points were being modified accordingly. For this case, they will be 12.5 mm, 25 mm, and 50 mm. Figure 10 shows the maximum experimental speeds obtained from the measurements made with the robotic arm with a constant theoretical speed of 1 m/s and with different spacings between points. The boxplot shows each of the maximum speeds for different spacings between points, along with Table 2 which complements the boxplot (quartiles, median, lower and upper limits, and atypical values).   In summary, Figure 10 and Table 2 show the speed distribution for the different measurements made. The points spacing of 12.5 mm and 50 mm present a positive asymmetry since the highest concentrations of their data are in the area below the median. It can be seen that for the 12.5 mm spacing, all the data are contained in the diagram, without presenting outliers. For the 50 mm spacing, data are presented above the upper limit, with one single outlier only. For speeds with a spacing of 25 mm, a negative asymmetry occurs, where most of the data are concentrated in the area above the median, and two outliers above the upper limit.

Analysis of Maximum Speed with Different Point Spacing
A nonlinear regression analysis was conducted to identify the behavior of the speed in the tested intervals. As a consequence, the exponential curve shown in Figure 11 and Equation (1) were found. From this analysis, Figure 11 shows that the greater points spacing the greater the maximum printing speed.
Equation (1) were found. From this analysis, Figure 11 shows that the greater points spacing the greater the maximum printing speed.
where: Max speed = Maximum printing speed (m/s). sp = Point spacing (mm). It is interesting to see how Figure 11 shows that the greater the point spacing, the greater the maximum speed. Equation (1) is especially useful when the user wants to know the approximate maximum printing speed for different point spacings that can be entered manually from the printing code. In addition, in case of needing to control the printing speed more precisely, the user will have sufficiently reliable data to define an acceptable range of speed controls lower than this maximum value, and thus to execute the code with a value of controlled and precise speed. However, it is important to emphasize that, because of the exploratory nature of this study, it is not possible to assure that other printing machines will have the exact same behavior. Despite this fact, the procedure presented here to determine the curve could be replicated to obtain own results for further studies.  Figure 11. Graph of maximum speed for different point spacings.

Maximum speed (m/s) versus Points spacing (mm)
It is interesting to see how Figure 11 shows that the greater the point spacing, the greater the maximum speed. Equation (1) is especially useful when the user wants to know the approximate maximum printing speed for different point spacings that can be entered manually from the printing code. In addition, in case of needing to control the printing speed more precisely, the user will have sufficiently reliable data to define an acceptable range of speed controls lower than this maximum value, and thus to execute the code with a value of controlled and precise speed. However, it is important to emphasize that, because of the exploratory nature of this study, it is not possible to assure that other printing machines will have the exact same behavior. Despite this fact, the procedure presented here to determine the curve could be replicated to obtain own results for further studies. Table 2 showed that the maximum experimental speed reached by the robotic arm is much lower than 1 m/s. In addition, from the graph shown in Figure 11, it can be deduced that the greater the point spacing, the greater the maximum printing speed for the robotic arm.

Summary of the Results Obtained in This Experiment
Since the maximum printing speed is relatively easy to calculate by using the formula shown in Equation (1), it is recommendable to work in a range of speeds lower than the maximum speeds, which would allow the robotic arm to be better coupled to the designer's requirements.

Conclusions and Recommendations
From the research presented above, the following conclusions are drawn:

•
The developed code allows the connection between a design software and the KUKA TM robotic arm for multiple perimeter elements without the need to generate a new printing code for each figure. Tests and comparisons conducted show that the code responds to a variety of different geometries, allowing precise movements at speeds easily controllable by the user. • By developing a continuous print path, the concrete is intended to spread evenly along the print cordon. This is why checking the precision with which the robotic arm responds to the parameters entered in the control code is essential. In this sense, this research has found confidence levels that show the precision of the robotic arm is approximately between 98% and 99%.

•
It was possible to test trajectories of a series of elements with different geometries and sizes by using the developed code, which was capable of modifying the elevation, the printing speed, and the separation of points that define smoothness in the curves easily, facilitating the 3D concrete printing processes. • A theoretical way of calculating the maximum speed of printing was determined using an empirical equation, which helps users to choose speeds lower than the maximum speeds, allowing the robotic arm to be better coupled to the designer's requirements.
• For future research, it is necessary to develop elements of greater complexity, in addition to generating a filling pattern to give them greater resistance, and to include reinforcement for the construction of structural elements used in seismic places. In addition, future research should include a comprehensive comparison between the findings of the present study and traditional methods. Institutional Review Board Statement: Not applicable.

Informed Consent Statement: Not applicable.
Data Availability Statement: Not applicable.

Conflicts of Interest:
The authors declare no conflict of interest.

Appendix A
This appendix shows the entire step-by-step development of the computer procedure that communicates a model designed in BIM and 3D printing concrete elements.

Appendix A.1. Designing the Initial Construction Element in Revit TM
To perform this procedure the user must open the Revit TM software and start a new project. Then, as shown in Figure A1, the element must be created and drawn, or taken from a previously created element wanted to be printed. The location of this element is not restricted to a work plane in Revit TM , as later the points cloud generated for the 3D printing process will be moved to a work plane of the KUKA TM robot.

Appendix A1. Designing the Initial Construction Element in Revit TM
To perform this procedure the user must open the Revit TM software and start a new project. Then, as shown in Figure A1, the element must be created and drawn, or taken from a previously created element wanted to be printed. The location of this element is not restricted to a work plane in Revit TM , as later the points cloud generated for the 3D printing process will be moved to a work plane of the KUKA TM robot.

Appendix A2. Exporting Process of a Construction Element from Revit TM to Dynamo TM
Before starting, it is necessary to move the KUKA|prc folder from DynamoStudio TM to Dynamo TM for Revit TM . The user must return to Windows to C:\Users\(user)\Ap-pData\Roaming\Dynamo\Dynamo Core\1.3\packages, copy the KUKA|prc folder, and paste it in C:\Users\(user)\AppData\Roaming\Dynamo\Dynamo Revit\1.3\packages.
In Revit TM , the user must select the "Manage" tab and then click on the "Dynamo TM " icon to link both platforms, as shown in Figure A2a. Then in Dynamo TM , the "Select Model Element" node from the "Revit" library is selected. Within this node, the "Select" interface is found, which allows importing an element from Revit TM . Figure A2b shows the node that imports the building element from Revit TM . Appendix A.2. Exporting Process of a Construction Element from Revit TM to Dynamo TM Before starting, it is necessary to move the KUKA|prc folder from DynamoStudio TM to Dynamo TM for Revit TM . The user must return to Windows to C:\Users\(user)\AppData\ Roaming\Dynamo\Dynamo Core\1.3\packages, copy the KUKA|prc folder, and paste it in C:\Users\(user)\AppData\Roaming\Dynamo\Dynamo Revit\1.3\packages.
In Revit TM , the user must select the "Manage" tab and then click on the "Dynamo TM " icon to link both platforms, as shown in Figure A2a. Then in Dynamo TM , the "Select Model Element" node from the "Revit" library is selected. Within this node, the "Select" interface is found, which allows importing an element from Revit TM . Figure A2b shows the node that imports the building element from Revit TM .

Appendix A2. Exporting Process of a Construction Element from Revit TM to Dynamo TM
Before starting, it is necessary to move the KUKA|prc folder from DynamoStudio TM to Dynamo TM for Revit TM . The user must return to Windows to C:\Users\(user)\Ap-pData\Roaming\Dynamo\Dynamo Core\1.3\packages, copy the KUKA|prc folder, and paste it in C:\Users\(user)\AppData\Roaming\Dynamo\Dynamo Revit\1.3\packages.
In Revit TM , the user must select the "Manage" tab and then click on the "Dynamo TM " icon to link both platforms, as shown in Figure A2a. Then in Dynamo TM , the "Select Model Element" node from the "Revit" library is selected. Within this node, the "Select" interface is found, which allows importing an element from Revit TM . Figure A2b shows the node that imports the building element from Revit TM .

Appendix A3. Preparation of the Control Code for the Printing Process with the KUKA TM Robot
It must be noticed that this section exclusively uses the Dynamo TM software as follows: (a) To obtain the surfaces to create the points cloud of the element to be printed. The user must select the nodes "Element.Solids" and "Geometry.BoundingBox", and then connect them as explained in Figure A3. The "Geometry.BoundingBox" node is divided into two parallel processes as shown in Figures A4 and A5. It must be noticed that this section exclusively uses the Dynamo TM software as follows: (a) To obtain the surfaces to create the points cloud of the element to be printed. The user must select the nodes "Element.Solids" and "Geometry.BoundingBox", and then connect them as explained in Figure A3. The "Geometry.BoundingBox" node is divided into two parallel processes as shown in Figures A4 and A5. Then, to select the nodes "BoundingBox.ToPolySurface", "Geometry.Explode", "Flatten", "List.GetItemAtIndex", and a "CodeBlock". To write "1" within the CodeBlock and connect as shown in Figure A4. Parallel to what is described in Figure A3, to select the nodes "BoundingBox.ToCuboid", "Cuboid.Height", "Sequence", and two "CodeBlock" nodes. In one of the CodeBlock to write the thickness of each layer in millimeters, and in the other to write "x/y", where "x" is the height of the element obtained from the "Cuboid.Height" node, whereas "y" represents the thickness of the concrete layers; therefore, at this point, the number of concrete layers to be printed is defined. The nodes must be connected as shown in Figure A5. Then, to select the nodes "BoundingBox.ToPolySurface", "Geometry.Explode", "Flatten", "List.GetItemAtIndex", and a "CodeBlock". To write "1" within the CodeBlock and connect as shown in Figure A4. Then, to select the nodes "BoundingBox.ToPolySurface", "Geometry.Explode", "Flatten", "List.GetItemAtIndex", and a "CodeBlock". To write "1" within the CodeBlock and connect as shown in Figure A4. Parallel to what is described in Figure A3, to select the nodes "BoundingBox.ToCuboid", "Cuboid.Height", "Sequence", and two "CodeBlock" nodes. In one of the CodeBlock to write the thickness of each layer in millimeters, and in the other to write "x/y", where "x" is the height of the element obtained from the "Cuboid.Height" node, whereas "y" represents the thickness of the concrete layers; therefore, at this point, the number of concrete layers to be printed is defined. The nodes must be connected as shown in Figure A5. Parallel to what is described in Figure A3, to select the nodes "BoundingBox.ToCuboid", "Cuboid.Height", "Sequence", and two "CodeBlock" nodes. In one of the CodeBlock to write the thickness of each layer in millimeters, and in the other to write "x/y", where "x" is the height of the element obtained from the "Cuboid.Height" node, whereas "y" represents the thickness of the concrete layers; therefore, at this point, the number of concrete layers to be printed is defined. The nodes must be connected as shown in Figure A5. Parallel to what is described in Figure A3, to select the nodes "BoundingBox.ToCuboid", "Cuboid.Height", "Sequence", and two "CodeBlock" nodes. In one of the CodeBlock to write the thickness of each layer in millimeters, and in the other to write "x/y", where "x" is the height of the element obtained from the "Cuboid.Height" node, whereas "y" represents the thickness of the concrete layers; therefore, at this point, the number of concrete layers to be printed is defined. The nodes must be connected as shown in Figure A5. Next, and as shown in Figure A6, the nodes "Surface.Offset" and "Geometry.Intersect" are selected to finish creating the surfaces. Parallel to this, the output of the "Element.Solid" node is connected to the "geometry" input of the "Geometry.Intersect" node. To connect the nodes as follows: Figure A5. Obtaining the height sequence of the construction element.
Next, and as shown in Figure A6, the nodes "Surface.Offset" and "Geometry.Intersect" are selected to finish creating the surfaces. Parallel to this, the output of the "Element.Solid" node is connected to the "geometry" input of the "Geometry.Intersect" node. To connect the nodes as follows: (b) To create the points cloud that describes the contour of the figure. Here, the following nodes must be selected: "Surface.PerimeterCurves", "Curve.StarPoint", "Curve.PointsAtSegmentLenghtFromPoint", "Flatten", and a "CodeBlock" node which describes the spacing between printing points. Then, the nodes must be connected as shown in Figure A7. (b) To create the points cloud that describes the contour of the figure. Here, the following nodes must be selected: "Surface.PerimeterCurves", "Curve.StarPoint", "Curve.PointsAtSegmentLenghtFromPoint", "Flatten", and a "CodeBlock" node which describes the spacing between printing points. Then, the nodes must be connected as shown in Figure A7. (b) To create the points cloud that describes the contour of the figure. Here, the following nodes must be selected: "Surface.PerimeterCurves", "Curve.StarPoint", "Curve.PointsAtSegmentLenghtFromPoint", "Flatten", and a "CodeBlock" node which describes the spacing between printing points. Then, the nodes must be connected as shown in Figure A7. (c) To create the printing trajectory from the points cloud. The following nodes have to be selected: "Point.X", "Point.Y", "Point.Z", "List.MinimumItem", "List.Maxi-mumItem", "Range", "Count", and additionally a node "CodeBlock", in which the command "x-y" will be written, and from which the height of the element to be printed is obtained. Finally, the node "/" which will give the gradual elevation that the Z-axis will have at each point. Then, to connect as indicated in Figure A8. (c) To create the printing trajectory from the points cloud. The following nodes have to be selected: "Point.X", "Point.Y", "Point.Z", "List.MinimumItem", "List.MaximumItem", "Range", "Count", and additionally a node "CodeBlock", in which the command "x-y" will be written, and from which the height of the element to be printed is obtained. Finally, the node "/" which will give the gradual elevation that the Z-axis will have at each point. Then, to connect as indicated in Figure A8. (d) To transfer the points cloud, within the coordinate plane, to a position within reach of the robotic arm. First, the following nodes must be selected: "Plane.XY", "Plane.Normal", "Plane.XAxis", "Plane.ByOriginNormalXAxis", "Flatten", "Plane.ToCoordinateSystem", and "CoordinateSystem.Byplane". Then, a "CodeBlock" node must be created that allows the points cloud to be moved to the KUKA TM robot work plane. Finally, to connect the nodes as shown in Figure A9. (d) To transfer the points cloud, within the coordinate plane, to a position within reach of the robotic arm. First, the following nodes must be selected: "Plane.XY", "Plane.Normal", "Plane.XAxis", "Plane.ByOriginNormalXAxis", "Flatten", "Plane.ToCoordinateSystem", and "CoordinateSystem.Byplane". Then, a "CodeBlock" node must be created that allows the points cloud to be moved to the KUKA TM robot work plane. Finally, to connect the nodes as shown in Figure A9. Figure A8. Creation of the printing trajectory.
(d) To transfer the points cloud, within the coordinate plane, to a position within reach of the robotic arm. First, the following nodes must be selected: "Plane.XY", "Plane.Normal", "Plane.XAxis", "Plane.ByOriginNormalXAxis", "Flatten", "Plane.ToCoordinateSystem", and "CoordinateSystem.Byplane". Then, a "CodeBlock" node must be created that allows the points cloud to be moved to the KUKA TM robot work plane. Finally, to connect the nodes as shown in Figure A9. Figure A9. Transfer of points cloud to the printing robot work plane. Figure A9. Transfer of points cloud to the printing robot work plane.
, x FOR PEER REVIEW 20 of 23 (e) To create the Control code of the KUKA TM robotic arm. At this stage, it is required to create the nodes: "CoordinateSystem.Transform", "Number.Slider", "LINear Movement-KUKA|prc", "Custom Tool-KUKA|prc", "Quantec KR90-KR270-R2500-KUKA|prc", "KUKA|prc CORE". Then, to connect as indicated in Figure A10.  Figure A11 shows the KUKA|prc CORE interface, where it is possible to configure the parameters of the KUKA TM robot, in addition to extracting the code that allows the printing of the designed element in the previously described process.  Figure A11 shows the KUKA|prc CORE interface, where it is possible to configure the parameters of the KUKA TM robot, in addition to extracting the code that allows the printing of the designed element in the previously described process.  Figure A11 shows the KUKA|prc CORE interface, where it is possible to configure the parameters of the KUKA TM robot, in addition to extracting the code that allows the printing of the designed element in the previously described process.

Appendix A4. Calculations and Printing Costs
Once the surfaces of the construction element have been obtained with the "Surface.Perimeter" node ( Figure A7), a sum of all these surfaces is applied, which gives the length of the perimeter cordon. With this value and the area of the extruder, it is possible to get the volume of material to be used for printing. Figure A12 shows this calculation process.

. Calculations and Printing Costs
Once the surfaces of the construction element have been obtained with the "Surface.Perimeter" node ( Figure A7), a sum of all these surfaces is applied, which gives the length of the perimeter cordon. With this value and the area of the extruder, it is possible to get the volume of material to be used for printing. Figure A12 shows this calculation process. After obtaining the volume of the construction element to be printed, it is necessary to calculate the amount of material and the cost of the printed element. All of this information is exported to an Excel file where it can be better visualized. To create this file, the following procedure must be conducted: First, an Excel file must be created and saved in the place that the user deems con- Figure A12. Calculations of the printing material.
After obtaining the volume of the construction element to be printed, it is necessary to calculate the amount of material and the cost of the printed element. All of this information is exported to an Excel file where it can be better visualized. To create this file, the following procedure must be conducted: First, an Excel file must be created and saved in the place that the user deems convenient.
Once the file has been created and saved, it is necessary to return to the code, specifically to the "File Path" node, and to select "Browse . . . " as shown in Figure A13. After obtaining the volume of the construction element to be printed, it is necessary to calculate the amount of material and the cost of the printed element. All of this information is exported to an Excel file where it can be better visualized. To create this file, the following procedure must be conducted: First, an Excel file must be created and saved in the place that the user deems convenient.
Once the file has been created and saved, it is necessary to return to the code, specifically to the "File Path" node, and to select "Browse…" as shown in Figure A13. Figure A13. Exporting the calculation data to an Excel file. Figure A13. Exporting the calculation data to an Excel file.
After selecting "Browse", a tab will open in which the previously created Excel file has to be searched and selected. When this is done, the file will be automatically opened with all the data of measurements, total cost, and the cost of each material required for the printing. In addition, Dynamo TM allows importing the previously created Excel file into Revit TM , where all the data for printing the requested element can be visualized.