N/A
The present disclosure pertains to digital construction modeling, and more specifically, but not by way of limitation, to systems and methods for modeling surfaces and optimization of material use.
A system of one or more computers can be configured to perform particular operations or actions by virtue of having software, firmware, hardware, or a combination of them installed on the system that in operation causes or cause the system to perform the actions. One or more computer programs can be configured to perform particular operations or actions by virtue of including instructions that, when executed by data processing apparatus, cause the apparatus to perform the actions. One general aspect includes receiving a building information model comprising walls and hosted wall objects; generating serialized model data; converting the serialized model data into graph structures, the graph structures being determined by identifying wall corners, ceiling vertical transitions, and hosted conditions for each of the walls; and generating a cut sheet for a material based on the graph structures.
In one embodiment, the present disclosure is directed to a system comprising: a processor; and a memory for storing instructions, the processor executing the instructions to: receive a building information model comprising walls and hosted wall objects; generate serialized model data; convert the serialized model data into graph structures, the graph structures being determined by identifying wall corners, ceiling vertical transitions, horizontal constraints for ceilings and floors, and hosted conditions for each of the walls, wherein the graph structures define any one or more of straight edge cuts, cut patterns, top of wall conditions, as well as types of cuts to be milled for a sheet material, wherein a cut sheet is generated for a sheet material based on the updated building information model; and generate an updated building information model from the graph structures.
Exemplary embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements.
The present disclosure pertains, in general, to building modeling systems and methods that can be used to ensure an optimized layout of wall sheathing or other similar structures. Moreover, these systems and methods can be used to ensure that building structures are optimally constructed in such a way that material usage is maximized and material loss is minimized.
For context, in a variety of applications, including drywall installation and woodworking, it is common to remove material from the side of a sheet of material to allow for folding and connecting the sheet material at an angle. By removing material from the sheet material, usually in a laterally symmetrical cut up to, but short of, the opposite side, the sheet material can be folded to form a continuous surface.
In corner applications, the folded sheet material may be made permanent with adhesives, eliminating the need for metal corner beads and additional plastering. A sheet material installer can utilize the present disclosure to predetermine sheet size or edge types of the sheet itself, optimizing sheet usage, and reducing installation and finishing time.
By using serialized data from two-dimensional drawings or three-dimensional models that denote the physical description of a building, a computer processor can identify, find, and measure sheet material to be prepared for milling and installation.
Traditionally, the ability for one to find and measure the milled pieces using a printed set of drawings is a slow process, relying on visual identification and manual measurement, which rest on the skill of the person performing the identification and measurement.
By contrast, the present disclosure can include digitizing a blueprint or other similar document (physical or electronic), referred to herein as a building information model (BIM), converting the BIM into a graph model, and cutting a material according to the graph model. As used herein, a graph may be understood to include a plurality of vertices connected by an edge. A weighted graph indicates the distance between two vertices is determined by a real number, the number being the edge's weight. Additional aspects of the present disclosure are provided in greater detail infra.
In some instances, the graph model can be used by a computer numeric controlled (CNC) or other similar device that is used to cut material prior to installation. Any material can be used herein, however, it is advantageous for this process to be used with sheet material such as chipboard, drywall, fiberboard, oriented strand board, particleboard, and plywood, as well as solid lumber or metal sheet goods. The sheet material can be cut and installed to create walls. As used herein, the term “wall” denotes a structure enclosing an area, such as a room, building, or area of land, and may include a sidewall, ceiling, floor, or portion thereof.
Walls can be defined by geometrical parameters such as length, height, and thickness. A wall can be made from one or more layers of material. For example, a wall can have two or more outer layers that are placed over a frame structure. Objects can have attributes such as location (placement on the wall), centerline, width, height, and thickness.
A BIM can include data for each wall in a structure. In general, a computer drafting application's drawing file and linked drawing files contain two-dimensional line drawings or three-dimensional models that contains architectural elements such as walls, doors, windows, wall openings, ceilings, ceiling openings, floors, floor openings, structural components such a beams and columns, mechanical, electrical and plumbing components such as mechanical ducts, electrical trays and plumbing lines and all other systems pertinent to the building described.
In some embodiments, the BIM is converted into a serialized XML structure. Each wall and object can be defined by a unique identifier. That is, from the host design application, the building data can be serialized to include properties such as wall start and end point locations, object centerline, width, height, layers of materials and their properties such as thickness, type and applicable elevations on the surface of the wall, wall rating. Ceiling information such as all line segments that describe the perimeter(s) of the ceiling, the layers of materials that comprise the ceiling and their thicknesses. Structural systems locations, type, start and endpoints. The serialized data is written to disk and in-system memory.
Next, the serialized data can be converted into one or more graphs. As used herein, a graph means vertices connected by an edge. A weighted graph means the distance between two vertices is determined by a real number, or its “weight”. For each wall, ceiling, door or other surface(s), a weighted graph data structure is created. A two vertex, single edge graph contains all of the serialized data as object properties of the graph.
In the example of
Architecturally, isolated vertices are ends of walls that do not intersect any other wall. They typically create a cove space. Doubled vertices can be determined by iterating through the list of wall segment endpoints and finding duplicate points. When searching for isolated endpoints, on edge points will be found as well, since confirming isolation reveals on edge conditions.
If a vertex is isolated it cannot be in the set of duplicate vertices and it cannot be in another line segment's length. A vertex is isolated if it satisfies these conditions: (1) it is not in the set of duplicated vertices; (2) it does not exist on any other line segment.
When confirming if a point is isolated and it is found to exist on the edge of another graph, it is understood to be an on edge vertex. With respect to duplicate vertices, since each segment is defined by two end points, any point that occurs twice must be where two segments meet, thus neither are isolated vertices. VDuplicates=VStartPoints∩VEndPoints.
When an on edge vertex is found, add the identifier of the segment that the vertex defines to a list of intersecting segments to the segment being intersected. When confirming graphs, if the intersection list is empty in each edge of the graph, then the graph is not a subgraph.
With regard to uniquely shaped structures, the system can be configured to identify these structures using various techniques. For example, the system can find various shapes, such as “L”, “C”, and “U” shapes or other variants as well as single sided shapes, meaning shapes that do not fold.
Arcuate shapes can be found in all project types, typically as enclosures and around hosted elements. They can be defined as three walls that are bounded by fourth that do not share a common vertex or three walls that are not bound by a fourth wall. They also exist in the geometric representation of the metadata. For example when wrapping the return of an inset window, an “L” shape is produced (see
Given a list of line segments defined by two isolated vertices (V1; V2), the system can label each of the segment's vertices with the segments ID. Once the graph structures are identified, wrapping conditions can be identified. The system can create shapes defined by a rule set and from geometric conditions, for each condition. The system can then traverse the graph to find adjacent model object vertices. For example, in
The system can assign VDoubledList as the list of all duplicate vertices in the data set. If an identifier occurs twice in VDoubledList, then both end points are vertices in a graph G. Since Graph G's vertices represent vertices that are duplicated from other line segments, Graph G must be a subgraph of Graph H. Thus, Graph G can be expanded to include adjacent edges.
In some embodiments, if V1∉VDoubledSet and V2∉VDoubledSet then they are not shared end points of other line segments and must be either an isolated vertex or a vertex on segment. If V1 and or V2 are duplicate or on edge vertices, they can either connect with a common edge or each vertex connects to another line segment, expanding Graph H and making Graph H a subgraph of Graph I. The system can use recursion to explore each vertex and its edge to keep expanding Graph H, but this is not necessary. It will be understood that the graph is only there as an aide to visualize the relationships of line segments, each representing a wall that must be a certain length for a board to completely or partially wrap around it. In some embodiments, a graph can be created based on the set of segments with identical IDs contained within a Node's metadata.
Referring now to
In this example, the host wall 700 includes a hosted window 702. Horizontal constraints can be set for both ceiling and floor. Wrap distances to adjacent vertexes on a graph can also be included. In this example, four wrap distances are included 704A-704C. An isometric view of the graph is illustrated in 704C.
Other conditions can be referred to as remainders. A remainder represents a space between graph vertices that represent end points of objects or joint locations. The remainder spaces become conditions unto themselves, providing an opportunity to calculate the location and length of whole and/or partial boards along their length. As best illustrated in
Referring now to
In step 1510, the method can include defining end points of hosted wall objects on graph as vertices. In step 1512, the method can include establishing a distance between endpoint vertices as the weight of each edge in the graph. In some embodiments, the method includes a step 1514 of define conditions to be wrapped, which can include defining a sheet size (e.g., a size of the sheet material that is to be cut).
In step 1516, wall corners are identified using defined termination rules. In step 1518, the method can include establishing, for each graph in W, a weight that is less than a board width (e.g., width of boards used to create the wall, such as a 4 foot×8 foot sheet of drywall). In step 1520, if V1 and/or V2 are duplicated walls, then iterate over connecting graphs until combined a weight is no greater than board width, and does not continue past construction object points on graph. This method would be used to wrap corners with physical constrains of the board.
In step 1522, the method includes defining a shape as the geometric result of each successful wrap. In some embodiments, the method includes a step 1524 of defining a shape edge type as the result of termination rules and the shapes geometric configuration. For example, edge type rules are applied such as tapered, cut, fold over, and so forth. In step 1526, the method includes defining a shape's geometric height as the result of rules, such as using host wall height or finding and using adjacent polygon type such a floor or ceiling to define vertical termination. Vertical height rules can be applied in this step. The method can return back to
In step 1538, the method can include defining left and right sides as V1, V2 of sub graph S in G. The method can include a step 1540 of traversing the graph G from Vn, and defining W as the uninterrupted distance to any adjacent vertex.
Referring now to
In step 1546, the method includes searching for polygon edges of each ceiling type that are within a defined distance (this uses the method in
The computer system 1 includes a processor or multiple processor(s) 5 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), or both), and a main memory 10 and static memory 15, which communicate with each other via a bus 20. The computer system 1 may further include a video display 35 (e.g., a liquid crystal display (LCD)). The computer system 1 may also include an alpha-numeric input device(s) 30 (e.g., a keyboard), a cursor control device (e.g., a mouse), a voice recognition or biometric verification unit (not shown), a drive unit 37 (also referred to as disk drive unit), a signal generation device 40 (e.g., a speaker), and a network interface device 45. The computer system 1 may further include a data encryption module (not shown) to encrypt data.
The drive unit 37 includes a computer or machine-readable medium 50 on which is stored one or more sets of instructions and data structures (e.g., instructions 55) embodying or utilizing any one or more of the methodologies or functions described herein. The instructions 55 may also reside, completely or at least partially, within the main memory 10 and/or within the processor(s) 5 during execution thereof by the computer system 1. The main memory 10 and the processor(s) 5 may also constitute machine-readable media.
The instructions 55 may further be transmitted or received over a network via the network interface device 45 utilizing any one of a number of well-known transfer protocols (e.g., Hyper Text Transfer Protocol (HTTP)). While the machine-readable medium 50 is shown in an example embodiment to be a single medium, the term “computer-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable medium” shall also be taken to include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the machine and that causes the machine to perform any one or more of the methodologies of the present application, or that is capable of storing, encoding, or carrying data structures utilized by or associated with such a set of instructions. The term “computer-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic media, and carrier wave signals. Such media may also include, without limitation, hard disks, floppy disks, flash memory cards, digital video disks, random access memory (RAM), read only memory (ROM), and the like. The example embodiments described herein may be implemented in an operating environment comprising software installed on a computer, in hardware, or in a combination of software and hardware.
One skilled in the art will recognize that the Internet service may be configured to provide Internet access to one or more computing devices that are coupled to the Internet service, and that the computing devices may include one or more processors, buses, memory devices, display devices, input/output devices, and the like. Furthermore, those skilled in the art may appreciate that the Internet service may be coupled to one or more databases, repositories, servers, and the like, which may be utilized in order to implement any of the embodiments of the disclosure as described herein.
The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present technology has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the present technology in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the present technology. Exemplary embodiments were chosen and described in order to best explain the principles of the present technology and its practical application, and to enable others of ordinary skill in the art to understand the present technology for various embodiments with various modifications as are suited to the particular use contemplated.
If any disclosures are incorporated herein by reference and such incorporated disclosures conflict in part and/or in whole with the present disclosure, then to the extent of conflict, and/or broader disclosure, and/or broader definition of terms, the present disclosure controls. If such incorporated disclosures conflict in part and/or in whole with one another, then to the extent of conflict, the later-dated disclosure controls.
The terminology used herein can imply direct or indirect, full or partial, temporary or permanent, immediate or delayed, synchronous or asynchronous, action or inaction. For example, when an element is referred to as being “on,” “connected” or “coupled” to another element, then the element can be directly on, connected or coupled to the other element and/or intervening elements may be present, including indirect and/or direct variants. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present.
The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be necessarily limiting of the disclosure. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The terms “comprises,” “includes” and/or “comprising,” “including” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Example embodiments of the present disclosure are described herein with reference to illustrations of idealized embodiments (and intermediate structures) of the present disclosure. As such, variations from the shapes of the illustrations as a result, for example, of manufacturing techniques and/or tolerances, are to be expected. Thus, the example embodiments of the present disclosure should not be construed as necessarily limited to the particular shapes of regions illustrated herein, but are to include deviations in shapes that result, for example, from manufacturing.
Aspects of the present technology are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the present technology. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
In this description, for purposes of explanation and not limitation, specific details are set forth, such as particular embodiments, procedures, techniques, etc. in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced in other embodiments that depart from these specific details.
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” or “according to one embodiment” (or other phrases having similar import) at various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. Furthermore, depending on the context of discussion herein, a singular term may include its plural forms and a plural term may include its singular form. Similarly, a hyphenated term (e.g., “on-demand”) may be occasionally interchangeably used with its non-hyphenated version (e.g., “on demand”), a capitalized entry (e.g., “Software”) may be interchangeably used with its non-capitalized version (e.g., “software”), a plural term may be indicated with or without an apostrophe (e.g., PE's or PEs), and an italicized term (e.g., “N+1”) may be interchangeably used with its non-italicized version (e.g., “N+1”). Such occasional interchangeable uses shall not be considered inconsistent with each other.
Also, some embodiments may be described in terms of “means for” performing a task or set of tasks. It will be understood that a “means for” may be expressed herein in terms of a structure, such as a processor, a memory, an I/O device such as a camera, or combinations thereof. Alternatively, the “means for” may include an algorithm that is descriptive of a function or method step, while in yet other embodiments the “means for” is expressed in terms of a mathematical formula, prose, or as a flow chart or signal diagram.