For Systems Integrators
While all content is designed to be presented and edited by industry practioners,
content may also be adapted into forms useful for systems integrators and software developers.
The Constructivity portal automatically generates source code, modules, and database schemes.
This captures libraries in their entirety, including definitions, fields, instance data, and parametric functionality.
Online libraries can also be created by importing source code,
and running in a sandboxed environment restricted to arithmetic operations.
This enables parametric functionality to be created without limits using familiar programming languages.
The data model is designed for extensibility such that software can take advantage of extensions
without having dependencies on them. By targeting this core data model at one of three progressive levels of information,
significant functionality may be achieved with minimal data structures.
UML diagrams for each of the core data model levels are shown below.
Details for each definition may be found by browsing to the corresponding library.
This is the foundational level of the core data model that captures equipment and spaces within a facility.
It includes the core tables of COBie: the hierarchy of Facility, Floor, Space, and Component, with Type shared by multiple components.
It formalizes the “Category” attributes such that they can be extended by classifications (e.g. OmniClass) in a strongly-typed way.
These end up as lookup-tables for spreadsheets, and as enumerations in programming languages.
Objects that are intended to be referenced have a Name for identification.
System fields such as GUIDs, database IDs, owning users, and modification dates are external to the data model.
This level of the core data model includes information needed to construct and maintain a facility.
It includes everything in Level 1 and adds all physical elements of a structure.
Types are extended to include 3D models that may be represented as polygonal boundary representations (“B-Reps”)
or triangular meshes with normal vectors. Materials may be identified and have colors and textures assigned.
Elements are introduced as a single class to represent any physical object within a structure.
Placement of elements can be defined not just as points with orientation, but as Paths to precisely describe specific curvature and twisting.
Elements may be based on a Construction to define parametric layers, frames, and members.
Linear elements (e.g. beams, pipes, roads) may be described by Sections that may vary along curved paths, potentially with camber,
with embedded rebar described with spacing, cover, and overlap.
Sections may be parametrically extended by other libraries (e.g. AISC steel shapes, ACI rebar bending patterns, SSMA wall studs, bricks, floor tile).
Surface elements (e.g. walls, floors) may be described by Layers which may be solid or framed by linear elements along edges and within.
Elements may be connected to other elements, have other elements as parts, have voids, and have a Component assigned.
This level of the core data model includes everything in Level 2 and adds detail needed to size and select (or otherwise check)
structural, mechanical, electrical, and plumbing components.
Materials are expanded to capture structural, thermodynamic, fuel, and lighting uses.
Ports are expanded to capture requirements for structural, electrical, plumbing, and air conditioning use.
Structural behavior such as foundation bearings and member connections can be precisely described.
Electrical loads can be precisely described as a function of operating parameters, such as for chillers.
Spaces are extended to include requirements for structural loads, thermal loads, and electrical loads.
Thermal Boundaries are introduced to describe analytical boundaries between spaces.
Data formats and programming languages supported include:
- CSC: C-Sharp (C#)
- DLL: .NET Dynamic Link Library
- SQL: Structured Query Language
- XLS: Microsoft Excel
- XML: Extensible Markup Language
Of note, programming languages can also be used as data formats, where its possible to represent construction projects as code,
which can then be compiled into modules and rapidly loaded into memory.
Projects and libraries may be accessed using a URL in the form
- Format: Indicate the format of data according to the code shown above for Data Formats
- Organization: Indicate the organization by its text identifier.
- Library: Indicate the library by its text identifier.
Upon logging in to an account with necessary permissions, the following HTTP verbs are supported:
- GET: download library [requires Project View access].
- PUT: upload library to replace current version [requires Project Edit access].
- POST: upload library to create a new version [requires Project Edit Access].
- DELETE: delete library [requires Organization Administration access].
To serialize or deserialize data, built-in framework functions may be used.
For .NET applications, formats are supported by the following classes:
- CSC: Microsoft.CSharp.CSharpCodeProvider
- DLL: System.Assembly
- JSON: Newtonsoft.Json.JsonSerializer
- XML: System.Runtime.Serialization.DataContractSerializer
To access data according to the Core Data Model as described above,
you can download applicable source code or compiled modules using the same API call above with Organization set to "Constructivity",
and Library set to "BIM1", "BIM2", and/or "BIM3".