FIELD OF THE INVENTION

This invention relates to providing systems and methods to generate designs of structures using a programmatic approach and more particularly to using the programmatic expression of structure to present suitable products for design details.

BACKGROUND OF THE INVENTION

In traditional design workflows, architects and other designers manually layout the elements of a design, such as windows and ducts using a design tool, such as Autocad or Revit. Building Information Modeling (BIM) is a process involving the generation and management of digital representations of physical and functional characteristics of places. Building information models (BIMs) are files (often but not always in proprietary formats and containing proprietary data) which can be extracted, exchanged or networked to support decision-making regarding a building or other built asset.

SUMMARY OF THE INVENTION

Systems and methods for generating programmatic designs of structures in accordance with embodiments of the invention are illustrated. One embodiment includes a system for generating a programmatic description of a design of a structure, including a processing system, and a memory accessible by the processing system storing instructions that when read by the processing system direct the processing system to receive a visual description of a structure, identify features in the visual description of the structure, determine a list of candidate components corresponding to the identified features from the visual description of the structure, resolve parameters for each component in the list of candidate components, generate a programmatic description of the structure based on the list of candidate components of the resolved parameters and perform an error check to determine an amount that the programmatic description differs from the visual description.

In another embodiment, the visual description of the structure is a Building Information Model (BIM).

In a further embodiment, to determine a list of candidate components, the instructions further direct the processing system to select at least one candidate component from a catalog of pre-defined components.

In still another embodiment, the catalog of components includes information about each component, where the information is selected from the group consisting of cost per unit, component availability, component weight, and component dimensions.

In a still further embodiment, to determine a list of candidate components, the instructions further direct the processing system to identify a set of parameters that describe the feature, and locate a set of components in the catalog of components that corresponds to the set of parameters.

In yet another embodiment, the instructions further direct the processing system to receive an input describing the addition of at least one component to the programmatic design of the structure, and update the programmatic description of the building with the at least one component.

In a yet further embodiment, the instructions further direct the processing system to receive an updated visual description of the structure, identify updated features in the updated visual description of the structure, determine a second list of candidate components corresponding to the updated features, update the programmatic description of the structure with the updated features, and perform an error check to determine an amount that the updated programmatic description differs from the visual description.

In another additional embodiment, the processing system determines, for each feature, the list of candidate components corresponding to the identified features utilizing a separate processing thread.

In a further additional embodiment, the processing system is a distributed processing system.

In another embodiment again, the programmatic description of the structure includes a set of components that make up the structure, and each component in the set of components is assigned a unique identifier.

In a further embodiment again, a method for generating a programmatic description of a design of a structure includes receiving a visual description of a structure, identifying features in the visual description of the structure, determining a list of candidate components corresponding to the identified features from the visual description of the structure, resolving parameters for each component in the list of candidate components, generating a programmatic description of the structure based on the list of candidate components of the resolved parameters, and performing an error check to determine an amount that the programmatic description differs from the visual description.

In still yet another embodiment, the visual description of the structure is a Building Information Model (BIM).

In a still yet further embodiment, determining a list of candidate components further includes selecting at least one candidate component from a catalog of pre-defined components.

In still another additional embodiment, the catalog of components includes information about each component, where the information is selected from the group consisting of cost per unit, component availability, component weight, and component dimensions.

In a still further additional embodiment, determining a list of candidate components further includes identifying a set of parameters that describe the feature, and locating a set of components in the catalog of components that corresponds to the set of parameters.

In still another embodiment again, the method further includes receiving an input describing the addition of at least one component to the programmatic design of the structure, and updating the programmatic description of the building with the at least one component.

In a still further embodiment again, the method further includes receiving an updated visual description of the structure, identifying updated features in the updated visual description of the structure, determining a second list of candidate components corresponding to the updated features, updating the programmatic description of the structure with the updated features, and performing an error check to determine an amount that the updated programmatic description differs from the visual description.

In yet another additional embodiment, the method further includes determining, for each feature, the list of candidate components corresponding to the identified features utilizing a separate processing thread.

In a yet further additional embodiment, the method is performed using a distributed processing system.

In yet another embodiment again, the programmatic description of the structure includes a set of components that make up the structure, and wherein each component in the set of components is assigned a unique identifier.

Additional embodiments and features are set forth in part in the description that follows, and in part will become apparent to those skilled in the art upon examination of the specification or may be learned by the practice of the invention. A further understanding of the nature and advantages of the present invention may be realized by reference to the remaining portions of the specification and the drawings, which forms a part of this disclosure.

