In order to show the application effect of the BQTCM method more intuitively, this paper realizes the mapping between a specific type of BIM data and a specific construction classification system. In China, GB50500 is officially designated as the specification to guide quantity takeoff. As a widely used BIM software in China, Revit 2018 has many advantages, which include rich family libraries, well-designed functions, and user-friendly interface, and it provides solutions for architectural modeling, structural modeling, structural software integration, mechanical, electrical, and plumbing (MEP) modeling, energy demonstration, etc. [
33]. Although Revit 2018 has some shortcomings in calculating the bill of quantities, such as that built-in calculating rules may not conform to the specification requirements of the area where the building is located, it cannot directly export statistical table to meet the requirements of the specifications of some countries, etc., its powerful application programming interface (API) can directly provide the data structure of Revit 2018 itself, rather than creating a new data structure [
26]. RVT is one of Revit 2018’s native formats. Therefore, taking the mapping between RVT data and GB50500 as an example, the QTCMP is developed based on Revit 2018 to calculate quantity automatically.
5.2. Development of the QTCMP
Considering the main aspects affecting quantity takeoff in
Section 3, this paper adopts the compound modeling method and adjusts the default calculating rules (in Revit) accordingly for the actual calculating rules (in GB50500).
The following introduces two main kinds of calculating rules in GB50500 that are different from the built-in calculating rules of Revit 2018, i.e., component deduction rule and small openings handling rule.
(1) Component deduction rule
Component deduction rule is the basis for which one of two components should be deducted when they overlap.
Table 4 shows a component deduction priority list used in practice, which is suitable for the calculation of architectural and structural components. When two types of components overlap, the lower priority component should be deducted.
(2) Small openings handling rule
The small openings handling rule is that the volume occupied by a single hole with an area less than 0.3 m
2 is not deducted in the quantity takeoff in GB50500. However, the quantity of walls and slabs in Revit 2018 is the actual volume of components. Based on this, the QTCMP resets calculating rule for small openings. The detailed process of dealing with small openings is shown in
Figure 4.
In this paper, it should be noted that the influence of small openings on quantity takeoff of the architecture and structure has been considered, but the influence of small openings on quantity takeoff of decoration has not been considered.
The main operation interface of the QTCMP is shown in
Figure 5. On the left side of the interface is the calculation category dialog box. The calculation categories (beams, slabs, columns, walls, etc.) listed in the dialog box are consistent with the calculation categories in GB50500. Users can select the type of quantity to be calculated through this interface.
On the right side of the interface, there are three dialog boxes, namely the property dialog box, the rule identification dialog box, and the bill coding dialog box.
(1) The property dialog box (as shown in
Figure 5a) is used to automatically identify BIM components and read the corresponding properties.
(2) The rule identification dialog box is used to establish a matching relationship between the BIM component and the calculation category on the left, which is shown in
Figure 5b.
(3) The bill coding dialog box shows specific bill coding and corresponding quantity takeoff rule (from GB50500) matching the selected BIM component in the upper half, and GB50500 is embedded in the lower half of this interface, as shown in
Figure 5c.
This paper takes a beam as an example to show the detailed process of using the QTCMP as follows:
Firstly, a beam is automatically identified and its corresponding properties are read by the property dialog box (
Figure 5a).
Secondly, a matching relationship between the beam and the calculation category on the left is established by the rule identification dialog box (
Figure 5b). In detail, its calculation category is a concrete beam and its sub-category is a concrete rectangular beam, as shown in
Figure 6.
Finally, based on the bill coding dialog box (
Figure 5c), the concrete volume and formwork area of this beam are calculated according to GB50500. The quantity takeoff results of this beam are as shown in
Figure 7.
Affected by the example BIM software (Revit 2018) and building classification system (GB50500), QTCMP has some limitations, but it does not affect the universality of the BQTCM method. Except for fine decoration engineering, municipal engineering, garden engineering, structural metallic engineering, roof and waterproof engineering, and anticorrosion and insulation engineering, other calculation categories can be implemented in the QTCMP.
5.3. The Key Algorithms of Quantity Takeoff Based on QTCMP
Examples of three engineering types for the key algorithms of quantity takeoff based on QTCMP are as follows:
The key algorithm for concrete engineering (taking a beam’s quantity takeoff as an example) based on QTCMP is shown in
Figure 8.
The details of the quantity calculation method are introduced as follows.
Step 1 Choose a beam.
Step 2 Automatically determine the beam’s calculation category by its name.
Step 3 Automatically determine the sub-calculation category of the beam by its properties.
Step 4 Manually check if the (sub-) calculation category is correct: if correct, perform step 5; if not, manually adjust the calculation category and sub-calculation category, and then perform Step 5.
Step 5 Get the bill code corresponding to the calculation category and sub-calculation category.
Step 6 Get the details of the bill, including the calculation formulas and rules of quantity takeoff, etc.
Step 7 The concrete volume is calculated as follows:
1) First calculate the actual volume V1 of the beam.
2) Check whether there is a hole:
i. If there is no hole, perform step 3);
ii. If there is a hole, check whether the hole area is greater than the threshold predefined in GB50500: if not, calculate the hole volume V2 and perform step 4); if it is greater than the threshold, perform step 3).
3) Concrete volume = actual volume V1.
4) Concrete volume = actual volume V1 + hole volume V2.
Step 8 Calculate the formwork area, the specific process is as follows:
1) First calculate the total area of the bottom and sides of the beam A1.
2) Find the members intersecting with the beam.
3) Judge whether there are intersecting components: if there are no intersecting components, perform step 4); if there are intersecting members, calculate the area of the overlapping surface between them A2, and perform step 5).
4) Formwork area = the total area of the bottom and sides of the beam A1.
5) Formwork area = the total area of the bottom and sides of the beam A1—the area of the overlapping surface A2.
- (2)
Installation engineering
The calculation of duct area is taken as an example of the quantity takeoff of installation engineering. The calculation process of the duct area is shown in
Figure 9.
1) Calculate the duct’s superficial area A1.
2) Check whether there is a fitting:
i. If no, the final area A = A1;
ii. If yes, the next calculation process is as follows:
Firstly, calculate the extended length of ducts L1: if more than one duct is connected to this fitting, L1 is normally equal to the distance between the endpoint and the center point of this fitting; if only one duct is connected, L1 is normally equal to the distance between two endpoints of this fitting.
Secondly, calculate the cross-section perimeter of duct Pc.
Thirdly, calculate extended area A2 = L1 × Pc.
Finally, get the final area A = A1 + A2.
- (3)
Reinforcement engineering
The calculation process of reinforcement is shown in
Figure 10, taking the reinforcement of the column as an example.
1) Calculate the net length of column Ln = actual length of a column - max length of the top component - max length of the bottom component.
2) Calculate the length of longitudinal bar Ll:
i. Check whether there are hooks: if yes, calculate the length of the bottom hook Lb and the length of the top hook Lt, and the length of the top and the bottom hook Lh = Lb + Lt; if no, Lh = 0.
ii. Check whether there is a joint zone: if yes, calculate the length of the joint bar Ld, and the length of the longitudinal bar Ll = Ln + Lh+ Ld; if no, the final length Ll = Ln + Lh.
3) Calculate the length of stirrup Ls:
i. Calculate the length of a stirrup L1.
ii. Calculate the length of the top and the bottom intensive zone. The number of stirrups in the top intensive zone Nti and the number of stirrups in the bottom intensive zone Nbi are calculated respectively according to the length of the top and the bottom intensive zone.
iii. Calculate the length of the overlapped zone. The number of stirrups in the overlapped zone No is calculated according to the length of the overlapped zone.
iv. Calculate the length of the non-intensive zone. The number of stirrups in the non-intensive zone Noi is calculated according to the length of the non-intensive zone.
v. Check whether there is a joint zone: if yes, calculate the length of the joint zone and calculate the number of stirrups in the joint zone Njz according to the length of the joint zone; obtain the final length Ls = L1 × (Nti + Nbi + No + Noi + Nf + Njz). If no, obtain the final length Ls = L1 × (Nti + Nbi + No + Noi + Nf).