A BIM-based method and system for automatically generating cushion layers

The method and system use Revit API to automate layer generation in Revit software, addressing accuracy and efficiency issues by determining layer type and using appropriate API methods for slanted or horizontal surfaces, enhancing precision and speed.

CN116127571BActive Publication Date: 2025-07-15XIAMEN HYMAKE TECH
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310021877.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-01-07
Publication Date
2025-07-15
Estimated Expiration
2043-01-07

AI Technical Summary

Technical Problem

When creating cushion layers using Revit software, it is difficult to ensure the accuracy of cushion layers thickness and outward expansion distance, and manual modeling cannot meet the needs of batch generation.

Method used

Through the BIM-based method, the NewSlab and NewFloor methods of the Revit API are used to automatically create a cushion layer according to the type of the surface to be generated, including determining whether the cushion is a bevel or a horizontal plane, and using the corresponding API method to generate a cushion layer.

Benefits of technology

Improves the accuracy and convenience of cushion creation, and realizes the need to batch generate cushion, saving time and reducing memory footprint.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116127571B_ABST
    Figure CN116127571B_ABST
Patent Text Reader

Abstract

The present invention discloses a method and system for automatically generating cushions based on BIM. First, the cushion type is determined according to the cushion thickness. Secondly, it is judged whether the surface to be generated is an inclined surface. If the surface to be generated is an inclined surface, the method of NewSlab in Revit API is used to create a cushion according to the cushion type. If the surface to be generated is not an inclined surface, it is judged whether the surface to be generated is a horizontal surface. If the surface to be generated is a horizontal surface, the method of NewFloor in Revit API is used to create a cushion according to the cushion type. The present invention provides two methods for creating cushions by using tools in Revit API according to the type of the surface to be generated, which can not only improve the accuracy of creating cushions, but also realize batch creation of cushions, thus improving the convenience of use.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention belongs to the technical field of building construction, and specifically relates to a method and system for automatically generating cushions based on BIM. Background Art

[0002] In the process of creating cushions using Revit software, it is necessary to ensure the accuracy of the cushion thickness and the outward expansion distance. However, it is difficult to ensure the accuracy of the above parameters by the existing manual modeling method; secondly, in a Revit project, the number of components that need to create cushions is numerous, and the manual creation method cannot meet the demand for batch generation. Therefore, in order to generate cushions more quickly and accurately in batches, it is necessary to design and implement a method for automatically generating cushions. Summary of the Invention

[0003] Based on the above technical problems, the present invention provides a method and system for automatically generating cushions based on BIM to improve the accuracy of creating cushions and batch creation of cushions.

[0004] The specific technical solution is as follows:

[0005] A method for automatically generating cushions based on BIM, the method comprising:

[0006] Step S1: Obtain the cushion thickness;

[0007] Step S2: Determine the cushion type according to the cushion thickness;

[0008] Step S3: Obtain the surface to be generated; the surface to be generated is the surface on the component where the cushion is to be generated;

[0009] Step S4: Determine whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, then use the NewSlab method in Revit API to create a cushion according to the cushion type; if the surface to be generated is not an inclined surface, execute "Step S5";

[0010] Step S5: Determine whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, then use the NewFloor method in RevitAPI to create a cushion according to the cushion type.

[0011] Optionally, the determining the cushion type according to the cushion thickness specifically includes:

[0012] Generate a family type according to the cushion thickness;

[0013] Determine whether there is a cushion type corresponding to the family type in the project; if there is a cushion type corresponding to the family type, output the cushion type; if there is no cushion type corresponding to the family type, then determine the cushion type according to the cushion thickness in the project and output the cushion type.

[0014] Optionally, the method of using NewSlab in the Revit API to create a cushion layer according to the cushion layer type specifically includes:

[0015] Use the cross product method to determine the slope arrow;

[0016] Calculate the tilt angle;

[0017] Use the inclined plane projection method to determine the set of inclined plane projection contours;

[0018] Determine the set of cushion layer generation positions according to the slope arrow, the tilt angle, and the set of inclined plane projection contours;

[0019] Use the method of NewSlab in the Revit API to create a cushion layer according to the first cushion layer parameters; the first cushion layer parameters include: cushion layer type, set of cushion layer generation positions, set of inclined plane projection contours, elevation, slope arrow, and tilt angle.

[0020] Optionally, the method of using NewFloor in the Revit API to create a cushion layer according to the cushion layer type specifically includes:

[0021] Use the horizontal plane projection method to determine the set of horizontal plane projection contours;

[0022] By means of outward expansion, calculate the set of cushion layer generation positions based on the set of horizontal plane projection contours;

[0023] Use the method of NewFloor in the Revit API to create a cushion layer according to the second cushion layer parameters; the second cushion layer parameters include: cushion layer type, set of cushion layer generation positions, set of horizontal plane projection contours, and elevation.

[0024] Optionally, the method of calculating the set of cushion layer generation positions based on the set of horizontal plane projection contours by means of outward expansion specifically includes:

[0025] Eliminate the data with projection contours less than the first set threshold in the set of horizontal plane projection contours;

[0026] Delete the collinear endpoints of the horizontal plane projection contours after elimination, and retain the inflection points of the contours to obtain the preprocessed contours;

[0027] Use the Revit API to offset the preprocessed contours outward to obtain the offset contours;

[0028] Generate the set of cushion layer generation positions based on the offset contours.

[0029] The present invention also provides a BIM-based automatic cushion layer generation system, and the system includes:

[0030] The first acquisition module is used to acquire the cushion thickness;

[0031] The cushion type determination module is used to determine the cushion type according to the cushion thickness;

[0032] The second acquisition module is used to acquire the surface to be generated; the surface to be generated is the surface on the component where the cushion is to be generated;

[0033] The first judgment module is used to judge whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, the "first cushion creation module" is executed; if the surface to be generated is not an inclined surface, the "second judgment module" is executed;

[0034] The second judgment module is used to judge whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, the "second cushion creation module" is executed;

[0035] The first cushion creation module is used to create a cushion according to the cushion type by using the NewSlab method in the Revit API;

[0036] The second cushion creation module is used to create a cushion according to the cushion type by using the NewFloor method in the Revit API.

[0037] Optionally, the cushion type determination module specifically includes:

[0038] The family type determination unit is used to generate a family type according to the cushion thickness;

[0039] The judgment unit is used to judge whether there is a cushion type corresponding to the family type in the project; if there is a cushion type corresponding to the family type, the cushion type will be output; if there is no cushion type corresponding to the family type, the cushion type will be determined according to the cushion thickness in the project and the cushion type will be output.

[0040] Optionally, the first cushion creation module specifically includes:

[0041] The slope arrow determination unit is used to determine the slope arrow by using the cross product method;

[0042] The inclination angle calculation unit is used to calculate the inclination angle;

[0043] The inclined surface projection contour set determination unit is used to determine the inclined surface projection contour set by using the inclined surface projection method;

[0044] The first cushion generation position set determination unit is used to determine the cushion generation position set according to the slope arrow, the inclination angle and the inclined surface projection contour set;

[0045] The first cushion layer creation unit is used to create a cushion layer according to the first cushion layer parameters by using the NewSlab method in the Revit API; the first cushion layer parameters include: cushion layer type, cushion layer generation position set, inclined plane projection contour set, elevation, slope arrow, and inclination angle.

[0046] Optionally, the second cushion layer creation module specifically includes:

[0047] The horizontal plane projection contour set determination unit is used to determine the horizontal plane projection contour set by using the horizontal plane projection method;

[0048] The second cushion layer generation position set determination unit is used to calculate the cushion layer generation position set based on the horizontal plane projection contour set by means of outward expansion;

[0049] The second cushion layer creation unit is used to create a cushion layer according to the second cushion layer parameters by using the NewFloor method in the Revit API; the second cushion layer parameters include: cushion layer type, cushion layer generation position set, horizontal plane projection contour set, and elevation.

[0050] Optionally, the second cushion layer generation position set determination unit specifically includes:

[0051] The line elimination sub-unit is used to eliminate the data with projection contours less than the first set threshold in the horizontal plane projection contour set;

[0052] The collinear endpoint elimination sub-unit is used to delete the collinear endpoints of the horizontal plane projection contours after elimination, retain the inflection points of the contours, and obtain the preprocessed contours;

[0053] The outward expansion sub-unit is used to offset the preprocessed contour outward by using the Revit API to obtain an offset contour;

[0054] The second cushion layer generation position set determination sub-unit is used to generate the cushion layer generation position set based on the offset contour.

[0055] Compared with the prior art, the present invention has the following beneficial effects:

[0056] The present invention discloses a method and system for automatically generating cushions based on BIM. First, the cushion type is determined according to the cushion thickness. Secondly, it is judged whether the surface to be generated is an inclined surface. If the surface to be generated is an inclined surface, the method of NewSlab in Revit API is used to create a cushion according to the cushion type. If the surface to be generated is not an inclined surface, it is judged whether the surface to be generated is a horizontal surface. If the surface to be generated is a horizontal surface, the method of NewFloor in Revit API is used to create a cushion according to the cushion type. The present invention provides two methods for creating cushions by using the tools in Revit API according to the type of the surface to be generated, which can not only improve the accuracy of creating cushions, but also realize batch creation of cushions, thus improving the convenience of use. BRIEF DESCRIPTION OF THE DRAWINGS

[0057] Figure 1 It is a flowchart of a method for automatically generating cushions based on BIM according to the present invention;

[0058] Figure 2 It is a three-dimensional schematic diagram of the side of a component according to the present invention being a vertical surface;

[0059] Figure 3 It is a three-dimensional schematic diagram of the side of a component according to the present invention including an inclined surface;

[0060] Figure 4 It is a schematic diagram of the deduction structure according to the present invention;

[0061] Figure 5 It is a structural diagram of a system for automatically generating cushions based on BIM according to the present invention. DETAILED DESCRIPTION OF THE EMBODIMENTS

[0062] The present invention will be further described below in conjunction with specific implementation cases and drawings, but the present invention is not limited to these embodiments.

[0063] Embodiment 1

[0064] As Figure 1 shown, the present invention discloses a method for automatically generating cushions based on BIM, and the method includes:

[0065] Step S1: Obtain the cushion thickness.

[0066] Step S2: Determine the cushion type according to the cushion thickness.

[0067] Step S3: Obtain the surface to be generated; the surface to be generated is the surface on the component where the cushion is to be generated.

[0068] Step S4: Judge whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, execute "Step S6"; if the surface to be generated is not an inclined surface, execute "Step S5".

[0069] Step S5: Determine whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, then execute "Step S7"; if the surface to be generated is a vertical surface, no processing is required.

[0070] Step S6: Use the method of NewSlab in Revit API to create a cushion layer according to the cushion layer type.

[0071] Step S7: Use the method of NewFloor in Revit API to create a cushion layer according to the cushion layer type.

[0072] The following is a detailed discussion of each step:

[0073] Step S1: Obtain the thickness of the cushion layer input by the user through the interaction interface; the thickness of the cushion layer disclosed in this application can be input by the user through the interaction interface, or can be input through network transmission, including but not limited to the above two, which will not be elaborated one by one here.

[0074] Step S2: Determine the cushion layer type according to the thickness of the cushion layer, specifically including:

[0075] Step S21: Generate a family type according to the thickness of the cushion layer. In the present invention, the family type is defined by naming.

[0076] Step S22: Determine whether there is a cushion layer type corresponding to the family type in the project; if there is a cushion layer type corresponding to the family type, output the cushion layer type; if there is no cushion layer type corresponding to the family type, then determine the cushion layer type according to the thickness of the cushion layer in the project and output the cushion layer type. The above project preferably uses a Revit project.

[0077] The naming of the cushion layer type in this invention patent is defined as "Cushion - Xmm"; where X is the thickness of the cushion layer. The present invention preferably searches for the cushion layer type required by the user by matching the family type names in the Revit project. Compared with determining the cushion layer type every time a new one is created, this can not only save time but also reduce the occupied memory space.

[0078] The present invention is a platform obtained by secondary development of Revit software based on Revit API, abbreviated as the Revit platform. The above-mentioned Revit project is a project built and stored based on the Revit platform.

[0079] Since there is no cushion layer family in the Revit project, we use a floor slab to generate the cushion layer and distinguish the cushion layer from other floor slabs by the way of family name.

[0080] Step S3: Obtain the surface to be generated; the surface to be generated is the surface on the component where the cushion layer is to be generated; the surface where the cushion layer is to be generated can be either a pre-selected surface or a randomly selected surface according to actual needs, which will not be elaborated here too much.

[0081] This invention patent uses the world three-dimensional coordinate system in Revit software to determine relevant information of components. For example Figure 2 , in the figure, ① is the world three-dimensional coordinate system in Revit software, and the six directions are up, down, left, right, front, and back. The top surface in this invention patent is the surface parallel to the up and down directions of the world three-dimensional coordinate system in Revit software and with a higher height, such as Figure 2 ② in; the surface with a lower height is the bottom surface (it can also be said that the surface corresponding to ② is the bottom surface). The surfaces other than the top surface and the bottom surface are all side surfaces of the component, such as Figure 2 ③ in, and each side surface is a vertical surface. Among the side surfaces, the one not perpendicular to the bottom surface and the top surface is an inclined surface.

[0082] For example Figure 3 , when the surface where the cushion layer needs to be generated is an inclined surface not parallel to the ground, an inclined cushion layer not parallel to the ground needs to be generated. When the surface where the cushion layer needs to be generated is a plane parallel to the ground, a cushion layer parallel to the ground needs to be generated. Therefore, different Revit APIs need to be adopted according to whether the surface where the cushion layer is generated is parallel to the ground to generate the cushion layer model. Specifically, when the surface where the cushion layer needs to be generated is an inclined surface, the NewSlab method in Revit API is used to create the cushion layer. When the surface where the cushion layer needs to be generated is a parallel surface, the NewFloor method in Revit API is used to create the cushion layer. The NewSlab method is a method for generating a slab encapsulated in Revit API, which simulates the process of creating an inclined slab in Revit software: first, a slab parallel to the ground is created, and then the slab is rotated through the inclination angle and slope arrow to achieve the purpose of creating an inclined slab. It provides the possibility of generating an inclined slab through the inclination angle and inclination direction. In addition to the two parameters of the inclination angle and inclination direction, this method also requires three parameters: the profile of the slab, the elevation of the generated slab, and whether to generate a structural slab. The NewFloor method is a method provided in Revit API for generating a floor slab using the profile, elevation, and slab type.

[0083] Step S4: Determine whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, then execute "Step S6"; if the surface to be generated is not an inclined surface, execute "Step S5". In this embodiment, specifically, the direction of the normal vector is used to determine whether the surface to be generated is an inclined surface.

[0084] Step S5: Determine whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, then execute "Step S7"; if the surface to be generated is a vertical surface, no processing is required; the inclined surface is a surface not perpendicular or parallel to the ground; the horizontal surface is a surface parallel to the ground; the vertical surface is a surface perpendicular to the ground.

[0085] Step S6: Use the NewSlab method in the Revit API to create a cushion layer according to the cushion layer type, specifically including:

[0086] Step S61: Use the cross product method to determine the slope arrow, where the slope arrow is a line that controls the inclination angle of the cushion layer on the same plane as the surface to be generated.

[0087] Step S61: Use the cross product method to determine the slope arrow, specifically including:

[0088] Step S611: Take the cross product of the normal vector of the surface to be generated and the ground normal vector (0, 0, 1) to calculate the direction vector of the line where the surface to be generated intersects the horizontal projection plane.

[0089] Step S612: Take the cross product of the line direction vector and the normal vector of the surface to be generated to calculate the slope identification direction.

[0090] Step S613: Take out the lowest point of the surface to be generated, project the obtained slope identification direction onto the Z = 0 plane, and use the two-point form to obtain a line, which is the required slope arrow. The two-point form is specifically:

[0091] SlopeArrow = Line.CreateBound(origin, origin + horSlopDir);

[0092] Among them, SlopeArrow is the slope arrow, origin is the lowest point of the surface to be generated, horSlopDir is the projection of the slope identification direction on the Z = 0 plane, and Line.CreateBound() is a wrapper method in the Revit API used to create a line segment.

[0093] Step S62: Calculate the inclination angle. Specifically, calculate the inclination angle according to the inclination angle formula; the inclination angle is the angle between the surface to be generated and the ground; the inclination angle formula is specifically:

[0094] Slope = slopArrowDir.Z / Math.Sqrt(Math.Pow(slopArrowDir.X, 2) + Math.Pow(slopArrowDir.Y, 2));

[0095] Among them, Slope is the inclination angle, slopArrowDir.Z is the Z coordinate of the slope identification direction, slopArrowDir.X is the X coordinate of the slope identification direction, slopArrowDir.Y is the Y coordinate of the slope identification direction, Math.Sqrt is the wrapper square root method, and Math.Pow is the wrapper power function method.

[0096] Step S63: Determine the set of bevel projection contours using the bevel projection method; the set of bevel projection contours includes the bevel projection contours corresponding to each bevel.

[0097] Step S63: Determine the set of bevel projection contours using the bevel projection method, specifically including:

[0098] Obtain the bevel contour using the Revit API. The specific formula is:

[0099] Var curveloops = face.GetEdgesAsCurveLoops().

[0100] Where curveloops is the bevel contour, face is the bevel, and GetEdgesAsCurveLoops() is the function encapsulated in the Revit API to obtain the planar contour.

[0101] Project the bevel contour onto the projection plane to obtain the bevel projection contour; the projection plane can be any plane parallel to the ground.

[0102] Step S64: Determine the set of cushion generation positions according to the slope arrow, the inclination angle, and the set of bevel projection contours.

[0103] Step S65: Use the NewSlab method in the Revit API to create a cushion according to the first cushion parameters. The first cushion parameters include: cushion type, set of cushion generation positions, set of bevel projection contours, elevation, slope arrow, and inclination angle.

[0104] Step S7: Use the NewFloor method in the Revit API to create a cushion according to the cushion type, specifically including:

[0105] Step S71: Determine the set of horizontal plane projection contours using the horizontal plane projection method; the set of horizontal plane projection contours includes the horizontal plane projection contours corresponding to each horizontal plane.

[0106] Step S71: Determine the set of horizontal plane projection contours using the horizontal plane projection method, specifically including:

[0107] Obtain the horizontal plane contour using the Revit API.

[0108] Project the horizontal plane contour onto the projection plane to obtain the horizontal plane projection contour; the projection plane can be any plane parallel to the ground.

[0109] As Figure 4, due to the operation of model overlap deduction in the Revit project, the surfaces of some components will show a "pitted" situation, resulting in some line segments with too short lengths in the obtained contour. The Revit product does not allow the creation of models with too short lengths. Therefore, this part of the line segments needs to be cleared. Secondly, after clearing the short line segments, the redundant collinear endpoints need to be further deleted. Finally, when the generated surface is a parallel surface, the cushion needs to be expanded outward by a certain distance, so the obtained contour needs to be expanded. The specific steps are as follows:

[0110] Step S72: Through the expansion method, calculate the cushion generation position set based on the horizontal plane projection contour set, specifically including:

[0111] Step S721: Eliminate the data in the horizontal plane projection contour set whose projection contour is less than the first set threshold.

[0112] Step S722: Delete the collinear endpoints of the horizontal plane projection contour after elimination, retain the inflection points of the contour, and obtain the preprocessed contour.

[0113] Step S723: Use the Revit API to offset the preprocessed contour outward to obtain the offset contour; the offset distance can be selected according to actual needs.

[0114] Step S724: Generate the cushion generation position set based on the offset contour.

[0115] Step S73: Use the NewFloor method in the Revit API to create a cushion according to the second cushion parameter. The second cushion parameter includes: cushion type, cushion generation position set, horizontal plane projection contour set, and elevation.

[0116] The present invention is based on the encapsulation method for generating wall types in the Revit API to achieve the purpose of creating a cushion model in the Revit project. When generating the cushion model, two different methods are adopted according to whether the plane to be generated is an inclined plane or a parallel plane. When the plane for generating the cushion is an inclined plane, the NewSlab method in the Revit API is used to create an inclined cushion through the cushion contour, elevation, slope arrow, inclination angle, etc. When the plane for generating the cushion is a parallel plane, the NewFloor method in the Revit API is used to create the cushion.

[0117] Embodiment 2

[0118] As Figure 5 shown, the present invention also discloses a BIM-based automatic cushion generation system, and the system includes:

[0119] The first acquisition module 501 is used to acquire the cushion thickness.

[0120] The cushion type determination module 502 is configured to determine the cushion type according to the cushion thickness.

[0121] The second acquisition module 203 is configured to acquire the surface to be generated; the surface to be generated is the surface of the component where the cushion is to be generated.

[0122] The first judgment module 504 is configured to judge whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, then execute the "first cushion creation module 506"; if the surface to be generated is not an inclined surface, execute the "second judgment module 505".

[0123] The second judgment module 505 is configured to judge whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, then execute the "second cushion creation module 507".

[0124] The first cushion creation module 506 is configured to create a cushion according to the cushion type by using the NewSlab method in the Revit API.

[0125] The second cushion creation module 507 is configured to create a cushion according to the cushion type by using the NewFloor method in the Revit API.

[0126] As an optional implementation manner, the cushion type determination module 502 of the present invention specifically includes:

[0127] The family type determination unit is configured to generate a family type according to the cushion thickness.

[0128] The judgment unit is configured to judge whether there is a cushion type corresponding to the family type in the project; if there is a cushion type corresponding to the family type, the cushion type will be output; if there is no cushion type corresponding to the family type, the cushion type will be determined according to the cushion thickness in the project and the cushion type will be output.

[0129] As an optional implementation manner, the first cushion creation module 506 of the present invention specifically includes:

[0130] The slope arrow determination unit is configured to determine a slope arrow by using the cross product method.

[0131] The inclination angle calculation unit is configured to calculate the inclination angle.

[0132] The inclined surface projection contour set determination unit is configured to determine an inclined surface projection contour set by using the inclined surface projection method.

[0133] The first cushion generation position set determination unit is configured to determine a cushion generation position set according to the slope arrow, the inclination angle and the inclined surface projection contour set.

[0134] The first cushion layer creation unit is used to create a cushion layer according to the first cushion layer parameters by using the NewSlab method in the Revit API; the first cushion layer parameters include: cushion layer type, cushion layer generation position set, inclined plane projection contour set, elevation, slope arrow, and inclination angle.

[0135] As an optional implementation manner, the slope arrow determination unit of the present invention specifically includes:

[0136] The first cross product calculation sub-unit is used to perform a cross product of the normal vector of the surface to be generated and the ground normal vector (0, 0, 1) to calculate the line direction vector of the intersection of the surface to be generated and the horizontal projection plane.

[0137] The second cross product calculation sub-unit is used to perform a cross product of the line direction vector and the normal vector of the surface to be generated to calculate the slope identification direction.

[0138] The projection sub-unit is used to take out the lowest point of the surface to be generated, project the obtained slope identification direction onto the Z = 0 plane, and obtain a straight line by using the two-point form. This straight line is the required slope arrow.

[0139] As an optional implementation manner, the second cushion layer creation module 507 of the present invention specifically includes:

[0140] The horizontal plane projection contour set determination unit is used to determine the horizontal plane projection contour set by using the horizontal plane projection method.

[0141] The second cushion layer generation position set determination unit is used to calculate the cushion layer generation position set based on the horizontal plane projection contour set by an outward expansion method.

[0142] The second cushion layer creation unit is used to create a cushion layer according to the second cushion layer parameters by using the NewFloor method in the Revit API; the second cushion layer parameters include: cushion layer type, cushion layer generation position set, horizontal plane projection contour set, and elevation.

[0143] As an optional implementation manner, the second cushion layer generation position set determination unit of the present invention specifically includes:

[0144] The line elimination sub-unit is used to eliminate the data with the projection contour less than the first set threshold in the horizontal plane projection contour set.

[0145] The collinear endpoint elimination sub-unit is used to delete the collinear endpoints of the horizontal plane projection contour after elimination, retain the inflection points of the contour, and obtain the preprocessed contour.

[0146] The outward expansion sub-unit is used to offset the preprocessed contour outward by using the Revit API to obtain an offset contour.

[0147] The second cushion layer generation position set determination subunit is configured to generate a cushion layer generation position set based on the offset profile.

[0148] The above are only the preferred embodiments of the present invention and are not intended to limit the present invention. For those skilled in the art, the present invention may have various modifications and changes. Any modifications, equivalent replacements, improvements, etc. made within the spirit and principle of the present invention shall be included within the protection scope of the present invention.

Claims

1. A method for automatically generating a cushion based on BIM, characterized in that The method includes: Step S1: Obtain the cushion thickness; Step S2: Determine the cushion type according to the cushion thickness; Step S3: Obtain the surface to be generated; the surface to be generated is the surface on the component where the cushion is to be generated; Step S4: Determine whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, then execute Step S5; if the surface to be generated is not an inclined surface, execute Step S6; Step S5: Use the cross product method to determine the slope arrow; calculate the inclination angle; use the inclined surface projection method to determine the set of inclined surface projection contours; determine the set of cushion generation positions according to the slope arrow, the inclination angle and the set of inclined surface projection contours; use the method of generating an inclined slab encapsulated in the Revit API to create a cushion according to the first cushion parameters; the first cushion parameters include: cushion type, set of cushion generation positions, set of inclined surface projection contours, elevation, slope arrow and inclination angle; Step S6: Determine whether the surface to be generated is a horizontal surface; if the surface to be generated is a horizontal surface, use the horizontal surface projection method to determine the set of horizontal surface projection contours; through the outward expansion method, calculate the set of cushion generation positions based on the set of horizontal surface projection contours; use the method of generating a floor slab encapsulated in the Revit API to create a cushion according to the second cushion parameters; the second cushion parameters include: cushion type, set of cushion generation positions, set of horizontal surface projection contours and elevation.

2. The automatic generation method of cushion based on BIM according to claim 1, wherein The determination of the cushion type according to the cushion thickness specifically includes: Generate a family type according to the cushion thickness; Determine whether there is a corresponding cushion type in the project for the family type; if there is a corresponding cushion type for the family type, output the cushion type; if there is no corresponding cushion type for the family type, then determine the cushion type in the project according to the cushion thickness and output the cushion type.

3. The automatic generation method of cushion based on BIM according to claim 1, characterized in that The calculation of the set of cushion generation positions based on the set of horizontal surface projection contours through the outward expansion method specifically includes: Eliminate the data in the set of horizontal surface projection contours whose projection contours are less than the first set threshold; Delete the collinear endpoints of the horizontal surface projection contours after elimination, and retain the inflection points of the contours to obtain the preprocessed contours; Use the Revit API to offset the preprocessed contours outward to obtain the offset contours; Generate the set of cushion generation positions based on the offset contours.

4. A BIM-based cushion automatic generation system, characterized in that, The system includes: The first acquisition module is used to acquire the cushion thickness; The cushion type determination module is used to determine the cushion type according to the cushion thickness; The second acquisition module is used to acquire the surface to be generated; the surface to be generated is the surface on the component where the cushion is to be generated; The first judgment module is used to judge whether the surface to be generated is an inclined surface; if the surface to be generated is an inclined surface, then execute the "first cushion creation module"; if the surface to be generated is not an inclined surface, execute the "second judgment module"; The first cushion creation module specifically includes: The slope arrow determination unit is used to determine the slope arrow by using the cross product method; The inclination angle calculation unit is used to calculate the inclination angle; The inclined surface projection contour set determination unit is used to determine the set of inclined surface projection contours by using the inclined surface projection method; The first cushion layer generation position set determination unit is configured to determine the cushion layer generation position set according to the slope arrow, the inclination angle, and the inclined plane projection contour set; The first cushion layer creation unit is configured to create a cushion layer according to the first cushion layer parameters by using the method of generating an inclined slab encapsulated in the Revit API; the first cushion layer parameters include: cushion layer type, cushion layer generation position set, inclined plane projection contour set, elevation, slope arrow, and inclination angle; The second judgment module is configured to judge whether the surface to be generated is a horizontal plane; if the surface to be generated is a horizontal plane, the "second cushion layer creation module" is executed; The second cushion layer creation module specifically includes: The horizontal plane projection contour set determination unit is configured to determine the horizontal plane projection contour set by using the horizontal plane projection method; The second cushion layer generation position set determination unit is configured to calculate the cushion layer generation position set based on the horizontal plane projection contour set through an expansion method; The second cushion layer creation unit is configured to create a cushion layer according to the second cushion layer parameters by using the method of generating a floor slab encapsulated in the Revit API; the second cushion layer parameters include: cushion layer type, cushion layer generation position set, horizontal plane projection contour set, and elevation.

5. The automatic cushion layer generation system based on BIM according to claim 4, characterized in that, The cushion layer type determination module specifically includes: The family type determination unit is configured to generate a family type according to the cushion layer thickness; The judgment unit is configured to judge whether there is a cushion layer type corresponding to the family type in the project; if there is a cushion layer type corresponding to the family type, the cushion layer type is output; if there is no cushion layer type corresponding to the family type, the cushion layer type is determined according to the cushion layer thickness in the project, and the cushion layer type is output.

6. The automatic cushion layer generation system based on BIM according to claim 4, characterized in that, The second cushion layer generation position set determination unit specifically includes: The line elimination sub-unit is configured to eliminate data with a projection contour less than a first set threshold in the horizontal plane projection contour set; The collinear end point elimination sub-unit is configured to delete the collinear end points of the horizontal plane projection contour after elimination, retain the inflection points of the contour, and obtain a preprocessed contour; The expansion sub-unit is configured to use the Revit API to offset the preprocessed contour outward to obtain an offset contour; The second cushion layer generation position set determination sub-unit is configured to generate a cushion layer generation position set based on the offset contour.

Citation Information

Patent Citations

  • Revit platform based structure construction method and device

    CN106354937A

  • Method for determining thickness of pipeline system filling layer in roadbed and processing structure

    CN110904759A