Construction Schema
Alias: constr
Version: 1.0.4
Base schema for the Construction domain.
This schema contains classes that are used to model real-world entities from the construction perspective. Supported workflows:
- project breakdown into the construction work areas;
- construction modeling - splitting up design data into smaller pieces suitable for construction;
- classification - cost codes assignment to the constructible components;
- quantity takeoff - work steps quantities calculation.
Project breakdown into construction work areas
Construction work areas are used throughout the entire construction project lifecycle: estimation, planning and sequencing, progress reporting and tracking. By breaking a project down into construction work areas some design elements may cross work area boundaries and as a result such elements are split into multiple pieces.
Picture 1. Project breakdown into construction work areas
A portion of a design element that got split because it crossed the construction work area boundary is modeled as WorkAreaDetailingElement
(Portion 'X' and Portion 'Y' in the example above). This element may or may not be suitable for construction. In cases when engineer decides that it is too big or requires different means and methods assigned, then it will be split further during construction modeling step.
Construction modeling
During construction modeling step some design elements are split into smaller pieces suitable for construction. Such a sliced portion of a real-world object is modeled as ConstructionDetailingElement
(Portion 'X1', Portion 'X2', Portion 'S' and Portion 'Z' in the example below).
Picture 2. Construction modeling sample
Note, that ConstructionDetailingElement
does not cross the boundaries of WorkAreaDetailingElement
.
If a real-world physical object crosses multiple construction work areas and different means and methods need to be assigned to its different parts (for example, bottom and top) then separate ConstructionDetailingElement
instances representing each part will be created in each construction work area:
Picture 3. Construction modeling
Data organization in the repository
ConstructionWorkArea
and WorkAreaDetailingElement
instances are placed in a separate SpatialLocationModel
under their own PhysicalPartition
:
Picture 4. Construction work areas persistence
This data becomes a common input for all estimations in the project, regardless of who estimates: it can be multiple teams from the same organization estimating the same scope, or it can be multiple sub-contractors estimating work in the same or different construction work areas and etc.
The estimation data are split into PhysicalModel
and SpatialLocationModel
models under PhysicalPartition
and ConstructionInformationPartition
partitions respectively. In the bidding phase when multiple estimation teams (from the same organization or from multiple organizations when contractors are invited) are doing quantity takeoff, each team's data will be organized under a separate Subject
.
Picture 5. Estimation data partitioning
The picture below illustrates the data persistence of the construction quantity takeoff results taking as an example construction modeling sample from Picture 2. It covers all 5 possible use cases:
- Design element ("P-3") falls within the boundaries of a construction work area ("B") and is estimated as a whole.
- Design element ("P-2") falls within the boundaries of a construction work area ("B") and is split into the smaller pieces ("Portion S" and "Portion Z") modeled as
ConstructionDetailingElement
. Each of them is classified and estimated separately. - Design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion Y") is suitable for construction. Such a portion is estimated as a whole.
- Design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion X") is not suitable for construction. Such a portion is split further into the smaller pieces ("Portion X1" and "Portion X2") modeled as
ConstructionDetailingElement
. Each of them is classified and estimated separately. - Non-modeled element ("Manhole 102") is included in the estimation and related to the appropriate construction work area ("B"). This element does not yet have a graphical representation.
Picture 6. Data persistence sample
Table of contents
Entity Classes
ConstructionDetailingElement (Construction Detailing Element) EntityClass
Identifies a portion of real-world physical object that is suitable for construction.
Base Class: BisCore:SpatialLocationElement
Properties
Name | Description | Type | Extended Type |
---|---|---|---|
SlopedArea | Total sloped area. | double | |
SurfaceArea | Total surface area. | double | |
Volume | Volume of the element. | double | |
StationRange | Well-known location of the element defined by the station range. | struct | |
LengthOfSlice | Length of an element produced by slice operation. | double |
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
Origin | The placement origin of this bis:Element. | point3d | |
Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
ConstructionInformationModel (Construction Information Model) EntityClass
A container for persisting constr:ConstructionItem instances.
Base Class: BisCore:InformationModel
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
ParentModel | The parent bis:Model contains the bis:Element that this bis:Model is sub-modeling. | navigation | |
ModeledElement | The bis:Element that this bis:Model is sub-modeling. This bis:Model models the same Entity as the sub-Modeled bis:Element, but at a finer granularity. | navigation | |
IsPrivate | If IsPrivate is true then this bis:Model should not appear in lists shown to the user. | boolean | |
IsTemplate | If IsTemplate is true then this bis:Model is used as a template for creating new instances. | boolean | |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
LastMod | The last time any element in this Model was modified. | dateTime |
ConstructionInformationPartition (Construction Information Partition) Sealed EntityClass
A constr:ConstructionInformationPartition element indicates that there is a construction modeling perspective within the overall information hierarchy. A constr:ConstructionInformationPartition is always parented to a bis:Subject and broken down by a constr:ConstructionInformationModel.
Base Class: BisCore:InformationPartitionElement
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Description | A human-readable string describing the intent behind the partition. | string |
ConstructionItem (Construction Item) Sealed EntityClass
Defines a constructible component which may or may not be modeled in the 3D model.
Base Class: BisCore:InformationRecordElement
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
ConstructionItem
defines a constructible component which may or may not be modeled in the 3D model.
Often design models lack details and aren't mature enough to take off accurate quantities for a construction project. But these non-modeled elements still need to be taken into account for cost estimation and work planning later. Examples of such non-modeled elements: manholes, traffic signs…
When a constructible component is modeled in the 3D model, ConstructionItem
refers to one or multiple (i.e. prefabricated component which is installed as a whole) geometric elements.
ConstructionQuantity (Construction Quantity) Sealed EntityClass
The aspect used to store construction quantity data for constr:ConstructionItem elements.
Base Class: BisCore:ElementMultiAspect
Properties
Name | Description | Type | Extended Type |
---|---|---|---|
CostCodeId | The Id of the Cost Code in Construction QTO service. | string | |
WorkStepCode | Work Step Code for which the value is calculated. | string | |
Quantity | Calculated quantity value. | double | |
QuantityUnitName | The fully qualified unit name (if it exists) used to persist the quantity value. | string | |
QuantityUnitLabel | The unit display label to use when showing the quantity value. | string | |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Element | The bis:Element that owns this bis:ElementMultiAspect. | navigation |
ConstructionWorkArea (Construction Work Area) EntityClass
Represents geographically identifiable area which encompasses all disciplines that will execute work within that area.
Base Class: BisCore:SpatialLocationElement
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
Origin | The placement origin of this bis:Element. | point3d | |
Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation |
CostCode (Cost Code) Sealed EntityClass
The aspect used to store Cost Code assignments to constr:ConstructionItem elements.
Base Class: BisCore:ElementMultiAspect
Properties
Name | Description | Type | Extended Type |
---|---|---|---|
CodeId | The Id of the Cost Code in Construction QTO service. | string |
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Element | The bis:Element that owns this bis:ElementMultiAspect. | navigation |
GenericConstructionObject (Construction Object) Sealed EntityClass
Represents a generic object used during construction
Base Class: BisCore:PhysicalElement
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
Origin | The placement origin of this bis:Element. | point3d | |
Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation | |
PhysicalMaterial | Indicates the bis:PhysicalMaterial of which the bis:PhysicalElement is made. | navigation |
WorkAreaDetailingElement (Work Area Detailing Element) EntityClass
Identifies a portion of real-world physical object that got split because it crossed construction work area boundary.
Base Class: Construction:ConstructionDetailingElement
Inherited properties
Name | Description | Type | Extended Type |
---|---|---|---|
Model | The bis:Model that contains this bis:Element. | navigation | |
LastMod | The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. | dateTime | |
CodeSpec | The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeScope | The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | navigation | |
CodeValue | The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. | string | |
UserLabel | An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). | string | |
Parent | The parent bis:Element that owns this bis:Element. | navigation | |
FederationGuid | The GUID used to federate this bis:Element across repositories. | binary | BeGuid |
JsonProperties | A string property that users and/or applications can use to persist ad hoc JSON values. | string | Json |
Category | The bis:SpatialCategory used to categorize this bis:GeometricElement3d | navigation | |
InSpatialIndex | If true, this element will have an entry in the Spatial Index. | boolean | |
Origin | The placement origin of this bis:Element. | point3d | |
Yaw | The Yaw angle (in degrees) of the orientation of this bis:Element. | double | |
Pitch | The Pitch angle (in degrees) of the orientation of this bis:Element. | double | |
Roll | The Roll angle (in degrees) of the orientation of this bis:Element. | double | |
BBoxLow | The 'low' point of the element-aligned bounding box of this bis:Element. | point3d | |
BBoxHigh | The 'high' point of the element-aligned bounding box of this bis:Element. | point3d | |
GeometryStream | Binary stream used to persist the geometry of this bis:Element. | binary | GeometryStream |
TypeDefinition | Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. | navigation | |
SlopedArea | Total sloped area. | double | |
SurfaceArea | Total surface area. | double | |
Volume | Volume of the element. | double | |
StationRange | Well-known location of the element defined by the station range. | struct | |
LengthOfSlice | Length of an element produced by slice operation. | double |
StationRange (Station Range) StructClass
Struct to define a station range.
Properties
Name | Description | Label | Category | Read Only | Priority |
---|---|---|---|---|---|
StartStation | Station start point. | Start Station | false | 0 | |
EndStation | Station end point. | End Station | false | 0 |
Relationship Classes
ConstructionDetailingElementSplitsGeometricElement3d Sealed RelationshipClass
Relationship enabling splitup of bis:GeometricElement3d elements into the smaller pieces.
Base Class: BisCore:ElementRefersToElements
Strength: Referencing
Strength Direction: Forward
Used to relate ConstructionDetailingElement
instances to the source geometry element. Even though the source geometry can be any element of a class bis:GeometricElement3d
, the application layer will control what elements are eligible for splitting. For instance, it doesn't make any sense to split geometric elements like bis:TextAnnotation3d
and similar.
In the case (see Picture 8) when design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion X", modeled as WorkAreaDetailingElement
) is split further into smaller pieces suitable for construction ("Portion X1" and "Portion X2, modeled as ConstructionDetailingElement
) in addition to the relationship between ConstructionDetailingElement
and WorkAreaDetailingElement
a relationship between ConstructionDetailingElement
and "original" design element is created (see Picture 7). Conceptually these ConstructionDetailingElement
instances each represent a portion of the original design element, the difference is the way in which these portions were created.
Picture 7. Relationships between design element and its sliced portions
*Picture 8. Sample of splitting a design element for multiple purposes
Source
Target
ConstructionItemConstructsGeometricElement3d Sealed RelationshipClass
Relates constr:ConstructionItem to the real world entities (or their split up pieces modeled as constr:ConstructionDetailingElement elements) it constructs.
Base Class: BisCore:ElementRefersToElements
Strength: Referencing
Strength Direction: Forward
Source
Target
ConstructionItemOwnsConstuctionQuantities Sealed RelationshipClass
Defines aspect's ownership.
Base Class: BisCore:ElementOwnsMultiAspects
Strength: Embedding
Strength Direction: Forward
Source
Target
ConstructionItemOwnsCostCodes Sealed RelationshipClass
Defines aspect's ownership.
Base Class: BisCore:ElementOwnsMultiAspects
Strength: Embedding
Strength Direction: Forward
Source
Target
ElementBelongsToConstructionWorkArea Sealed RelationshipClass
Relates a bis:Element to the constr:ConstructionWorkArea that it belongs to.
Base Class: BisCore:ElementRefersToElements
Strength: Referencing
Strength Direction: Forward
Source
Target
Kind Of Quantities
AREA (Area) KindOfQuantity
Relative Error: 0.0001
Persistence Unit: SQ_M
Presentation Formats
- DefaultRealU(2) [ SQ_M ]
- DefaultRealU(2) [ SQ_FT ]
- DefaultRealU(2) [ SQ_US_SURVEY_FT ]
LENGTH (Length) KindOfQuantity
Relative Error: 0.0001
Persistence Unit: M
Presentation Formats
- DefaultRealU(2) [ M ]
- DefaultRealU(2) [ FT ]
- DefaultRealU(2) [ US_SURVEY_FT ]
STATION (Station) KindOfQuantity
Relative Error: 0.0001
Persistence Unit: M
Presentation Formats
- StationZ_1000_3 [ M ]
- StationZ_100_2 [ FT ]
- DefaultRealU(2) [ M ]
- DefaultRealU(2) [ FT ]
- DefaultRealU(2) [ US_SURVEY_FT ]
VOLUME (Volume) KindOfQuantity
Relative Error: 0.0001
Persistence Unit: CUB_M
Presentation Formats
- DefaultRealU(2) [ CUB_M ]
- DefaultRealU(2) [ CUB_FT ]
- DefaultRealU(2) [ CUB_US_SURVEY_FT ]
Last Updated: 24 June, 2023