A BIM data lightweight storage method suitable for operation and maintenance management
Patent Information
- Application Number
- CN202210698728.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-06-20
- Publication Date
- 2026-10-09
- Estimated Expiration
- 2042-06-20
AI Technical Summary
Revit提供的BIM模型虽然具有一定的数据结构,但真正应用到智慧楼宇这样的运维平台,需要平台后端进行大量的人为梳理以及前端显示效果的一系列定制代码,这无疑增加了大量额外的工作量
[0044]This storage method, while fully preserving the original BIM information such as geometry, materials, textures, maps, and attributes, reduces memory consumption, improves 3D model loading capabilities, and ensures data security by employing measures such as geometry reuse, model merging, Draco compression algorithm, and file encryption. Furthermore, this invention implements a tree-like structure from "floor—room—building equipment" and from "mechanical and electrical category—mechanical and electrical system—mechanical and electrical equipment," which is simple, effective, and fast, providing strong support for web rendering and the business implementation of smart building platforms. While ensuring that the BIM 3D model can be correctly rendered on the building management platform, this invention utilizes a simple BIM model structure to achieve rapid loading and effective control of the model on the web, establishing a bridge between model data and business connections in smart buildings.
Smart Images

Figure CN115359208B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of BIM technology, and in particular to a lightweight BIM data storage method suitable for operation and maintenance management. Background Technology
[0002] BIM is a foundational data model that encompasses all information about the entire building. While the BIM model provided by Revit has a certain data structure, its actual application in an operation and maintenance platform like a smart building requires extensive manual backend organization and a series of customized codes for the frontend display, which undoubtedly adds a significant amount of extra workload. Summary of the Invention
[0003] To address the aforementioned technical problems, this invention provides a lightweight BIM data storage method suitable for operation and maintenance management, achieving lightweight storage of BIM data.
[0004] The first aspect provides a lightweight BIM data storage method suitable for operation and maintenance management, including:
[0005] Obtain the Revit file containing the data to be stored, and create a TjsBuilding object based on the Revit file;
[0006] Read the mesh information of all 3D elements in the Revit file, create a TjsMesh object based on the mesh information, and generate a TjsMesh list for the TjsBuilding object based on the TjsMesh object;
[0007] Parse the architectural and structural 3D primitives in the Revit file and create TjsPlan, TjsRoom and TjsFurniture lists;
[0008] Parse the electromechanical 3D primitives in the Revit file and create a list of TjsMepType, a list of TjsMepSystem, and a list of TjsEquipment.
[0009] The TjsMesh objects corresponding to the lists of 3D primitives TjsPlan, TjsRoom, TjsFurniture, TjsMepType, TjsMepSystem, and TjsEquipment are read by the ID of the 3D primitive Element, and stored as a preset transmission format for web rendering.
[0010] The TjsBuilding object is stored in a structured manner.
[0011] In one possible implementation of the first aspect, obtaining a Revit file containing the data to be stored and creating a TjsBuilding object based on the Revit file specifically includes:
[0012] Obtain the Revit file containing the data to be stored, recursively traverse all associated Revit files, read the project information from the Revit file, and create a TjsBuilding object based on the project information.
[0013] In one possible implementation of the first aspect, the mesh information of all 3D primitives in the Revit file is read, a TjsMesh object is created based on the mesh information, and a TjsMesh list of the TjsBuilding object is generated based on the TjsMesh object, specifically including:
[0014] Use the IExportContext interface to traverse and read the spatial location of all 3D primitives in the Revit file, as well as the lightweight geometry, material, texture, and mapping information;
[0015] The geometry, material, texture, and mapping information of each 3D primitive are merged to generate a complete polygonal mesh TjsMesh object, with each 3D primitive mapped one-to-one to a TjsMesh object;
[0016] Generate a list of TjsMesh objects based on the TjsMesh objects corresponding to all types of 3D primitives.
[0017] In one possible implementation of the first aspect, the architectural and structural 3D primitives of the Revit file are parsed to create a TjsPlan list, specifically including:
[0018] Iterate through all floor elevations of the architectural and structural 3D elements in the Revit file, merge the elevations of the same floor from different disciplines, and create a TjsPlan object;
[0019] Traverse the 3D primitives outside the room boundary at each floor level, and store the 3D primitives outside the room boundary in the 3D primitive list of the TjsPlan object. Only one TjsPlan object with the same elevation value is recorded.
[0020] Remove TjsPlan objects that do not contain 3D primitives, and record the remaining TjsPlan objects in the TjsPlan list of the TjsBuilding object.
[0021] In one possible implementation of the first aspect, creating the TjsRoom list specifically includes:
[0022] Iterate through all rooms at each of the stated floor levels, read the attribute information of each room, and create a TjsRoom object;
[0023] Obtain the 3D primitives (excluding building equipment) in each room according to the room boundary, and store the 3D primitives (excluding building equipment) in the 3D primitive list of the TjsRoom object. Only one copy of the TjsRoom object with the same ID is recorded.
[0024] Remove TjsRoom objects with a bounding box size of 0, and record the remaining TjsRoom objects in the TjsRoom list of each TjsPlan object.
[0025] In one possible implementation of the first aspect, creating the TjsFurniture list specifically includes:
[0026] Iterate through the 3D primitives of building equipment in each room and read the attribute information of each 3D primitive of building equipment to generate a TjsFurniture object;
[0027] Store the 3D primitives of the building equipment into the 3D primitive list of the TjsFurniture object;
[0028] Store each created TjsFurniture object in the TjsFurniture list of its respective TjsRoom object.
[0029] In one possible implementation of the first aspect, parsing the MEP (Mechanical, Electrical, and Plumbing) 3D primitives of the Revit file and creating the TjsMepType list specifically includes:
[0030] Iterate through all MEP system categories in the Revit file and create a TjsMepType object based on the different MEP system categories;
[0031] Iterate through the 3D primitives of each electromechanical system category that do not belong to the electromechanical system, and store the 3D primitives of each electromechanical system category into the 3D primitive list of the TjsMepType object;
[0032] All created TjsMepType objects are stored in the TjsMepType list of the TjsBuilding object.
[0033] In one possible implementation of the first aspect, creating the TjsMepSystem list specifically includes:
[0034] Iterate through all electromechanical systems in each electromechanical system category, read the attribute information of each electromechanical system, and generate a TjsMepSystem object;
[0035] Traverse the three-dimensional primitives under each electromechanical system except for the electromechanical equipment class, and store the three-dimensional primitives other than the electromechanical equipment class in the three-dimensional primitive list of the TjsMepSystem object. Only one copy of the TjsMepSystem object with the same ID is recorded.
[0036] All created TjsMepSystem objects are recorded in the TjsMepSystem list of each TjsMepType object.
[0037] In one possible implementation of the first aspect, creating the TjsEquipment list specifically includes:
[0038] Read the connection relationship between the pipes and electromechanical equipment of the electromechanical system, obtain the three-dimensional primitives of all electromechanical equipment classes connected to each electromechanical system through Domain information, read the attribute information of each three-dimensional primitive of electromechanical equipment class, and create a TjsEquipment object;
[0039] Store the 3D primitives of the electromechanical equipment class into the 3D primitive list of the TjsEquipment object;
[0040] All created TjsEquipment objects are stored in the TjsEquipment list of the TjsMepSystem object.
[0041] In one possible implementation of the first aspect, the TjsBuilding object is stored in a structured manner, specifically including:
[0042] The tree structure of the TjsBuilding object from TjsPlan to TjsRoom to TjsFurniture and the tree structure from TjsMepType to TjsMepSystem to TjsEquipment are stored using JSON serialization, and each node of the tree structure is the same template as the list of three-dimensional primitives and the list of child nodes.
[0043] All generated files are compressed and encrypted before storage.
[0044] This storage method, while fully preserving the original BIM information such as geometry, materials, textures, maps, and attributes, reduces memory consumption, improves 3D model loading capabilities, and ensures data security by employing measures such as geometry reuse, model merging, Draco compression algorithm, and file encryption. Furthermore, this invention implements a tree-like structure from "floor—room—building equipment" and from "mechanical and electrical category—mechanical and electrical system—mechanical and electrical equipment," which is simple, effective, and fast, providing strong support for web rendering and the business implementation of smart building platforms. While ensuring that the BIM 3D model can be correctly rendered on the building management platform, this invention utilizes a simple BIM model structure to achieve rapid loading and effective control of the model on the web, establishing a bridge between model data and business connections in smart buildings.
[0045] The advantages of additional aspects of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. Attached Figure Description
[0046] Figure 1 A flowchart illustrating an embodiment of the storage method of the present invention;
[0047] Figure 2 A schematic diagram of a data storage structure provided for an embodiment of the storage method of the present invention;
[0048] Figure 3 This is a schematic diagram of the smart building model of the present invention.
[0049] Figure 4 This is a rendering diagram of a two-story building model of the smart building model of the present invention;
[0050] Figure 5 This is a schematic diagram of the room model rendering of the smart building model of the present invention;
[0051] Figure 6 This is a schematic diagram of the electromechanical three-dimensional primitives of the smart building model of the present invention. Detailed Implementation
[0052] The principles and features of the present invention are described below with reference to the accompanying drawings. The embodiments described are only for explaining the present invention and are not intended to limit the scope of the present invention.
[0053] like Figure 1 The diagram shown is a flowchart illustrating an embodiment of the storage method of the present invention. This lightweight BIM data storage method, suitable for operation and maintenance management, includes:
[0054] S1, obtain the Revit file containing the data to be stored, and create a TjsBuilding object based on the Revit file;
[0055] It should be understood that Revit building models can be divided into multiple disciplines such as architecture, structure, MEP, etc., each modeled separately, and then integrated into a single assembly file using a linking method.
[0056] S2: Read the mesh information of all 3D elements in the Revit file, create TjsMesh objects based on the mesh information, and generate a list of TjsMesh objects for TjsBuilding objects based on the TjsMesh objects;
[0057] It should be noted that mesh information can include the geometry, material, texture, and mapping information of 3D primitives.
[0058] S3 parses the architectural and structural 3D primitives in Revit files and creates TjsPlan, TjsRoom and TjsFurniture lists;
[0059] It should be noted that TjsPlan, TjsRoom, and TjsFurniture correspond to the floor, room, and building equipment family instances in the Revit file, respectively.
[0060] S4, parse the 3D mechanical and electrical elements of the Revit file, and create the TjsMepType list, TjsMepSystem list and TjsEquipment list;
[0061] It should be noted that TjsMepType, TjsMepSystem, and TjsEquipment correspond to the MEP category, MEP system, and MEP equipment family instances in the Revit file, respectively.
[0062] By parsing and storing architectural and structural 3D primitives separately from electromechanical 3D primitives, different primitives can be selected for rendering during loading based on the loading level. For example, when displaying the entire building, only architectural and structural 3D primitives can be loaded, while when displaying specific floors within the building, electromechanical 3D primitives can be loaded, thereby improving loading speed.
[0063] S5: Read the TjsMesh objects corresponding to the three-dimensional primitive lists of TjsPlan, TjsRoom, TjsFurniture, TjsMepType, TjsMepSystem and TjsEquipment respectively by the ID of the three-dimensional primitive Element, and store them as a preset transmission format for web rendering.
[0064] It should be noted that the 3D primitives of each level of the TjsBuilding object, including the 3D primitive lists of TjsPlan, TjsRoom, TjsMepType, TjsMepSystem, and TjsEquipment, can be read by the ID of the 3D primitive Element and stored in a common transmission format for rendering on the web, such as glTF format. Moreover, the 3D primitive lists of each level are merged and stored into a single glTF.
[0065] When storing TjsMesh information, each glTF file is merged according to the same material, including textures and maps. At the same time, when storing geometric data, the Draco algorithm natively supported by the glTF format is used to achieve high compression of the data stream, which helps with data transmission on the web.
[0066] S6 stores the TjsBuilding object in a structured manner.
[0067] like Figure 2 The diagram shown is a data storage structure diagram provided by an embodiment of the storage method of the present invention. Tree structures “TjsPlan—TjsRoom—TjsEquipment” and “TjsMepType—TjsMepSystem—TjsEquipment” can be established respectively.
[0068] More specific examples are given below with reference to the accompanying drawings. Figure 3 This is a rendering diagram of the electromechanical model of the smart building model of the present invention. If the entire smart building model is loaded simultaneously, it contains more than 10,000 3D primitives, which puts a lot of pressure on the front-end rendering. However, under the tree structure of the present invention, the 3D models of each level are merged, and each only exports one glTF file, reducing the number of models to less than 500. Furthermore, Draco compression is used, which greatly improves the loading capacity.
[0069] Figure 4 This is a rendering diagram of the two-story building model of the smart building model of the present invention. When loading on the web, the two-story building model can be quickly located.
[0070] Figure 5 This is a rendering diagram of a room model in the smart building model of the present invention, which accurately locates the building equipment in the room.
[0071] Figure 6This is a rendering diagram of the electromechanical model of the smart building model of the present invention. Only the model of the duct system is loaded, which improves the loading capacity. The storage method provided in this embodiment, while fully preserving the original BIM information such as geometry, materials, textures, maps, and attributes, reduces memory consumption, improves the loading capacity of the 3D model, and ensures data security by using geometric reuse, model merging, Draco compression algorithm, and file encryption. In addition, the present invention also realizes a tree structure from "floor - room - building equipment" and from "electromechanical category - electromechanical system - electromechanical equipment", which is simple, effective, and fast, providing strong support for web rendering and the business implementation of the smart building platform. While ensuring that the BIM 3D model can be correctly rendered on the building management platform, the present invention uses a simple BIM model structure to realize the rapid loading and effective control of the model on the web, establishing a bridge between the model data and business association of smart buildings.
[0072] Optionally, in some possible implementations, a Revit file containing the data to be stored is obtained, and a TjsBuilding object is created based on the Revit file, specifically including:
[0073] Retrieves the Revit file containing the data to be stored, recursively traverses all associated Revit files, reads the project information from the Revit file, and creates a TjsBuilding object based on the project information.
[0074] It's important to note that, as a multi-disciplinary collaborative BIM design software, Revit building models are often created separately for different disciplines such as architecture, structure, and MEP, and then integrated into a single assembly file using links. Generally, linked files contain nested other linked files, so a recursive approach can be used to traverse all associated RVT files.
[0075] Optionally, information related to the current RVT file can be read, including the current project document, 3D view, project base point, file name, and camera information. For example, the file name can be used as the Name of TjsBuilding, and the camera information can be used as the default camera position and viewpoint of the TjsBuilding scene.
[0076] Optionally, in some possible implementations, the mesh information of all 3D primitives in the Revit file is read, a TjsMesh object is created based on the mesh information, and a TjsMesh list of TjsBuilding objects is generated based on the TjsMesh object, specifically including:
[0077] Use the IExportContext interface to traverse and read the spatial location of all 3D primitives in the Revit file, as well as their lightweight geometry, material, texture, and mapping information;
[0078] For example, the IExportContext interface can be used to iterate through and obtain the spatial position of all 3D primitives, as well as their lightweight geometry, material, texture, and mapping information. Spatial position information includes scaling, rotation, and translation; geometric information includes 3D point coordinates, normal coordinates, UV coordinates, and indices; material information includes color, transparency, reflection, and gloss; and texture and mapping information includes image path, scale, offset, and angle.
[0079] The geometry, material, texture, and mapping information of each 3D primitive are merged to generate a complete polygonal mesh TjsMesh object, with each 3D primitive mapped one-to-one to a TjsMesh object;
[0080] For example, the geometry, material, texture, and mapping information of each 3D primitive are merged to generate a complete polygon mesh object TjsMesh. A one-to-one mapping between the 3D primitive and the TjsMesh is achieved through the ID of the Element of the 3D primitive.
[0081] A list of TjsMesh objects is generated based on the TjsMesh objects corresponding to all types of 3D primitives, and only one copy of the same TjsMesh object is stored.
[0082] It should be noted that only one TjsMesh data is recorded for the same type of 3D primitives, generating a unique TjsMesh list for TjsBuilding, which greatly reduces the storage amount of 3D model data.
[0083] Optionally, in some possible implementations, the architectural and structural 3D primitives of the Revit file are parsed to create a TjsPlan list, specifically including:
[0084] Iterate through all floor elevations of the architectural and structural 3D elements in the Revit file, merge the elevations of the same floor from different disciplines, and create a TjsPlan object;
[0085] For example, in a Revit file, the building elevation and structural elevation of the same floor are different. All such different elevations but the same floor are uniformly modified to the same elevation; read the ID, name, level value and other information of each Revit elevation and create a TjsPlan object.
[0086] Iterate through the 3D elements outside the room boundary at each floor level, i.e., the 3D elements that do not belong to the room. Store the 3D elements that do not belong to the room in the 3D element list of the TjsPlan object. The TjsPlan object with the same elevation value only records one copy.
[0087] For example, you can iterate through the 3D elements that do not belong to a room at each floor level in Revit, including walls, beams, columns, windows, doors, roofs, stairs, etc., and store them uniformly in the 3D element list of this TjsPlan.
[0088] Remove TjsPlan objects that do not contain 3D primitives, and record the remaining TjsPlan objects in the TjsPlan list of the TjsBuilding object.
[0089] It should be understood that only one TjsPlan with the same elevation value is recorded. TjsPlans that do not involve 3D primitives are removed and uniformly recorded in the TjsPlan list of TjsBuilding to avoid writing duplicate and invalid data.
[0090] Optionally, in some possible implementations, creating the TjsRoom list specifically includes:
[0091] Iterate through all rooms at each floor level, read the attribute information of each room, and create a TjsRoom object;
[0092] For example, you can iterate through all rooms at each floor level in Revit and read the ID, name, number, bounding box, and elevation of each room. Simultaneously, you can use room boundary elements to identify and fill in missing room divisions and room labels, creating a TjsRoom object for each room.
[0093] Specify the 3D primitives (excluding building equipment) in each room according to the room boundary, and store the 3D primitives (excluding building equipment) in the 3D primitive list of the TjsRoom object. Only one copy of the TjsRoom object with the same ID is recorded.
[0094] For example, floor slabs, ceilings, etc., belonging to the room boundaries can be classified as 3D elements other than building equipment and stored in the 3D element list of the TjsRoom.
[0095] Remove TjsRoom objects with a bounding box size of 0, and record the remaining TjsRoom objects in the TjsRoom list of each TjsPlan object.
[0096] It should be understood that only one copy of a TjsRoom with the same ID is recorded. TjsRooms with a bounding box size of 0 are removed and uniformly recorded in the TjsRoom list of each TjsPlan, which can avoid writing duplicate and invalid data.
[0097] Optionally, in some possible implementations, creating the TjsFurniture list specifically includes:
[0098] Iterate through the 3D primitives of building equipment in each room, read the attribute information of each 3D primitive, and generate a TjsFurniture object;
[0099] For example, you can iterate through all the 3D building equipment elements in each room of Revit and read the ID, name, type, bounding box, elevation and attributes of each 3D element to generate a TjsFurniture object.
[0100] Store the 3D primitives of building equipment into the 3D primitive list of the TjsFurniture object;
[0101] It should be understood that there is a one-to-one correspondence between the TjsEquipment object and the 3D primitives of the building equipment class in the room, which are also known as family instance objects. The 3D primitives of the equipment class in the room can be directly stored in the 3D primitive list of the TjsEquipment.
[0102] Store each created TjsFurniture object in the TjsFurniture list of its respective TjsRoom object.
[0103] Optionally, in some possible implementations, traversing the MEP system categories in the Revit file to create a TjsMepType list specifically includes:
[0104] Iterate through the MEP system categories in the Revit file and create a TjsMepType object based on the different MEP system categories;
[0105] It should be understood that Revit's MEP (Mechanical, Electrical, Plumbing) system categories are roughly divided into three categories: mechanical, plumbing, and electrical, and three types of TjsMepType objects can be created.
[0106] Iterate through the 3D elements of each MEP system category in the Revit file that do not belong to the MEP system, and store the 3D elements that do not belong to the MEP system into the 3D element list of the TjsMepType object.
[0107] For example, you can iterate through the 3D elements that do not belong to the MEP system under each MEP system category in Revit, such as cable trays and pre-supported brackets, and store them uniformly in the 3D element list of this TjsMepType.
[0108] All created TjsMepType objects are stored in the TjsMepType list of the TjsBuilding object.
[0109] Optionally, in some possible implementations, creating the TjsMepSystem list specifically includes:
[0110] Iterate through all MEP systems in each MEP system category of the Revit file, read the attribute information of each MEP system, and generate a TjsMepSystem object;
[0111] For example, you can iterate through all MEP systems under each MEP system category in Revit, read the ID, name, system type, system category, system material, connection relationship and other information of each MEP system, and generate a TjsMepSystem object.
[0112] Iterate through the 3D elements that do not belong to the mechanical and electrical equipment class under each mechanical and electrical system in the Revit file, and store the 3D elements that do not belong to the mechanical and electrical equipment class into the 3D element list of the TjsMepSystem object. Only one copy of the TjsMepSystem object with the same ID is recorded.
[0113] For example, you can iterate through the 3D elements that do not belong to the mechanical and electrical equipment category under each MEP system in Revit, such as pipes and fittings, and store them uniformly in the 3D element list of the TjsMepSystem.
[0114] All created TjsMepSystem objects are recorded in the TjsMepSystem list of each TjsMepType object.
[0115] It should be understood that only one copy of a TjsMepSystem with the same ID is recorded, and it is uniformly recorded in the TjsMepSystem list of each TjsMepType to avoid writing duplicate data.
[0116] Optionally, in some possible implementations, creating the TjsEquipment list specifically includes:
[0117] Read the connection relationships between pipes and mechanical and electrical equipment in the MEP system of the Revit file, obtain the 3D primitives of all mechanical and electrical equipment classes connected to each MEP system through Domain information, read the attribute information of each mechanical and electrical equipment class 3D primitive, and create a TjsEquipment object;
[0118] For example, it can read the connection relationships between pipes and mechanical and electrical equipment in a Revit MEP system, use Domain information to obtain the 3D primitives of all mechanical and electrical equipment classes connected to each MEP system, and read the ID, name, type, bounding box, and MEP system to which each mechanical and electrical equipment class belongs, and generate a TjsEquipment object.
[0119] Store the 3D primitives of electromechanical equipment into the 3D primitive list of the TjsEquipment object;
[0120] It should be understood that each TjsEquipment object corresponds one-to-one with the 3D primitives of the MEP (Mechanical, Electrical, and Plumbing) class connected to the pipe fittings of the Revit MEP system. The corresponding 3D primitives of the MEP class can be directly stored in the 3D primitive list of the TjsEquipment object.
[0121] All created TjsEquipment objects are stored in the TjsEquipment list of the TjsMepSystem object.
[0122] Optionally, in some possible implementations, the TjsBuilding object is stored in a structured manner, specifically including:
[0123] The tree structure of the TjsBuilding object from TjsPlan to TjsRoom to TjsFurniture and the tree structure from TjsMepType to TjsMepSystem to TjsEquipment are serialized and stored in JSON format, and each node of the tree structure is the same template as the list of 3D primitives and the list of child nodes.
[0124] All generated files are compressed and encrypted before storage.
[0125] For example, the tree structure of TjsBuilding, "TjsPlan—TjsRoom—TjsEquipment" and "TjsMepType—TjsMepSystem—TjsEquipment", can be stored using JSON serialization. Moreover, each node in this tree structure uses the same template of "3D primitive list + child node list", which helps in parsing BIM model data on the web.
[0126] Then, all generated files are compressed and encrypted using DESCryptoServiceProvider.
[0127] It should be understood that, without departing from the concept of the present invention, those skilled in the art can combine the above embodiments in any way, and all such combinations are within the protection scope of the present invention.
[0128] Readers should understand that in the description of this specification, the references to terms such as "one embodiment," "some embodiments," "example," "specific example," or "some examples," etc., refer to specific features, structures, materials, or characteristics described in connection with that embodiment or example, which are included in at least one embodiment or example of the present invention. In this specification, the illustrative expressions of the above terms do not necessarily refer to the same embodiment or example. Moreover, the specific features, structures, materials, or characteristics described may be combined in any suitable manner in one or more embodiments or examples. Furthermore, without contradiction, those skilled in the art can combine and integrate the different embodiments or examples described in this specification, as well as the features of different embodiments or examples.
[0129] In the several embodiments provided in this application, it should be understood that the disclosed apparatus and methods can be implemented in other ways. For example, the method embodiments described above are merely illustrative. For instance, the division of steps is only a logical functional division, and there may be other division methods in actual implementation. For example, multiple steps may be combined or integrated into another step, or some features may be ignored or not executed.
[0130] If the above methods are implemented as software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of this invention, in essence, or the part that contributes to the prior art, or all or part of the technical solution, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a personal computer, server, or network device, etc.) to execute all or part of the steps of the methods of the various embodiments of this invention. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), random access memory (RAM), magnetic disks, or optical disks.
[0131] The above are merely specific embodiments of the present invention, but the scope of protection of the present invention is not limited thereto. Any person skilled in the art can easily conceive of various equivalent modifications or substitutions within the technical scope disclosed in the present invention, and these modifications or substitutions should all be covered within the scope of protection of the present invention. Therefore, the scope of protection of the present invention should be determined by the scope of the claims.
Claims
1. A lightweight BIM data storage method suitable for operation and maintenance management, characterized in that, include: Obtain the Revit file containing the data to be stored, and create a TjsBuilding object based on the Revit file; Read the mesh information of all 3D elements in the Revit file, create a TjsMesh object based on the mesh information, and generate a TjsMesh list for the TjsBuilding object based on the TjsMesh object; Parse the architectural and structural 3D primitives in the Revit file and create TjsPlan, TjsRoom and TjsFurniture lists; Parse the electromechanical 3D primitives in the Revit file and create a list of TjsMepType, a list of TjsMepSystem, and a list of TjsEquipment. The TjsMesh objects corresponding to the lists of 3D primitives TjsPlan, TjsRoom, TjsFurniture, TjsMepType, TjsMepSystem, and TjsEquipment are read by the ID of the 3D primitive Element, and stored as a preset transmission format for web rendering. The TjsBuilding object is stored in a structured manner; Obtain the Revit file containing the data to be stored, and create a TjsBuilding object based on the Revit file, specifically including: Obtain the Revit file containing the data to be stored, recursively traverse all associated Revit files, read the project information in the Revit file, and create a TjsBuilding object based on the project information; Read the mesh information of all 3D elements in the Revit file, create TjsMesh objects based on the mesh information, and generate a TjsMesh list for the TjsBuilding object based on the TjsMesh objects. Specifically, this includes: Use the IExportContext interface to traverse and read the spatial location of all 3D primitives in the Revit file, as well as the lightweight geometry, material, texture, and mapping information; The geometry, material, texture, and mapping information of each 3D primitive are merged to generate a complete polygonal mesh TjsMesh object, with each 3D primitive mapped one-to-one to a TjsMesh object; Generate a list of TjsMesh objects based on the TjsMesh objects corresponding to all types of 3D primitives.
2. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 1, characterized in that, Parse the architectural and structural 3D primitives of the Revit file and create a TjsPlan list, specifically including: Iterate through all floor elevations of the architectural and structural 3D elements in the Revit file, merge the elevations of the same floor from different disciplines, and create a TjsPlan object; Iterate through all 3D primitives outside the room boundaries at the floor level, and store all 3D primitives outside the room boundaries in the 3D primitive list of the TjsPlan object, with one copy of the TjsPlan object for the same floor level. Remove TjsPlan objects that do not contain 3D primitives, and record the remaining TjsPlan objects in the TjsPlan list of the TjsBuilding object.
3. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 2, characterized in that, Creating a TjsRoom list specifically includes: Iterate through all rooms at each of the stated floor levels, read the attribute information of each room, and create a TjsRoom object; Obtain the 3D primitives (excluding building equipment) in each room according to the room boundary, and store the 3D primitives (excluding building equipment) in the 3D primitive list of the TjsRoom object. Record one copy of each TjsRoom object with the same ID. Remove TjsRoom objects with a bounding box size of 0, and record the remaining TjsRoom objects in the TjsRoom list of each TjsPlan object.
4. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 3, characterized in that, Creating a TjsFurniture list specifically includes: Iterate through the 3D primitives of building equipment in each room, read the attribute information of the 3D primitives of building equipment, and generate a TjsFurniture object; Store the 3D primitives of the building equipment into the 3D primitive list of the TjsFurniture object; Store each created TjsFurniture object in the TjsFurniture list of its respective TjsRoom object.
5. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 1, characterized in that, Parsing the MEP (Mechanical, Electrical, and Plumbing) 3D primitives in the Revit file and creating the TjsMepType list specifically includes: Iterate through all MEP system categories in the Revit file and create a TjsMepType object based on the different MEP system categories; Iterate through the 3D primitives of each electromechanical system category that do not belong to the electromechanical system, and store the 3D primitives of each electromechanical system category into the 3D primitive list of the TjsMepType object; All created TjsMepType objects are stored in the TjsMepType list of the TjsBuilding object.
6. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 5, characterized in that, The creation of the TjsMepSystem list specifically includes: Iterate through all electromechanical systems in each electromechanical system category, read the attribute information of each electromechanical system, and generate a TjsMepSystem object; Iterate through the three-dimensional primitives of each electromechanical system except for the electromechanical equipment class, and store the three-dimensional primitives other than the electromechanical equipment class into the three-dimensional primitive list of the TjsMepSystem object, and record one copy of the TjsMepSystem object with the same ID. All created TjsMepSystem objects are recorded in the TjsMepSystem list of each TjsMepType object.
7. The lightweight BIM data storage method suitable for operation and maintenance management according to claim 6, characterized in that, Creating a TjsEquipment list specifically includes: Read the connection relationship between the pipes and electromechanical equipment of the electromechanical system, obtain the three-dimensional primitives of all electromechanical equipment classes connected to each electromechanical system through Domain information, read the attribute information of each three-dimensional primitive of electromechanical equipment class, and create a TjsEquipment object; Store the 3D primitives of the electromechanical equipment class into the 3D primitive list of the TjsEquipment object; All created TjsEquipment objects are stored in the TjsEquipment list of the TjsMepSystem object.
8. The lightweight BIM data storage method suitable for operation and maintenance management according to any one of claims 1 to 7, characterized in that, The TjsBuilding object is stored in a structured manner, specifically including: The tree structure of the TjsBuilding object from TjsPlan to TjsRoom to TjsFurniture and the tree structure from TjsMepType to TjsMepSystem to TjsEquipment are stored using JSON serialization, and each node of the tree structure is the same template as the list of three-dimensional primitives and the list of child nodes. All generated files are compressed and encrypted before storage.
Citation Information
Patent Citations
Operation and maintenance management-oriented geometric model lightweight processing method in BIM
CN109492271A