A method for generating a BIM model using two-dimensional architectural CAD drawings

By processing CAD drawings and utilizing the Rhino.Inside.Revit plugin and Grasshopper battery, a complete conversion from 2D CAD drawings to BIM models was achieved. Elevation drawings, section drawings, and door and window details were integrated, solving the problems of incomplete information and insufficient accuracy in existing technologies, and improving modeling efficiency and accuracy.

CN120525707BActive Publication Date: 2025-11-04NANJING YANGTZE RIVER URBAN AGCHITECTURAL DESIGN
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202511028681.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2025-07-25
Publication Date
2025-11-04
Estimated Expiration
2045-07-25

AI Technical Summary

Technical Problem

Existing technologies cannot effectively integrate elevation, section and door and window details from 2D CAD drawings, and lack a mechanism for cross-checking multiple drawings, resulting in a large workload, incomplete information and insufficient accuracy in BIM modeling.

Method used

The seven-step method for processing CAD drawings includes adding rectangles and drawing titles, using the Rhino.Inside.Revit plugin and Grasshopper battery to identify and match information such as floor lines, axes, and door and window dimensions, thereby integrating and cross-checking information from multiple drawings to generate a BIM model.

Benefits of technology

It realizes the full-process conversion from 2D CAD drawings to BIM models, covering elevation creation, grid generation, and multi-dimensional verification of doors and windows, solving the problems of incomplete information and insufficient accuracy, and improving modeling efficiency and accuracy.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120525707B_ABST
    Figure CN120525707B_ABST
Patent Text Reader

Abstract

The application discloses a method for generating a BIM model by using two-dimensional building CAD drawings, and belongs to the technical field of building information modeling (BIM). The conversion is realized through seven steps: processing CAD drawings, adding a rectangular frame and a drawing name to each plan and elevation and extracting a wall positioning line; creating an elevation based on a profile drawing; generating an axis network according to a plan; checking the size of doors and windows in a detailed drawing and a plan; creating a wall and doors and windows; generating a room and analyzing an inner wall and an outer wall; and checking the position of doors and windows. The method runs in a Rhino.Inside.Revit plug-in of Revit and is completed by calling a Revit API through a C# algorithm. Compared with the prior art, the method can integrate multiple types of drawing information, realize cross-drawing cross-checking, solve the problems of incomplete information and insufficient precision, and improve the modeling efficiency and accuracy.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The application relates to a method for generating a BIM model from a two-dimensional architectural CAD drawing, and belongs to the technical field of building information modeling (BIM). BACKGROUND

[0002] With the digital transformation of the construction industry and the further promotion of BIM information model application in China, the demand for BIM models is gradually increasing. However, the current mainstream architectural project design is still in two-dimensional CAD design, and there are many unfavorable factors in BIM forward design. The most important problem is that the modeling BIM model workload is larger than that of two-dimensional CAD design. In order to promote BIM forward design, plug-ins need to be developed to reduce the BIM modeling workload. Converting a two-dimensional CAD drawing of an architectural scheme into a BIM model is the first step in BIM forward design.

[0003] In the prior art, the modeling master (architecture) of Hongwa Technology is a plug-in based on Revit design that can reduce the BIM modeling workload. The CAD conversion module in the modeling master (architecture) can be used to realize door and window conversion. The specific implementation steps are as follows:

[0004] 1. Linking CAD: linking CAD to Revit;

[0005] 2. Axis network conversion: selecting the axis layer and axis number layer in the plan view in the interaction, and generating axis lines and axis numbers in Revit;

[0006] 3. Wall conversion: selecting the wall layer and door and window layer in the plan view, and the reference wall family, the software automatically identifies the wall thickness, and the wall at the door and window is not broken;

[0007] 4. Door and window conversion: selecting the door and window table in the door and window table CAD, reading the door and window size information, and creating a new family according to the reference door and window family; selecting the door and window layer and the text layer in the architectural plan, and automatically creating doors and windows, the door bottom elevation is according to the floor elevation, and the window bottom elevation is according to the default value.

[0008] Similar to the modeling master (architecture), the similar plug-in in the prior art has obvious deficiencies: it can only recognize the architectural plan, cannot obtain the architectural floor and elevation information; can only recognize the door and window size, cannot obtain the door and window placement information in the building; and cannot cross-check the size and spatial position of the door and window.

[0009] Explanation of technical terms

[0010] BIM model: building information model (BIM) Building Information Modeling , which is a digital representation of the physical and functional characteristics of a building project.

[0011] CAD drawing: computer-aided design (CAD) Computer Aided Design) Drawings, graphical files for two-dimensional architectural design.

[0012] Revit: A building information modeling software for architectural design, construction, and operational management.

[0013] Rhino.Inside.Revit: A plugin developed by Rhino Company that enables Rhino and Grasshopper to run on the Revit platform, facilitating data interaction and algorithm application.

[0014] API: Application Programming Interface (API), used for function calls between software. Application Programming Interface ), used for function calls between software. SUMMARY

[0015] Invention purpose: To solve the problem of incomplete information identification of two-dimensional CAD drawings and the inability to cross-check and verify in the prior art, a method for generating BIM models from two-dimensional architectural CAD drawings is provided to accurately and efficiently convert two-dimensional CAD drawings into BIM models and realize cross-checking of information.

[0016] Technical solution: To achieve the above purpose, the technical solution adopted by the present application is as follows:

[0017] A method for generating BIM models from two-dimensional architectural CAD drawings, comprising the following steps:

[0018] Step 1, processing CAD drawings: CAD drawings include one architectural plan per floor, one architectural elevation per orientation of southeast, southwest, and northwest, several architectural section drawings of the entire building vertically, and several door and window detail drawings. Add a rectangular frame and a unique corresponding drawing name to each CAD drawing, and obtain the wall positioning line in each CAD drawing; according to industry practice, the drawing name of the architectural plan must contain the keyword "plan", the drawing name of the architectural elevation must contain the keyword "elevation", the drawing name of the architectural section must contain the keyword "section", and the drawing name of the door and window detail must contain the keyword "door and window detail";

[0019] Step 2, create elevation: read the floor line, floor name and elevation text in the rectangular frame of all architectural section drawings, match the floor line, floor name and elevation text by analyzing the positional relationship of the floor line, floor name and elevation text in the rectangular frame, identify the semantic expression of the floor line, floor name and elevation text, and create the elevation in Revit according to the identified semantic expression;

[0020] Step3, creating axis network: reading all the axis lines and axis number texts in the rectangular frame, obtaining the start point coordinates and end point coordinates of the axis lines, obtaining the coordinates of the axis number texts, matching the axis lines and the axis number texts by analyzing the positional relationship of the axis lines and the axis number texts in the rectangular frame, identifying the semantic expression of the axis lines and the axis number texts, and calling the API in Revit to create an axis network according to the identified semantic expression;

[0021] Step4, checking the size of doors and windows: reading all the door and window detail drawing rectangular frames, obtaining the door and window numbers and door and window related size texts, identifying or calculating the door and window geometric dimensions including the door and window width and the door and window distance from the floor line, checking the door and window related size, the door and window geometric dimension and the door and window distance from the floor line, and prompting the error information; reading the door and window numbers and door and window related size texts in the specified architectural plan rectangular frame, identifying or calculating the door and window position and door and window width, and checking whether the door and window width is consistent in the door and window detail drawing and the specified architectural plan, and prompting the error information;

[0022] Step5, creating walls and doors and windows: reading the wall positioning line, wall edge line and wall related size text in the specified architectural plan rectangular frame, obtaining the wall position and wall thickness by analyzing the positional relationship of the wall positioning line and the wall edge line; analyzing the door and window related size and the wall related size, and using the relationship between the door and window position and the wall position to attribute the door and window to the corresponding wall; calling the API in Revit to create a wall according to the wall positioning line and the wall thickness, and if there is a door and window on the wall, creating a door and window on the wall according to the door and window distance from the floor line and the door and window position;

[0023] Step6, creating rooms and analyzing interior and exterior walls: reading the wall edge line and room text in the architectural plan rectangular frame, matching the wall edge line and the room text by analyzing the positional relationship of the wall edge line and the room text in the rectangular frame, identifying the semantic expression of the wall edge line and the room text, and calling the API in Revit to create a room according to the identified semantic expression; analyzing whether the wall is an interior wall or an exterior wall by analyzing the number of times the wall serves as a room boundary;

[0024] Step7, door and window position checking: obtaining the information of the door and window and the wall in Revit, determining the building facade to which the exterior wall and the door and window belong according to the wall orientation and the relationship between the wall position and the center position of the plan; reading the door and window related size text in the architectural elevation rectangular frame, identifying or calculating the door and window position, door and window height, door and window width and door and window bottom elevation; matching the door and window position in Revit and the door and window position in the CAD drawing, checking the consistency of the door and window position and the door and window width in Revit and the architectural elevation first, and then checking the consistency of the door and window bottom elevation, door and window width and door and window height in Revit and the door and window detail drawing and the architectural elevation, and prompting the error information.

[0025] The prior art (such as Hongwa Technology Modeling Master) can only identify building plans, cannot integrate elevation drawings, section drawings, and door and window detail drawings, and lacks a cross-checking mechanism for multiple drawings. The present case realizes the full-process conversion of two-dimensional CAD (including plans, elevations, sections, and door and window detail drawings) to BIM models through seven steps, covering techniques such as elevation creation, axis network generation, and door and window multi-dimensional checking. Compared to the prior art of "single drawing recognition + no cross verification", the present case integrates information from different types of CAD drawings (such as using section drawings to generate elevations and using elevation drawings to check door and window positions) through multiple steps, and designs a cross-checking mechanism for door and window size and position across drawings (such as checking width on plans and detail drawings and checking height on elevations and models), solving the problems of incomplete information and insufficient precision in the prior art.

[0026] Specifically, in Step 1, the specific process of processing CAD drawings is as follows:

[0027] (11) Add a rectangular frame and a drawing name to the building plan: add a rectangular frame and a corresponding drawing name to each building plan to facilitate efficient retrieval of CAD information in the future. The rectangular frame must completely cover the current building plan, and the drawing name is located within the rectangular frame.

[0028] (12) Obtain the wall positioning line in the building plan: open a building plan containing a rectangular frame and a corresponding drawing name in the positive CAD. First, use the display baseline function to display the wall positioning line in the building plan. Then, use the CAD explosion function to explode the wall in the building plan to obtain the wall positioning line. Next, use the save function to save the building plan in t3 format. Finally, use the copy function to copy the wall positioning line to the corresponding position of the building plan in t3 format.

[0029] (13) Add a rectangular frame and a drawing name to the building elevation: add a rectangular frame and a corresponding drawing name to each building elevation to facilitate efficient retrieval of CAD information in the future. The rectangular frame must completely cover the current building elevation, and the drawing name is located within the rectangular frame.

[0030] (14) Add a rectangular frame and a drawing name to the door and window detail drawing: add a rectangular frame and a corresponding drawing name to all door and window detail drawings to facilitate efficient retrieval of CAD information in the future. The rectangular frame must completely cover all door and window detail drawings, and the drawing name is located within the rectangular frame.

[0031] (15) Add a rectangular frame and a drawing name to the building section drawing: add a rectangular frame and a drawing name to all building section drawings to facilitate efficient retrieval of CAD information in the future. The rectangular frame must completely cover all building section drawings, and the drawing name is located within the rectangular frame.

[0032] The case is aimed at different types of CAD drawings (floor plan, elevation, etc.) Design differentiated processing logic (such as floor plan needs to extract wall positioning line, elevation only needs to frame), solve the problem of CAD information extraction confusion in the prior art; At the same time, the case uses standard tools such as RhinoCAD, which can provide standardized data for subsequent modeling.

[0033] Specifically, in Step 2, the specific process of creating the elevation is:

[0034] (21) Get all the rectangular boxes and corresponding figure names: open Rhino software in Revit using Rhino.Inside, open grasshopper battery in Rhino software, get the size and position of the rectangular box in the layer of the rectangular box, get the position of the figure name text in the layer of the figure name, and match the rectangular box and the figure name according to the position of the figure name in the corresponding rectangular box, and the position relationship between the rectangular box and the figure name, the matched rectangular box carries the figure name information;

[0035] (22) Identify the building section drawing rectangular box: traverse all the rectangular boxes, find the rectangular box containing the section drawing in the figure name information, that is, get the building section drawing rectangular box;

[0036] (23) Get the floor line, floor name and elevation text in the building section drawing rectangular box: find all floor lines in the floor line layer, and filter out the floor lines whose start and end points are located in the building section drawing rectangular box; find all floor names and elevation texts in the floor name and elevation text layer, and filter out the floor names and elevation texts located in the building section drawing rectangular box;

[0037] (24) Data matching: match the floor line, floor name and elevation text for the filtered floor line, floor name and elevation text, and associate the floor line with the floor name and elevation text closest to the position;

[0038] (25) Create elevation in Revit: use the API provided method Level newLevel = Level.Create(doc, elev) to create elevation in Revit.

[0039] The case integrates Rhino software and Grasshopper through Rhino.Inside.Revit, realizes the automatic matching of floor line, floor name and elevation text in section drawing and the creation of elevation, solves the problem of fragmentation of section drawing information, and can be directly applied to the creation of multi-storey building elevation, reducing manual error.

[0040] Specifically, in Step 3, the specific process of creating the axis network includes:

[0041] (31) Obtain all rectangular boxes and corresponding figure names: open Rhino in Revit using Rhino.Inside, open the grasshopper battery in Rhino, obtain the size and position of the rectangular box in the layer of the rectangular box, obtain the position of the figure name text in the layer of the figure name, define the position of the figure name in the corresponding rectangular box, match the rectangular box and the figure name according to the positional relationship between the rectangular box and the figure name, and the matched rectangular box carries the figure name information;

[0042] (32) Identify the rectangular box of the building plan: traverse all the rectangular boxes, find the rectangular box containing the plan in the figure name information, that is, obtain the rectangular box of the building plan;

[0043] (33) Obtain the axis and axis number text in the rectangular box of the building plan: find all the axes in the axis layer, and filter out the axes whose start point and end point are located in the rectangular box of the building plan; find all the floor name and elevation text in the axis number text layer, and filter out the axis number text located in the rectangular box of the building plan;

[0044] (34) Data matching: the axis includes horizontal line and vertical line, for the filtered axis and axis number text, match the axis and the axis number, and associate the axis with the axis number text closest to the position;

[0045] (35) Create axis network in Revit: use the API provided method Grid lineGrid = Grid.Create(doc, rvtLine) to create axis in Revit.

[0046] The case adopts the logic of "horizontal line / vertical line classification + axis number closest association" (such as A axis and axis number "A" association), realizes the automatic generation of axis network through "rectangular box matching plan → automatic filtering axis and axis number → API creating axis network after association", and solves the problem of "axis and axis number misplacement" in the prior art axis network generation.

[0047] Specifically, in Step 4, the specific process of checking the size of the door and window includes:

[0048] (41) Obtain all rectangular boxes and corresponding figure names: open Rhino in Revit using Rhino.Inside, open the grasshopper battery in Rhino, obtain the size and position of the rectangular box in the layer of the rectangular box, obtain the position of the figure name text in the layer of the figure name, define the position of the figure name in the corresponding rectangular box, match the rectangular box and the figure name according to the positional relationship between the rectangular box and the figure name, and the matched rectangular box carries the figure name information;

[0049] (42) Identify the door and window detail drawing rectangular frame and the designated building plan drawing rectangular frame: traverse all rectangular frames, find the rectangular frame containing the door and window detail drawing in the drawing name information, that is, obtain the door and window detail drawing rectangular frame; find the rectangular frame containing the designated plan drawing in the drawing name information, that is, obtain the designated building plan drawing rectangular frame;

[0050] (43) Obtain the door and window related size text in the door and window detail drawing rectangular frame: in the layers of door and window lines, floor lines, table lines and door and window related size texts, find all door and window lines, floor lines, table lines and door and window related size texts, filter out the lines whose start point and end point are located in the door and window detail drawing rectangular frame and the door and window related size texts located in the door and window detail drawing rectangular frame; group the connected lines into a door and window, repeatedly update the bounding box of the door and window, and ignore the lines in the bounding box until the peripheral lines of a series of doors and windows are obtained, the door and window geometric dimensions including the opening size and the distance between the door and window and the floor line are determined based on the peripheral lines of the door and window; the texts in the table lines from top to bottom represent the door and window number, the opening size, the door and window position, the door and window form and the glass information, and the text information covered by the table line closest to the position of the door and window peripheral line; check whether the door and window geometric dimensions and the door and window width in the text information are consistent, and prompt the error information;

[0051] (44) Obtain the door and window number and the door and window width in the designated building plan drawing rectangular frame: in the layers of door and window numbers and door and window blocks, find all door and window numbers and door and window blocks, filter out the door and window numbers and door and window blocks located in the designated building plan drawing rectangular frame, associate the door and window block with the door and window number closest to the position of the door and window block, obtain the door and window related size text in the door and window block including the door and window block scale, and calculate the door and window width combined with the door and window block scale;

[0052] (45) Check the designated building plan drawing and the door and window detail drawing; for the door and window with the same door and window number, check whether the door and window width is consistent in the door and window detail drawing and the designated building plan drawing, and prompt the error information; for example, in the door and window detail drawing, the opening size is 1800x2400, and the door and window width in the designated building plan drawing is 1900, so the data in the designated building plan drawing and the door and window detail drawing is inconsistent, and the error information is prompted.

[0053] The case designs a mechanism of "door and window peripheral line extraction→table text association→cross-drawing number matching" (such as "M1" width check in the detail drawing and the plan drawing), realizes "detail drawing geometric dimension and text check→plan drawing and detail drawing width check" bidirectional verification, and can solve the problem of insufficient door and window size precision in the prior art. Specifically, in Step 5, the specific process of creating walls and doors and windows includes:

[0054] (51) Obtain wall positioning lines, wall edge lines and wall related size texts: obtain wall positioning lines, wall edge lines and wall related size texts in the layers of wall positioning lines, wall edge lines and wall related size texts, filter out wall positioning lines and wall edge lines whose start point and end point are located in the rectangular frame, filter out wall related size texts whose position is in the rectangular frame, associate the wall positioning lines with the wall edge lines whose position is closest to the wall positioning lines and parallel to the wall positioning lines, obtain wall thickness by analyzing the position relationship of wall positioning lines and wall edge lines, and calculate the offset value of wall positioning lines and wall center lines;

[0055] (52) Match door and window information and wall information: according to the relationship between the door and window blocks and the wall position in the specified building plan, attribute the door and window to the corresponding wall;

[0056] (53) Create walls and doors and windows in Revit: call API in Revit, first create walls according to wall positioning lines and wall thickness, if there are doors and windows on the wall, create doors and windows on the wall, the distance between the door and window and the floor line is set according to the door and window detail drawing, and the position of the door and window is set according to the specified building plan;

[0057] Create walls using the Wall wall = Wall.Create(doc, curve, wallType.Id, baseLevel.Id, height, btmOffset, false, false) method;

[0058] Create doors and windows using the FamilyInstance archiWin = doc.Create.NewFamilyInstance(locationPoint, fmSymbol, hostWall, wallLevel, Autodesk.Revit.DB.Structure.StructuralType.NonStructural) method.

[0059] The present application designs the logic of "wall thickness calculation (positioning line and edge line offset) → door and window attribution to wall (position proximity)", which solves the problem of door and window attribution confusion in the prior art.

[0060] Specifically, in Step 6, the specific process of creating rooms and analyzing interior and exterior walls includes:

[0061] (61) Create a room: get the wall boundary and room text in the wall boundary and room text layer, find all wall boundaries and room texts, filter out the wall boundaries whose start and end points are located in the rectangular box, and filter out the room texts whose positions are in the rectangular box; in Revit, create a Revit room using the method provided by the API Room room = doc.Create.NewRoom(level, roomLocation);

[0062] (62) Analyze whether the wall is an interior wall or an exterior wall: read the wall information in the room and room boundary in Revit: if a wall is used as a room boundary more than once, the wall is an interior wall; if a wall is used as a boundary once, the wall is an exterior wall.

[0063] The present case uses the "room and wall boundary relationship" to automatically classify interior and exterior walls, which significantly improves efficiency compared to manual labeling in the prior art, and is creative.

[0064] Specifically, in Step 7, the specific process of door and window position checking includes:

[0065] (71) Determine the building facade to which the exterior wall and door and window belong: read the door and window information on the exterior wall and wall in Revit, and determine which building facade the exterior wall and door and window belong to according to the relationship between the wall orientation, wall position and the center position of the plane; for example, a wall is parallel to the X direction, and the positioning Y value of the wall is greater than the center of the plane, then the wall is located in the north building facade;

[0066] (72) Identify the building facade diagram rectangular box: traverse all rectangular boxes to find the rectangular box containing the facade diagram in the figure name information, that is, obtain the building facade diagram rectangular box;

[0067] (73) Obtain the axis and door and window related dimension text in the building facade diagram rectangular box: in the axis and door and window related dimension text layer, find all axis and door and window related dimension texts, filter out the axis whose start and end points are located in the building facade diagram rectangular box, and the door and window related dimension text whose position is in the building facade diagram rectangular box, the door and window related dimension text includes door and window height, door and window width, door and window bottom elevation and door and window position (distance between door and window and positioning axis);

[0068] (74) Check and adjust the door and window position: according to the door and window position, match the door and window in Revit with the door and window in the building facade diagram, first check the consistency of the door and window width, door and window position in Revit and the door and window width, door and window position in the building facade diagram, and then check the consistency of the door and window bottom elevation, door and window width, door and window height in Revit and the door and window bottom elevation, door and window width, door and window height in the building facade diagram, and prompt the error information.

[0069] The application designs the logic of "determining the orientation of the outer wall (such as Y value > the center of the plane as the north facade) -> facade drawing and model multi-parameter checking (width, height, bottom elevation)", and realizes three-dimensional verification through "wall orientation determination -> facade drawing and model height / position checking", which can ensure the accuracy of doors and windows in three-dimensional space (such as the bottom elevation of the north facade window and the facade drawing height of the window). Figure One ).

[0070] Specifically, the method runs in the Rhino.Inside.Revit plug-in of Revit, and data acquisition, cross-checking and model generation are realized by calling Revit API through C# algorithm.

[0071] The application realizes seamless connection of CAD data extraction, algorithm processing and BIM modeling through the environment, solves the problem of cross-software data interaction, and can be directly deployed in actual projects to improve modeling efficiency.

[0072] Advantages: The method for generating a BIM model from a two-dimensional building CAD drawing provided by the application can recognize two-dimensional CAD drawing information of a building and convert it into a BIM model, solving the problems of incomplete recognition of two-dimensional CAD drawing information and inability to cross-check and verify the recognized information in the prior art. Specifically, the advantages of the application over the prior art are as follows: 1. Compared with the prior art which can only recognize a building plan and cannot obtain building floor and elevation information, the application can also read a building section drawing and obtain floor and elevation information of the entire building by using an algorithm; 2. Compared with the prior art which can only recognize door and window size and cannot obtain door and window elevation and position information, the application can obtain a door and window detail drawing and further obtain window bottom distance from floor line distance information by using an algorithm; 3. Compared with the prior art which cannot cross-check door and window size and spatial position, the application can correct text information and door and window geometric information in a door and window detail drawing by using an algorithm; at the same time, the application can obtain door and window plan positioning and door and window width from a building plan, obtain door and window elevation positioning and door and window height from a building elevation drawing, and obtain door and window size and elevation positioning from a door and window detail drawing, so as to cross-check the three kinds of information and achieve the purpose of discovering inconsistent information in the drawing. BRIEF DESCRIPTION OF DRAWINGS

[0073] Figure 1 It is a whole implementation flowchart of the application;

[0074] Figure 2 It is a technical implementation route diagram of the application;

[0075] Figure 3 It is a flowchart for processing CAD drawings;

[0076] Figure 4 Process diagram for creating elevation;

[0077] Figure 5 Process diagram for creating axis network;

[0078] Figure 6 Process diagram for checking door and window size;

[0079] Figure 7 Process diagram for creating wall and door and window;

[0080] Figure 8 Process diagram for creating room and analyzing interior and exterior wall;

[0081] Figure 9 Process diagram for checking door and window position. DETAILED DESCRIPTION

[0082] The present application will be described in detail below with reference to the accompanying drawings and specific embodiments.

[0083] As Figure 1 shown is the overall implementation process of a method for generating a BIM model using a two-dimensional building CAD drawing, as Figure 2 shown, the method runs in the Rhino.Inside.Revit plug-in in Revit, and data acquisition, cross-checking and model generation are realized by calling Revit API through C# algorithm; the following will be described in detail in combination with specific implementation steps.

[0084] Step 1, processing CAD drawings

[0085] The CAD drawings include one building plan for each floor, one building elevation for each orientation of east, south, west and north, several building sections vertically through the entire building, and several door and window detail drawings; a rectangular frame and a unique corresponding drawing name are added to each CAD drawing, and the wall positioning line in each CAD drawing is obtained;

[0086] (11) Adding a rectangular frame and a drawing name to the building plan: a rectangular frame and a corresponding drawing name are added to each building plan to facilitate efficient acquisition of CAD information in the subsequent steps; the rectangular frame needs to completely cover the current building plan, and the drawing name is located in the rectangular frame;

[0087] (12) Obtaining the wall positioning line in the building plan: open a building plan containing a rectangular frame and a corresponding drawing name in the positive CAD; first, use the display baseline function to display the wall positioning line in the building plan; then, use the CAD explosion function to explode the wall in the building plan to obtain the wall positioning line; next, use the save function to save the building plan in t3 format; finally, use the copy function to copy the wall positioning line to the corresponding position of the building plan in t3 format;

[0088] (13) Add a rectangular frame and a figure name to the building elevation view: add a rectangular frame and a corresponding figure name to each building elevation view to efficiently obtain CAD information later, the rectangular frame needs to completely cover the current building elevation view, and the figure name is located in the rectangular frame;

[0089] (14) Add a rectangular frame and a figure name to the door and window detail view: add a rectangular frame and a corresponding figure name to all door and window detail views to efficiently obtain CAD information later, the rectangular frame needs to completely cover all door and window detail views, and the figure name is located in the rectangular frame;

[0090] (15) Add a rectangular frame and a figure name to the building section view: add a rectangular frame and a figure name to all building section views to efficiently obtain CAD information later, the rectangular frame needs to completely cover all building section views, and the figure name is located in the rectangular frame.

[0091] Step 2, create elevation

[0092] Read the floor line, floor name and elevation text in all building section view rectangular frames, match the floor line, floor name and elevation text by analyzing the positional relationship of the floor line, floor name and elevation text in the rectangular frame, identify the semantic expression of the floor line, floor name and elevation text, and create the elevation in Revit according to the identified semantic expression. As shown in Figure 4 The specific execution actions of this step include:

[0093] (21) Get all rectangular frames and corresponding figure names: open Rhino software in Revit using Rhino.Inside, open grasshopper battery in Rhino software, get the size and position of the rectangular frame in the layer of the rectangular frame, get the position of the figure name text in the layer of the figure name, and match the rectangular frame and the figure name according to the position limitation that the figure name is located in the corresponding rectangular frame, and combine the position relationship of the rectangular frame and the figure name, and match the rectangular frame with the figure name information;

[0094] (22) Identify the building section view rectangular frame: traverse all rectangular frames to find the rectangular frame containing the section view in the figure name information, that is, obtain the building section view rectangular frame;

[0095] (23) Get the floor line, floor name and elevation text in the building section view rectangular frame: find all floor lines in the floor line layer, and filter out the floor lines whose start point and end point are located in the building section view rectangular frame; find all floor names and elevation texts in the floor name and elevation text layer, and filter out the floor names and elevation texts located in the building section view rectangular frame;

[0096] (24) Data matching: For the filtered floor lines, floor names and elevation texts, match the floor lines, floor names and elevation texts, and associate the floor names and elevation texts closest to the position of the floor lines;

[0097] (25) Create elevation in Revit: Create an elevation in Revit using the API provided method Level newLevel = Level.Create(doc, elev), and set the elevation name using newLevel.Name = name.

[0098] Step 3, Create axis grid

[0099] Read the axis and axis number texts in all rectangular boxes, get the start and end coordinates of the axis, get the coordinates of the axis number texts, match the axis and axis number texts by analyzing the position relationship of the axis and axis number texts in the rectangular box, recognize the semantic expression of the axis and axis number texts, and create an axis grid in Revit according to the recognized semantic expression. As shown in Figure 5 , this step specifically includes the following execution actions:

[0100] (31) Get all rectangular boxes and corresponding map names: Open Rhino software in Revit using Rhino.Inside, open grasshopper battery in Rhino software, get the size and position of the rectangular box in the layer of the rectangular box, get the position of the map name text in the layer of the map name, and match the rectangular box and the map name according to the position limitation of the map name located in the corresponding rectangular box, and match the rectangular box and the map name according to the position relationship of the rectangular box and the map name. The matched rectangular box carries the map name information;

[0101] (32) Identify architectural plan rectangular box: Traverse all rectangular boxes to find rectangular boxes containing plan maps in the map name information, that is, get the architectural plan rectangular box;

[0102] (33) Get the axis and axis number texts in the architectural plan rectangular box: In the layer of the axis, find all the axes, and filter out the axes whose start and end points are located in the architectural plan rectangular box; In the axis number text layer, find all the floor names and elevation texts, and filter out the axis number texts located in the architectural plan rectangular box;

[0103] (34) Data matching: The axis includes horizontal line and vertical line. For the filtered axis and axis number texts, match the axis and axis number, and associate the axis number text closest to the position of the axis;

[0104] (35) Create axis in Revit: Create axis in Revit using the API provided method Grid lineGrid = Grid.Create(doc, rvtLine), and set the axis name using lineGrid.Name = axisName.

[0105] Step 4, check the size of doors and windows

[0106] Read all door and window detail diagram rectangular boxes, get door and window number and door and window related size text, identify or calculate door and window geometric size including door and window width and door and window distance from floor line, check door and window related size, door and window geometric size and door and window distance from floor line, and prompt error information; read the door and window number and door and window related size text in the specified architectural plan rectangular box, identify or calculate the door and window position and door and window width, and check whether the door and window width is consistent in the door and window detail diagram and the specified architectural plan, and prompt error information. As shown in the following figure, this step specifically includes the following execution actions: Figure 6

[0107] (41) Get all rectangular boxes and corresponding figure names: Open Rhino software in Revit using Rhino.Inside, open grasshopper battery in Rhino software, get the size and position of rectangular box in the layer of rectangular box, get the position of figure name text in the layer of figure name, and match rectangular box and figure name according to the position of figure name in corresponding rectangular box, and match rectangular box and figure name according to the position relationship of rectangular box and figure name, and the matched rectangular box carries figure name information;

[0108] (42) Identify door and window detail diagram rectangular box and specified architectural plan rectangular box: traverse all rectangular boxes, find the rectangular box containing door and window detail diagram in figure name information, that is, get door and window detail diagram rectangular box; find the rectangular box containing specified plan in figure name information, that is, get specified architectural plan rectangular box;

[0109] ​(43) Obtain the door and window related size text in the door and window detail diagram rectangular frame: In the layers of door and window lines, floor lines, table lines and door and window related size text, find all door and window lines, floor lines, table lines and door and window related size text, filter out the lines whose start and end points are located in the door and window detail diagram rectangular frame and the door and window related size text located in the door and window detail diagram rectangular frame; group the connected lines in a door and window, repeatedly update the bounding box of the door and window, and ignore the lines in the bounding box until a series of door and window peripheral lines are obtained, and the door and window geometric size including the opening size and the distance between the door and window and the floor line are determined based on the door and window peripheral lines; the text in the table line from top to bottom represents the door and window number, the opening size, the door and window position, the door and window form and the glass information, and the text information covered by the table line closest to the position of the door and window peripheral line; check whether the door and window geometric size and the door and window width in the text information are consistent, and prompt the error information;

[0110] (44) Obtain the door and window number and door and window width in the specified building plan diagram rectangular frame: In the layers of door and window numbers and door and window blocks, find all door and window numbers and door and window blocks, filter out the door and window numbers and door and window blocks located in the specified building plan diagram rectangular frame, associate the door and window number closest to the position of the door and window block, obtain the door and window related size text in the door and window block including the door and window block proportion, and calculate the door and window width combined with the door and window block proportion;

[0111] (45) Check the specified building plan and the door and window detail diagram; for the door and window with the same door and window number, check whether the door and window width is consistent in the door and window detail diagram and the specified building plan diagram, and prompt the error information; for example, in the door and window detail diagram, the opening size is 1800x2400, and the door and window width in the specified building plan diagram is 1900, so the data in the specified building plan diagram and the door and window detail diagram is inconsistent, and the error information is prompted.

[0112] Step 5, create walls and doors and windows

[0113] Read the wall positioning line, wall edge line and wall related size text in the specified building plan diagram rectangular frame, obtain the wall position and wall thickness by analyzing the position relationship of the wall positioning line and the wall edge line; analyze the door and window related size and the wall related size, and attribute the door and window to the corresponding wall by using the relationship between the door and window position and the wall position; call API in Revit, create walls according to the wall positioning line and the wall thickness, and if there are doors and windows on the wall, create doors and windows on the wall according to the distance between the door and window and the floor line and the position of the door and window on the wall. As shown in Figure 7 the specific execution actions include:

[0114] (51) Obtain wall positioning lines, wall edge lines and wall related size texts: obtain wall positioning lines, wall edge lines and wall related size texts in the layers of wall positioning lines, wall edge lines and wall related size texts, filter out wall positioning lines and wall edge lines whose start point and end point are located in the rectangular frame, filter out wall related size texts whose position is in the rectangular frame, associate the wall positioning lines with the wall edge lines whose position is closest to the wall positioning lines and parallel to the wall positioning lines, obtain wall thickness by analyzing the positional relationship of wall positioning lines and wall edge lines, and calculate the offset value of wall positioning lines and wall center lines;

[0115] (52) Match door and window information and wall information: according to the relationship between door and window blocks and wall positions in the specified building plan, attribute the door and window to the corresponding wall;

[0116] (53) Create wall and door and window in Revit: call API in Revit, first create wall according to wall positioning lines and wall thickness, if there is door and window on the wall, create door and window on the wall, the distance between door and window and floor line is set according to door and window detail drawing, and the position of door and window is set according to the specified building plan;

[0117] Create wall using the Wall wall = Wall.Create(doc, curve, wallType.Id, baseLevel.Id, height, btmOffset, false, false) method;

[0118] Create door and window using the FamilyInstance archiWin = doc.Create.NewFamilyInstance(locationPoint, fmSymbol, hostWall, wallLevel, Autodesk.Revit.DB.Structure.StructuralType.NonStructural) method.

[0119] Step 6, create room and analyze interior and exterior walls

[0120] Read wall edge lines and room texts in the rectangular frame of the building plan, match wall edge lines and room texts by analyzing the positional relationship of wall edge lines and room texts in the rectangular frame, identify the semantic expression of wall edge lines and room texts, and create room in Revit by calling API according to the identified semantic expression; analyze whether the wall is an interior wall or an exterior wall by analyzing the number of times the wall serves as a room boundary. As shown in the following formula: Figure 8 The specific execution actions of this step include the following:

[0121] (61) Create a room: get the wall boundary and room text in the wall boundary and room text layer, find all wall boundaries and room text, filter out the wall boundaries whose start and end points are located in the rectangular box, and filter out the room text whose position is in the rectangular box; in Revit, create a Revit room using the method provided by the API Room room = doc.Create.NewRoom(level, roomLocation);

[0122] (62) Analyze whether the wall is an interior wall or an exterior wall: read the wall information in the room and room boundary in Revit: if a piece of wall is used as a room boundary more than once, the wall is an interior wall; if a piece of wall is used as a boundary once, the wall is an exterior wall.

[0123] Step 7, door and window position checking

[0124] Get the information of doors and windows in Revit and the wall they are in, determine the building facade to which the exterior wall and door and window belong according to the orientation of the wall and the relationship between the position of the wall and the center position of the plane; read the door and window related size text in the rectangular box of the building facade drawing, identify or calculate the door and window position, door and window height, door and window width and door and window bottom elevation; match the door and window position in Revit and the door and window position in the CAD drawing, first check the consistency of the door and window position and the door and window width in Revit and the building facade drawing, then check the consistency of the door and window bottom elevation, door and window width, door and window height in Revit and the door and window detail drawing, building facade drawing, and prompt the error information. As shown in the following table, this step specifically includes the following execution actions: Figure 9

[0125] (71) Determine the building facade to which the exterior wall and door and window belong: read the door and window information on the exterior wall in Revit, and determine the building facade to which the exterior wall and door and window belong according to the orientation of the wall and the relationship between the position of the wall and the center position of the plane; for example, a piece of wall is parallel to X, and the positioning Y value of the wall is greater than the center of the plane, then the wall is located in the north building facade;

[0126] (72) Identify the building facade drawing rectangular box: traverse all the rectangular boxes to find the rectangular box whose drawing name information contains the facade drawing, that is, get the building facade drawing rectangular box;

[0127] (73) Get the axis and door and window related size text in the building facade drawing rectangular box: find all the axis and door and window related size text in the axis and door and window related size text layer, filter out the axis whose start and end points are located in the building facade drawing rectangular box, and filter out the door and window related size text whose position is in the building facade drawing rectangular box; the door and window related size text includes door and window height, door and window width, door and window bottom elevation and door and window position (distance between door and window and positioning axis); ​

[0128] (74) Check and adjust the door and window position: According to the door and window position, match the door and window in Revit with the door and window in the building elevation drawing, first check the consistency of the door and window width, door and window position in Revit and the door and window width, door and window position in the building elevation drawing, and then check the consistency of the door and window bottom elevation, door and window width, door and window height in Revit and the door and window bottom elevation, door and window width, door and window height in the building elevation drawing, and prompt the error information.

[0129] The application will be further described below in combination with a specific embodiment.

[0130] Project background: The method of the case is used to automatically convert the two-dimensional CAD drawing (including 3 layers of plan, east / south / west / north elevation, 2 cross-sections, and 1 door and window detail drawing) of a three-story office building into a Revit BIM model and check.

[0131] Step 1: Process CAD drawing

[0132] 1. Add a rectangular frame and a figure name: Add a rectangular frame (coordinate range X=0-12000mm, Y=0-8000mm) for "1 layer plan" and the figure name "1 layer plan" is placed in the lower left corner of the frame; Similarly, add a rectangular frame (completely cover the drawing) and the corresponding figure name for "2 layer plan", "3 layer plan", "north elevation", "1-1 cross-section", and "door and window detail drawing".

[0133] 2. Extract wall positioning line: Open "1 layer plan" in the positive CAD, use the "display baseline" function to call out the wall positioning line; execute the "explode" command to explode the wall body and extract the positioning line; save the drawing as a t3 format and copy the positioning line to the corresponding position of the t3 file.

[0134] Step 2: Create elevation

[0135] 1. Match the cross-section drawing rectangular frame: In Revit, start Rhino.Inside.Revit, open the Grasshopper battery, and select the frame body containing "cross-section drawing" ( "1-1 cross-section drawing") from the rectangular frame layer.

[0136] 2. Extract and match floor information: Extract the floor line (horizontal line, Y=3000mm corresponds to 1 layer, Y=6000mm corresponds to 2 layers), floor name "1 layer" "2 layer" (located 50mm above the floor line), and elevation text "±0.000" "+3.000m" (located 100mm to the right of the floor line) from the frame.

[0137] 3. Create the elevation: Call the Revit API: `Level newLevel1 = Level.Create(doc, 0)`, set `newLevel1.Name = "1st floor"`. Similarly, create the 2nd floor elevation (+3.000 m) and the 3rd floor elevation (+6.000 m).

[0138] Step 3: Create the grid

[0139] 1. Match the rectangular frame of the plan: Select the rectangular frame with the name "1st floor plan" using Grasshopper.

[0140] 2. Extract and match the axis and axis number: Extract the axis (e.g., A axis: start point (0, 2000), end point (12000, 2000)) and axis number "A" (located 50 mm to the right of the axis end point) within the frame.

[0141] 3. Create the grid: Call the API: `Grid lineGridA = Grid.Create(doc, rvtLineA)`, set `lineGridA.Name = "A"`. Similarly, create the B axis, 1 axis, 2 axis, and other grid lines.

[0142] Step 4: Check the door and window size

[0143] 1. Match the door and window detail drawing with the plan: Select the rectangular frame with the name "door and window detail drawing" and "1st floor plan".

[0144] 2. Extract the door and window detail drawing information: Extract the "M1" peripheral line (width 1800 mm) from the door and window detail drawing rectangular frame, and associate the table text "M1, 1800 x 2400". Check that the geometric dimensions and text are consistent.

[0145] 3. Extract the door and window information from the plan: Extract the "M1" door and window block from the 1st floor plan, and calculate the width of 1800 mm based on the scale (1:100).

[0146] 4. Cross-check: Since "M1" has the same width in the detail drawing and the plan, there is no error prompt. If the width calculated from the plan is 1900 mm, the system will prompt "M1 width inconsistency (detail drawing 1800 mm ≠ plan 1900 mm)".

[0147] Step 5: Create walls and doors and windows

[0148] 1. Extract wall information: Extract the wall positioning line (Y = 4000 mm) and wall edge line (Y = 3900 mm, Y = 4100 mm) from the 1st floor plan, and calculate the wall thickness of 200 mm (4100-3900).

[0149] 2. Match the door and window with the wall: "M1" door and window block is located in the middle of the wall (3000 mm away from A axis), which is associated with the wall.

[0150] 3. Create model elements: call `Wall.Create(doc, curve, wallType.Id, baseLevel.Id, 3000, 0, false, false)` to create a wall; call `NewFamilyInstance(locationPoint, fmSymbol, hostWall,...)` to create "M1" in the middle of the wall (900 mm away from the floor line).

[0151] Step 6: Create rooms and analyze interior and exterior walls

[0152] 1. Create a room: extract the "office" text from the 1st floor plan (position (6000, 4000)), call `doc.Create.NewRoom(level, roomLocation)` to create a room.

[0153] 2. Determine interior and exterior walls: wall W1 serves as the boundary of "office" and "corridor" (times = 2), which is determined as an interior wall; wall W2 only serves as the boundary of "office" (times = 1), which is determined as an exterior wall.

[0154] Step 7: Door and window position check

[0155] 1. Determine the facade attribution: exterior wall W2 is parallel to X axis, Y = 8000 mm (> plan center Y = 4000 mm), which is determined as the north facade, and "M1" on it belongs to the north facade.

[0156] 2. Extract facade drawing information: extract "M1" dimensions from the north facade drawing rectangle: width 1800 mm, height 2400 mm, bottom elevation +0.900 m, distance from 1 axis 5000 mm.

[0157] 3. Check position and size: "M1" in Revit has a width of 1800 mm and is 5000 mm away from the 1 axis, which matches the facade Figure One ; the bottom elevation is +0.900 m and the height is 2400 mm, which matches the detailed drawing and facade Figure One , with no error prompt.

[0158] Implementation results: through the above steps, the two-dimensional CAD drawing is successfully converted into a BIM model containing elevation, axis network, wall, door and window, and room, and the model accuracy is ensured through multiple rounds of cross-checking. Compared with the prior art, the modeling efficiency and accuracy have been significantly improved.

[0159] The above shows and describes the basic principles, main features and advantages of the present application. Those skilled in the art should understand that the above embodiments do not limit the present application in any form, and any technical solutions obtained by equivalent replacement or equivalent transformation fall within the protection scope of the present application.

Claims

1. A method for generating a BIM model from a two-dimensional architectural CAD drawing, characterized by: Comprising the following steps: Step1, processing CAD drawings: CAD drawings include one building plan per layer, one building elevation per orientation, several building sections vertically, and several door and window details. Add a rectangular frame and a unique corresponding figure name to each CAD drawing, and obtain the wall positioning line in each CAD drawing. The specific process of processing CAD drawings is as follows: (11) Add a rectangular frame and a figure name to the building plan: add a rectangular frame and a corresponding figure name to each building plan, respectively. The rectangular frame needs to completely cover the current building plan, and the figure name is located in the rectangular frame. (12) Obtain the wall positioning line in the building plan: open a building plan containing a rectangular frame and a corresponding figure name in the positive CAD. First, use the display baseline function to display the wall positioning line in the building plan. Then, use the CAD explosion function to explode the wall in the building plan to obtain the wall positioning line. Next, use the save function to save the building plan as a t3 format. Finally, use the copy function to copy the wall positioning line to the corresponding position of the building plan in t3 format. (13) Add a rectangular frame and a figure name to the building elevation: add a rectangular frame and a corresponding figure name to each building elevation, respectively. The rectangular frame needs to completely cover the current building elevation, and the figure name is located in the rectangular frame. (14) Add a rectangular frame and a figure name to the door and window details: add a rectangular frame and a corresponding figure name to all door and window details. The rectangular frame needs to completely cover all door and window details, and the figure name is located in the rectangular frame. (15) Add a rectangular frame and a figure name to the building section: add a rectangular frame and a figure name to all building sections. The rectangular frame needs to completely cover all building sections, and the figure name is located in the rectangular frame. Step2, create elevation: read the floor line, floor name and elevation text in the rectangular frame of all building sections. Match the floor line, floor name and elevation text by analyzing their positional relationship in the corresponding rectangular frame. Identify the semantic expression of the floor line, floor name and elevation text. Create elevation in Revit by calling API according to the identified semantic expression. Step3, create axis network: read the axis and axis number text in all rectangular frames. Obtain the start and end coordinates of the axis, and the coordinates of the axis number text. Match the axis and axis number text by analyzing their positional relationship in the corresponding rectangular frame. Identify the semantic expression of the axis and axis number text. Create axis network in Revit by calling API according to the identified semantic expression. Step4, check door and window size: read all door and window detail rectangular frames, obtain door and window number and door and window related size text, identify or calculate door and window geometric size including door and window width and door and window distance from floor line, check door and window related size, door and window geometric size and door and window distance from floor line, and prompt the error information; read the door and window number and door and window related size text in the specified building plan rectangular frame, identify or calculate the door and window position and door and window width, and check whether the door and window width in the door and window detail and the specified building plan is consistent, and prompt the error information. Step5, creating walls and doors and windows: reading the wall positioning lines, wall edge lines and wall related dimension texts in the specified building plan rectangular frame, obtaining the wall position and wall thickness by analyzing the position relationship of the wall positioning lines and the wall edge lines; analyzing the door and window related dimensions and the wall related dimensions, using the relationship between the door and window position and the wall position, attributing the door and window to the corresponding wall; calling the API in Revit, creating walls according to the wall positioning lines and the wall thickness, if there are doors and windows on the wall, creating doors and windows on the wall according to the distance between the door and window bottom and the floor line and the door and window position; Step6, creating rooms and analyzing interior and exterior walls: reading the wall edge lines and room texts in the building plan rectangular frame, matching the wall edge lines and the room texts by analyzing the position relationship of the wall edge lines and the room texts in the rectangular frame, identifying the semantic expression of the wall edge lines and the room texts, creating rooms in Revit according to the identified semantic expression; analyzing whether the wall is an interior wall or an exterior wall by analyzing the number of times the wall serves as a room boundary; Step7, door and window position checking: obtaining the information of the doors and windows and the wall in Revit, determining the building facade to which the exterior wall and the door and window belong according to the wall orientation and the relationship between the wall position and the center position of the plan; reading the door and window related dimension texts in the building elevation rectangular frame, identifying or calculating the door and window position, the door and window height, the door and window width and the door and window bottom elevation; matching the door and window position in Revit and the door and window position in the CAD drawing, checking the consistency of the door and window position and the door and window width in Revit and the building elevation first, then checking the consistency of the door and window bottom elevation, the door and window width and the door and window height in Revit and the door and window detail drawing and the building elevation, prompting the error information.

2. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: In Step2, the specific process of creating the elevation is as follows: (21) obtaining all rectangular frames and corresponding drawing names: opening Rhino in Revit in Revit, opening the grasshopper battery in Rhino, obtaining the size and position of the rectangular frame in the layer of the rectangular frame, obtaining the position of the drawing name text in the layer of the drawing name, matching the rectangular frame and the drawing name according to the position limitation of the drawing name in the corresponding rectangular frame, and combining the position relationship of the rectangular frame and the drawing name, the matched rectangular frame carries the drawing name information; (22) identifying the building section rectangular frame: traversing all rectangular frames, finding the rectangular frame containing the section in the drawing name information, that is, obtaining the building section rectangular frame; (23) obtaining the floor line, floor name and elevation text in the building section rectangular frame: in the layer of the floor line, finding all the floor lines, and screening out the floor lines whose start point and end point are located in the building section rectangular frame; in the layer of the floor name and the elevation text, find all the floor names and the elevation texts, and screen out the floor names and the elevation texts whose positions are in the building section rectangular frame; (24) data matching: for the screened floor lines, floor names and elevation texts, matching the floor lines, floor names and elevation texts, and associating the floor names and elevation texts closest to the position of the floor lines; (25) Create Level in Revit: Create Level in Revit using the API provided method Level lineGrid = Grid.Create(doc, rvtLine).

3. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: The specific process of creating the grid in Step 3 includes: (31) Get all rectangular boxes and corresponding figure names: Open Rhino in Revit using Rhino.Inside, open the grasshopper battery in Rhino, get the size and position of the rectangular box in the layer of the rectangular box, get the position of the figure name text in the layer of the figure name, and according to the position of the figure name in the corresponding rectangular box, combine the position relationship of the rectangular box and the figure name, match the rectangular box and the figure name, and the matched rectangular box carries the figure name information; (32) Identify the rectangular box of the architectural plan: traverse all rectangular boxes, find the rectangular box containing the plan in the figure name information, that is, get the rectangular box of the architectural plan; (33) Get the axis and axis number text in the rectangular box of the architectural plan: find all axes in the axis layer, and filter out the axes whose start and end points are located in the rectangular box of the architectural plan; find all floor names and elevation texts in the axis number text layer, and filter out the axis number texts located in the rectangular box of the architectural plan; (34) Data matching: match the axis and the axis number for the filtered axis and axis number text, and associate the axis with the axis number text closest to its position; (35) Create grid in Revit: Create axis in Revit using the API provided method Grid lineGrid = Grid.Create(doc, rvtLine).

4. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: The specific process of checking the size of the door and window in Step 4 includes: (41) Get all rectangular boxes and corresponding figure names: Open Rhino in Revit using Rhino.Inside, open the grasshopper battery in Rhino, get the size and position of the rectangular box in the layer of the rectangular box, get the position of the figure name text in the layer of the figure name, and according to the position of the figure name in the corresponding rectangular box, combine the position relationship of the rectangular box and the figure name, match the rectangular box and the figure name, and the matched rectangular box carries the figure name information; (42) Identify the rectangular box of the door and window detail drawing and the specified architectural plan: traverse all rectangular boxes, find the rectangular box containing the door and window detail drawing in the figure name information, that is, get the rectangular box of the door and window detail drawing; find the rectangular box containing the specified plan in the figure name information, that is, get the rectangular box of the specified architectural plan; (43) Obtain the door and window related size text in the door and window detail diagram rectangular frame: In the layers of door and window lines, floor lines, table lines and door and window related size text, find all door and window lines, floor lines, table lines and door and window related size text, filter out the lines whose start point and end point are located in the door and window detail diagram rectangular frame and the door and window related size text located in the door and window detail diagram rectangular frame; group the connected lines in a door and window, repeatedly update the bounding box of the door and window, and ignore the lines in the bounding box until a series of door and window peripheral lines are obtained, determine the door and window geometric size including the opening size and the distance between the door and window and the floor line based on the door and window peripheral lines; the text in the table line from top to bottom represents the door and window number, opening size, door and window position, door and window form and glass information, and the text information covered by the table line closest to the position of the door and window peripheral line; check whether the door and window geometric size and the door and window width in the text information are consistent, and prompt the error information; (44) Obtain the door and window number and door and window width in the specified building plan diagram rectangular frame: In the layers of door and window numbers and door and window blocks, find all door and window numbers and door and window blocks, filter out the door and window numbers and door and window blocks located in the specified building plan diagram rectangular frame, associate the door and window number closest to the position of the door and window block, obtain the door and window related size text in the door and window block including the door and window block proportion, and calculate the door and window width combined with the door and window block proportion; (45) Check the specified building plan and door and window detail diagram; for the door and window with the same door and window number, check whether the door and window width in the door and window detail diagram and the specified building plan is consistent, and prompt the error information.

5. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: In Step 5, the specific process of creating walls and doors and windows includes: (51) Obtain wall positioning lines, wall edge lines and wall related size text: obtain wall positioning lines, wall edge lines and wall related size text in the layers of wall positioning lines, wall edge lines and wall related size text, filter out wall positioning lines and wall edge lines whose start point and end point are located in the rectangular frame, filter out wall related size text located in the rectangular frame, associate the wall edge line closest to the position of the wall positioning line and parallel to it, obtain the wall thickness by analyzing the positional relationship of the wall positioning line and the wall edge line, and calculate the offset value of the wall positioning line and the wall center line; (52) Match door and window information and wall information: according to the relationship between the door and window block and the wall position in the specified building plan diagram, attribute the door and window to the corresponding wall; (53) Create walls and doors and windows in Revit: call API in Revit, first create walls according to wall positioning lines and wall thickness, if there are doors and windows on the wall, create doors and windows on the wall, set the distance between the door and window and the floor line according to the door and window detail diagram, and set the door and window position according to the specified building plan diagram; Create walls using the Wall wall = Wall.Create(doc, curve, wallType.Id, baseLevel.Id, height, btmOffset, false, false) method. Create the door and window using the Familylnstance archiWin = doc.Create.NewFamilylnstance(locationPoint, fmSymbol, hostWall, wallLevel, Autodesk.Revit.DB.Structure.StructuralType.NonStructural) method.

6. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: In Step 6, the specific process of creating a room and analyzing the interior and exterior walls includes: (61) Create a room: Obtain the wall lines and room text in the wall line and room text layers, find all wall lines and room text, filter out wall lines with both start and end points in the rectangular frame, and filter out room text located in the rectangular frame. In Revit, create a Revit room using the Room room = doc.Create.NewRoom(level, roomLocation) method provided by the API; (62) Analyze whether the wall is an interior wall or an exterior wall: Read the wall information in the room and room boundary in Revit. If a piece of wall serves as a room boundary more than once, it is an interior wall. If a piece of wall serves as a boundary once, it is an exterior wall.

7. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: In Step 7, the specific process of door and window position checking includes: (71) Determine the building facade to which the exterior wall and door and window belong: Read the door and window information on the exterior wall and wall in Revit, and determine the building facade to which the exterior wall and door and window belong according to the relationship between the wall orientation, wall position, and planar center position; (72) Identify the building facade diagram rectangular frame: Traverse all rectangular frames to find the rectangular frame containing the facade diagram in the diagram name information, i.e., obtain the building facade diagram rectangular frame; (73) Obtain the axis and door and window related dimension text in the building facade diagram rectangular frame: In the axis and door and window related dimension text layer, find all axis and door and window related dimension text, filter out the axis with both start and end points in the building facade diagram rectangular frame, and filter out the door and window related dimension text located in the building facade diagram rectangular frame. Door and window related dimension text includes door and window height, door and window width, door and window bottom elevation, and door and window position; (74) Check and adjust the door and window position: According to the door and window position, pair the door and window in Revit with the door and window in the building facade diagram. First, check the consistency of the door and window width, door and window position in Revit with the door and window width, door and window position in the building facade diagram, and then check the consistency of the door and window bottom elevation, door and window width, door and window height in Revit with the door and window bottom elevation, door and window width, door and window height in the building facade diagram. Prompt the user about the error information.

8. The method for generating a BIM model using two-dimensional architectural CAD drawings according to claim 1, wherein: The method runs in the Rhino.Inside.Revit plugin in Revit, and Revit API is called through C# algorithm to realize data acquisition, cross-checking, and model generation.

Citation Information

Patent Citations

  • Vertical graph identification method for converting architectural drawing into three-dimensional BIM model

    CN109993827A