The case study conducted consists of the design of a section of a road infrastructure, supported by two design software that allow the visualization and parameterization of the model, implementing BIM software tools when there is compatibility between them.
The infrastructure was designed according to the Italian Standards, in particular:
The description and comparison of the three different approaches for infrastructure modeling using OpenSCAD, Rhinoceros and Civil 3D software is outlined as follows.
In particular, with regard to the second software, the plug-ins, Grasshopper and VisualARQ are employed. Finally, for the visualization of the work another BIM software tool, BIMcollab ZOOM is used.
The third software Civil 3D is combined with the Dynamo plug-in.
2.1. Use Case: Road Infrastructure Design in OpenSCAD
The first software used for the infrastructure design is OpenSCAD, which can create complex solid CAD 3D models and is supported by an intuitive functional programming language.
The output of 3D solid is a result of the iterative and methodical implementation of the entire set of modules and parameters, which are subsequently used to create the output with respect to the reference legislative sources.
In particular, with regard to the above-mentioned parameters, two main variables have been defined, length and type of road, whose variation radically affects the output itself. Indeed, the type of road conditions the entire set of parameters attributed to the final model. This parameterization allows the designer to create multiple combinations between all the main distinctive features of the road infrastructure while still respecting the limits indicated.
The individual elements, part of the road infrastructure, are built using custom script modules defined by the designer, in which different types of OpenSCAD commonly used actions and operators are specified.
The construction of the three-dimensional elements is organized in script modules, which define the layers of the road pavement. Therefore surface, binder, base, foundation layers, left and right quays and divider are sketched as cubes that can be moved into the correct position in order to match the road surface with the xy plane.
The guardrail is chosen as a road safety system and it consists of columns connected to each other by a simplified two-wave band. The polyline tool is used to build the section of the two-wave band on the left and right side of the road, as shown in Figure 2
. As for the other element, also the barrier element makes use of different parameters such as width and height.
To complete the barrier construction, another module has been added, which allows to take into account that for some types of roads there is no divider and no safety system required, so the “if” statement comes handy to differentiate all the possible cases.
If this is not the case and the presence of a divider and guardrail is necessary, then the “else” statement is able to construct the safety system using the linear extrusion of the section of the barrier to bring the two-wave band along the whole length of the road.
The geometry of the guardrail column is defined with a cube and through a “for” loop, it is moved along the z-axis for the defined interval between the columns to the end of the road length.
Finally, the body of the guardrail is complete, positioned on both the left and the right roadside according to regulations.
To create the edge stripes on the left and right side, the geometry used is a cube, which is then translated along the x-axis to position it correctly.
The geometry of a single section belonging to the lane stripe is created using the cube command and it is then moved along the x-axis to position it between two lanes.
The “For” loop statement is executed in order to repeat the single segment of the stripe along the y-axis and to create a complete discontinuous stripe.
To make sure another longitudinal discontinuous stripe is to be displayed in case the road type has three lanes, an “if” statement has to be added into the stripes element.
All the objects previously described are grouped in a script module to assign to the road the correct cross slope according to the road design norms D.M. 05/11/01 [29
Lastly, the other carriageway is constructed to complete the road structure.
All the different types of road can be obtained simply by selecting a letter from a selection list as input to the “roadname” parameter, as shown in the Figure 3
2.2. Use Case: Road Infrastructure Design in Rhinoceros and Grasshopper
Rhinoceros, widely applied in different fields, is the second software used for the case study, mainly due to its multidisciplinary functionality.
One of the benefits from the Rhinoceros usage is the implementation of the Grasshopper plug-in, a parametric modeling and visual programming tool that simplifies the modeling procedure by visually presenting the workflow in a flowchart display. It is based on the idea of “boxes and arrows”, indeed each Grasshopper component has input and output connectors, which means that the component processes the input data and returns it to the output.
Objects can be built either through the basic tools provided by the program or through the use of different supported programming languages, such as Python, C# and Visual Basic, which make the project very flexible and customizable. This is allowed especially on account of the parameterization of its objects.
Once the design algorithm is generated, it is possible to visualize the results in the Rhinoceros workspace.
First of all, the input parameters for the modeling of the road infrastructure are defined, according to the mentioned regulations, and through Grasshopper’s different components it is possible to choose the appropriate numerical values, according to the type of parameter used, namely:
GHPython Script, to weave the values provided in the road pavement catalogue model through a series of statements written in the Python programming language. Indeed, the thickness of each layer of road pavement, namely Surface, Binder, Base and Subbase Thickness, is identified. Firstly, the category of the road structure is chosen, that can be flexible, semi-rigid, rigid unreinforced or rigid with continuous reinforcement. Secondly the Resilient Module and the Average Daily Traffic expected in the infrastructure are selected.
Number Slider, in the form of Integer or Floating point for Number of Lanes, Total Length and Cross Inclination;
Value List, which provides a list of individual values to choose from, adopted for the inputs of Lane Width, Divider Width, Left Quay Width, Right Quay Width, Broken White Width, Broken White Length, Broken White Gap, Edge White Width, Barrier Width, Barrier Height and White Stripe Thickness.
The data is graphically inserted in different groups according to the type of road to be designed, in such a way that the numerical values of the data change together with the road type, as indicated in the regulations.
shows the Group related to the Road Type A, suburban.
The same procedure has been realized for all the other road typologies according to Italian Design Standards (A, B, C1, C2, D, E, F1, F2 and F) to allow the designer to choose through Stream Filter component directly the typology of interest and visualize the desired structure. The full computer code is available as Supplementary Materials
Indeed, the Filter processes a list of values, which are organized in the next step through a List Item component, which allows to extract the information contained in the Filter in an ordered way.
Every layer that makes up the road pavement has been constructed point by point by inserting the x and z coordinates that essentially define a rectangular shape. Then the Group “x coordinates of each layer” is constituted to define four points through Format components that have Divider Width and Pavement Width as input.
The Group “z coordinates of each layer” consists of four subgroups, one for each layer of the road pavement: Surface, Binder, Base and Subbase layer. In a subgroup as many Format components as necessary can be found, for the definition of the coordinates of the points that make up the layer. Input Data are Surface Thickness, Binder Thickness, Base Thickness, Subbase Thickness and PavementWidth*Tangens (CrossInclination). In particular, the last one can vary the inclination of the road pavement simply by changing the value of Cross Inclination in the input.
Once the points have been defined, the boundary edge curves of each layer of road pavement can be created thanks to the PolyLine component, which creates a closed polyline used as input for the Boundary Surface component that allows visualizing the planar surface in Rhinoceros. It is necessary to take into account the presence of the divider and the barrier for some road typologies.
The construction of the Divider Foundation was done using a Rectangle component that consists of a Divider Width input function for the width and thickness of the Surface, Binder, Base and Subbase layers for the height. Finally, it is associated with the Boundary Surface component to create the planar surface.
The safety barrier is set up above the divider and a New Jersey-type barrier is chosen. As done for the road layers, the construction of the geometry of this object starts from the definition of the coordinates of the x and z points through various Formats that will have as input Barrier Width and Barrier Height. Then, through Construct Point, PolyLine and Boundary Surface components, the planar surface is constructed.
The divider foundation and barrier on the left side are shown in Figure 5
All planar surfaces created with Boundary Surfaces must be extruded along the y-axis for a length equal to the Total Length input in order to view the 3D model. This is done for Surface, Binder, Base, Subbase layers, Left Barrier and Left Divider Foundation.
In addition, to complete the 3D model, the divider must also be on the right side of the road infrastructure, so the Move component is used, which has as input a vector that provides the distances of which the object must be moved.
The barrier must also be moved to the right, but in this case, it was preferred to adopt a different component, Mirror, which allows the figure to be mirrored with respect to a point on the yz plane; the midpoint long x with respect to the width of the pavement was chosen. Therefore, the Right Barrier was modelled.
These elements characterize the carriageway on the right.
The stripe of the outer edge of the road, Right Edge White, is built and positioned. First of all, the object is constructed as a rectangle whose sides are defined according to the Edge White Width and Total Length inputs. The obtained geometry is given a planar surface and via Move, the edge white stripe is placed in the outer edge of the road, on the right.
As for the construction and positioning of the Left Edge White (the inner edge stripe), two cases must be distinguished; the one in the presence of the safety barrier and the one in the absence of a safety barrier. The geometry used is always a Rectangle component, but the inputs and formulas vary due to the road type.
To decide which of the two solutions to adopt for Left Edge White, a GHPython Script was created to carry out an “if” and “other” statement.
Both Right Edge White stripe and Left Edge White stripe were extruded in the z direction to provide thickness and slope (rotation) of the road.
To construct and distribute the longitudinal discontinuous stripes, called Broken White, different algebraic components such as Addition, Integer Division and Modulus components are used to provide the length of the element to be repeated and to consider if there is a piece of stripe remaining and how long it is in relation to the total length of the road.
The construction of the rectangle that forms the single Broken White is implemented through the three Series components; the first two define the width and length of the stripe, the third defines how many times the element must be repeated in relation to the length of the road.
The constructed rectangle is then positioned through the Move component and assigned a planar surface through Boundary Surface component.
Length of the last stripe stretch may not fit entirely and may therefore be cut depending on the Total Length chosen. To calculate the stripe cut the components Equals, Filter, Modulus and Boolean are used.
If present, the last piece of the stripe is constructed as a rectangle and positioned using Move. Its shape is defined with Boundary Surface and finally extruded in the z direction to provide thickness.
The approach is useful to build and distribute a single longitudinal discontinuous stripe, which must be suitably positioned if the road type is two-lane or three-lane. This is the reason why the geometry of the Broken White stripe is analyzed by the Filter component to determine the presence or absence of the stripes as a function of Lane Width and Number of Lanes for the road type.
The obtained geometry is then correctly positioned along the x axis using Move and rotated using Rotate according to the Cross Inclination.
The built geometries are mirrored with a Mirror around the yz plane to obtain the lane on the left. This is implemented with Surface, Binder, Base, Subbase, Left and Right Barrier, Left and Right Divider, Left and Right Edge White stripes and Broken White stripes. The complete road infrastructure model implemented in Rhinoceros is shown in Figure 6
Hence, the developed model can reproduce any road typology present in the Italian scenario and can support the design of new ones due to the possible parameterization of its elements.
Precisely for this reason, it would also be enough to replace the set of input parameters to the model with alternative parameter sets provided by any other road design regulations in order to quickly obtain a 3D model that meets the new requirements.