Log In   View a printable version of the current page.
Model Cost Item (FP)
Added by Janice Wix, last edited by Janice Wix on Jan 31, 2007  (view change)
Labels: 
(None)


Model Cost Item

Overview

A cost item describes a cost or financial value together with descriptive information that describes its context in a form that enables it to be used within a cost schedule. It represents an element within a cost model. Using general capabilities of the IFC schema, elements (cost items) can be nested to provide a hierarchical breakdown within the model. This can be used to enable the development of complex groups of costs as may be found in cost schedules through to pages, sections and complete cost schedules.
A cost item can be used to represent the cost of goods and services, the execution of works by a process, lifecycle cost and much more.
Each occurrence of cost item may have a name and a description. Depending on the use for which the cost is intended, these values should be asserted on the basis of agreement. For instance, the name attribute could be used to provide a common value that enables distinct instances to be brought together in a nesting arrangement (see below) whilst the description attribute could be used to provide the typical text that would be used for item description in a costing schedule.
Cost items may be used for cost estimates, budgets, etc., where a variety of identification codes are used extensively to identify the meaning of the cost. Examples include project phase codes, CSI codes, takeoff sequence numbers, cost accounts, etc. Where identification codes are required, the generic IFC classification facility should be used.

Results

A cost item is modelled.

Description Entity/Pset/Functional Part MAN REC OPT
Set classification for the cost item
Cost items are frequently identified in cost schedules using a classification or identification code that can be further used for grouping cost items in various ways.
fp_associate_classification    
Set quantities for the cost item
Cost items that are sections (collections of cost items) may not require the provision of quantities.
IFC provides for various types of quantity measurement including count, length, area, volume, weight and time. Each of these is determined by a specific entity.
Quantities should be defined for those cost items that are to have an 'extended' cost value. That is, where a cost value is to be defined that is the multiplication of a quantity and another cost value.
The standard IFC schema does not capture the method used to derive any quantity values.
Quantity values may be set by the user or may be derived within an application from other quantities. However, local extension to the model may be used to define additional rules on the schema or external rules that can be used to derive quantity values.
fp_define_quantity    
Set the cost values that are to be associated with the cost item.
Cost values that are to be applied to a cost item may be additional to those that are to be applied to physical objects/processes etc. They include cost values that are derived by extension and cost values that are defined by addition of values in other cost items for collection. See example 4.
fp_associate_cost    
Establish the cost item        

Set the global unique identifier

IfcCostItem.GlobalId::IfcGloballyUniqueId    

Apply the owner history

IfcCostItem.OwnerHistory::fp_apply_owner_history    

Specify the name for the cost item


This is the principal text that would be used in the representation of the cost item in a cost schedule. See example 1

IfcCostItem.Name::IfcLabel    

Specify the description for the cost item


This is additional qualifying information that would be used in the representation of the cost item in a cost schedule. See example 1.

IfcCostItem.Description::IfcText    
Associate classification with the cost item
Where a classification or identification code is to be used with a cost item, it should be associated with the cost item. See example 2.
fp_associate_classification    
Define quantities for the cost item
Cost items that are sections (collections of cost items) may not require the provision of quantities.
Ensure that the related object is the required cost item.
Note that a quantity may be defined for several cost items. Generally, it is anticipated that a quantity will be defined for a particular cost item. The exception to this may be for a unit quantity where a single expression of the unit quantity may be applied to multiple cost items.
fp_define_quantity    
Associate cost values with the cost item
Note that several cost values may be associated with a cost item.
Local exchange requirements may define specific rules about the types of cost value that are to be associated with cost items in particular circumstances.
fp_associate_cost    
For cost items that are to nest other cost items
Nesting of cost items is used to build up composite rates (see example 3) or for collecting several individual cost items into a cost item section (see example 4)
This part assumes that the cost item has been established as defined above and that quantities have been defined for the cost item and that appropriate cost values have been determined and associated.
       

Determine the cost item to be used as the parent entity and the cost items to be used as child entities and assert these entities in the relationship

fp_nests [IfcCostItem]    
Additional properties
Additional properties may be defined for a cost item using property sets. These should be subject to local extension to exchange requirements and functional parts.
fp_define_by_properties    

IFC Entities Required

  • IfcControl
  • IfcCostItem
  • IfcObject
  • IfcRoot
  • IFC Datatypes Required
  • IfcGloballyUniqueId
  • IfcLabel
  • IfcText

IFC Functions Required

  • None

IDM Functional Parts Required

  • fp_apply_owner_history
  • fp_associate_classification
  • fp_associate_cost
  • fp_define_by_properties
  • fp_define_quantity
  • fp_nests

EXPRESS-G

EXPRESS

SCHEMA FP_MODEL_COST_ITEM;

  TYPE IfcGloballyUniqueId = STRING (22) FIXED;
  END_TYPE;

  TYPE IfcLabel = STRING;
  END_TYPE;

  TYPE IfcText = STRING;
  END_TYPE;

  ENTITY IfcObject
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcRoot);
      ObjectType : OPTIONAL IfcLabel;
    WHERE
      WR1 : SIZEOF(QUERY(temp <* IsDefinedBy | 'IFC2X2_FINAL.IFCRELDEFINESBYTYPE' IN TYPEOF(temp))) <= 1;
  END_ENTITY;

  ENTITY IfcRoot
    ABSTRACT SUPERTYPE;
      GlobalId     : IfcGloballyUniqueId;
      OwnerHistory : fp_apply_owner_history;
      Name         : OPTIONAL IfcLabel;
      Description  : OPTIONAL IfcText;
    UNIQUE
      UR1 : GlobalId;
  END_ENTITY;

  ENTITY IfcControl
    ABSTRACT SUPERTYPE
    SUBTYPE OF(IfcObject);
  END_ENTITY;

  ENTITY IfcCostItem
    SUBTYPE OF(IfcControl);
  END_ENTITY;

  ENTITY fp_apply_owner_history;
  END_ENTITY;

  ENTITY fp_define_by_properties;
  END_ENTITY;

  ENTITY fp_associate_cost;
  END_ENTITY;

  ENTITY fp_associate_classification;
  END_ENTITY;

  ENTITY fp_define_quantity;
  END_ENTITY;

  ENTITY fp_nests;
  END_ENTITY;

END_SCHEMA;

Examples of Cost Item

Example 1: Cost Item as a Line in a Cost Schedule

The following shows the development of a cost item that can be represented as a line in a cost schedule.
The example used is for an accumulated length of 15mm diameter copper pipe to some standard (identified her as SSS XYZ). The pipe is considered to have:

  • unit material cost of £7.76 per metre,
  • unit labor cost of £6.50 per metre
  • total unit cost of £14.26 per metre,
  • total cost of £855.60 for the quantity to be installed

A typical line in a cost schedule might look like the following:

Quantity Measure Description Name Unit Material Cost Unit Labor Cost Total Unit Cost Total Cost
60 m 15mm Cu Pipe to SSS XYZ 7.76 6.50 14.26 855.60

This breaks down into three IFC entities:

  • Quantity and measure are described by the entity IfcQuantityLength (which is a subtype of the IfcElementQuantity entity)
  • Description and Name are specific attributes of an instance of IfcCostItem
  • Unit and total costs are all separate instances of IfcCostValue; each type of cost being defined by the attribute IfcCostValue.CostType and the value being given by IfcCostValue.AppliedValue.

Quantity (as IfcQuantityLength.LengthValue) and measure (as IfcQuantityLength.Unit) are defined for a cost item through the relationship entity IfcRelDefinesByProperties. This is because IfcElementQuantity, which is the supertype of IfcQuantityLength, is itself a subtype of IfcPropertySetDefinition.
Cost values are associated with a cost item through the relationship entity IfcRelAssociatesAppliedValue. Each cost value is associated with a particular cost item through a separate relationship. Note however that is a cost value is to be used for several cost items, this can be captured via a single relationship instance (since many instances of IfcCostItem can be used as the related objects).
The use of main entities and relationship entities is described in the diagram below:

 /* ownership information*/
#2=IFCOWNERHISTORY(...);

/* instances of the IfcCostValue */
#10000=IFCCOSTVALUE($,$,#11000,#11801,$,$,'Unit Material Cost',$);
#10001=IFCCOSTVALUE($,$,#11001,#11801,$,$,'Unit Labor Cost',$);
#10002=IFCCOSTVALUE($,$,#11002,#11801,$,$,'Total Unit Cost',$);
#10003=IFCCOSTVALUE($,$,#11003,#11801,$,$,'Total Cost',$);

/* instance of IfcMeasureWithUnit that defines the actual value and currency*/
#11000=IFCMEASUREWITHUNIT(7.76,#12000);
#11001=IFCMEASUREWITHUNIT(6.50,#12000);
#11002=IFCMEASUREWITHUNIT(14.26,#12000);
#11003=IFCMEASUREWITHUNIT(855.60,#12000);

#11801= IFCMEASUREWITHUNIT(1,#11901);
#11901=IFCSIUNIT($,.METRE.);
#12000=IFCMONETARYUNIT(.GBP.);

/* instance of IfcCostItem using name and description attributes*/
#15001=IFCCOSTITEM('abcdefghijklmnopqrst15001',#2,'Cu Pipe to SSS XYZ','15mm',$);

/* association of instances IfcCostValue and IfcCostItem */
#15020=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15020',#2,$,$,(#15001),#10000);
#15021=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15021',#2,$,$,(#15001),#10001);
#15022=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15022',#2,$,$,(#15001),#10002);
#15023=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15023',#2,$,$,(#15001),#10003);

/* establishing quantities */
#16000=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16000',#2,$,$,'Method1',(#16500));
#16500=IFCQUANTITYLENGTH($,$,#17000,60.00);
#17000=IFCNAMEDUNIT(...);

/* definition of quantities for the cost item */
#18000=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18000',#2,$,$,(#15001),#16000)

Example 2: Identifying a Cost Item using Classification

Cost items frequently have a classified identifier that provides a further potential level of organization within a cost schedule. Such a classified identifier can be defined using the classification capabilities of the IFC schema. Either a complete classification specification can be defined using the IfcClassificationNotation entity (and related capabilities) or a lightweight classification can be applied using the IfcClassificationReference entity. Practically, it is considered that the lightweight classification method will be used more frequently and this is shown in the example below. For more information about applying complete classification, refer to the functional part document 'fp_associate_classification'.
In the example shown, a cost item is taken from a Norwegian bill of quantities. This has the name 'Betong C25 Finsats' which is a type of concrete. This can be classified with the item reference '8210' which has the short name 'BET C25F'. The source of the classification can be referenced as the Norwegian Standard NS3420 which could (optionally) have a location reference of 'http://www.standardsnorge.no/ns3420/betong.htm#8210' .

 /* ownership information*/
#2=IFCOWNERHISTORY(...);

#10=IFCCALENDARDATE(31,8,2004);
#20=IFCCLASSIFICATION('Standards Norge','3',#10,'NS3420');

#200=IFCCLASSIFICATIONREFERENCE ('www.standardsnorge.no/ns3420/betong.htm#8210','8210','BET C25F',#20);

#300=IFCRELASSOCIATESCLASSIFICATION(' abcdefghijklmnopqrst300',#1001,$,$,(#200),#15011);

/* instance of IfcCostItem using name and description attributes*/
#15011=IFCCOSTITEM('abcdefghijklmnopqrst15011',#2,'Betong C25F Finsats',$,$);

Example 3: Building up a Composite Cost Rate

Typically, in developing a cost schedule, many cost items are used to represent composite products. A composite product is an aggregation of several constituent products that are commonly used together.
The example used is for a wash hand basin which is consistently used with a supporting stand, two faucets (taps), a waste trap, pipework connection legs and two stopcocks. Rather than elaborate each of these items every time that the wash hand basin is used, it is better to define a composite item that incorporates all of the parts.
This can be done by developing each part as a cost item and then bringing them into a 'parent' cost item using the IfcRelNests relationship entity. Note that IfcRelNests is used rather than IfcRelAggregates since the same entity is being used for both the relating and the related objects.
In the cost items for the individual parts, quantities are applied as appropriate. However, in the composite item, the quantity applied is for one off (at the relevant unit of measure; in this the unit of measure is an item).
Note that in this example, the cost value(s) used in the composite rate may be derived from the cost values of the individual parts. The generic IFC schema does not contain the capability to capture the derivation for a cost item and therefore, this derivation may be lost in an exchange unless there is some other agreement. However, for local defined exchange requirements, additional rules may be applied that do enable capture of the derivation of composite rates. Additional rules may be either extensions to the IFC schema or external rules applied through a rule schema.
The use of cost item and nesting entities is described in the diagram below:

/* ownership information*/
#2=IFCOWNERHISTORY(...);

/* instances of the IfcCostValue */
#10000=IFCCOSTVALUE($,$,#11000,#11802,$,$,'Unit Material Cost',$);
#10001=IFCCOSTVALUE($,$,#11001,#11802,$,$,'Unit Labor Cost',$);
#10002=IFCCOSTVALUE($,$,#11002,#11802,$,$,'Total Unit Cost',$);
#10003=IFCCOSTVALUE($,$,#11003,#11802,$,$,'Total Cost',$);
#10100=IFCCOSTVALUE($,$,#11100,#11802,$,$,'Unit Material Cost',$);
#10101=IFCCOSTVALUE($,$,#11101,#11802,$,$,'Unit Labor Cost',$);
#10102=IFCCOSTVALUE($,$,#11102,#11802,$,$,'Total Unit Cost',$);
#10103=IFCCOSTVALUE($,$,#11103,#11802,$,$,'Total Cost',$);
#10200=IFCCOSTVALUE($,$,#11200,#11802,$,$,'Unit Material Cost',$);
#10201=IFCCOSTVALUE($,$,#11201,#11802,$,$,'Unit Labor Cost',$);
#10202=IFCCOSTVALUE($,$,#11202,#11802,$,$,'Total Unit Cost',$);
#10203=IFCCOSTVALUE($,$,#11203,#11802,$,$,'Total Cost',$);
#10300=IFCCOSTVALUE($,$,#11300,#11802,$,$,'Unit Material Cost',$);
#10301=IFCCOSTVALUE($,$,#11301,#11802,$,$,'Unit Labor Cost',$);
#10302=IFCCOSTVALUE($,$,#11302,#11802,$,$,'Total Unit Cost',$);
#10303=IFCCOSTVALUE($,$,#11303,#11802,$,$,'Total Cost',$);
#10400=IFCCOSTVALUE($,$,#11400,#11801,$,$,'Unit Material Cost',$);
#10401=IFCCOSTVALUE($,$,#11401,#11801,$,$,'Unit Labor Cost',$);
#10402=IFCCOSTVALUE($,$,#11402,#11801,$,$,'Total Unit Cost',$);
#10403=IFCCOSTVALUE($,$,#11403,#11801,$,$,'Total Cost',$);
#10500=IFCCOSTVALUE($,$,#11500,#11802,$,$,'Unit Material Cost',$);
#10501=IFCCOSTVALUE($,$,#11501,#11802,$,$,'Unit Labor Cost',$);
#10502=IFCCOSTVALUE($,$,#11502,#11802,$,$,'Total Unit Cost',$);
#10503=IFCCOSTVALUE($,$,#11503,#11802,$,$,'Total Cost',$);
#10600=IFCCOSTVALUE($,$,#11600,#11802,$,$,'Unit Rate',$);

/* instance of IfcMeasureWithUnit that defines the actual value and currency*/
#11000=IFCMEASUREWITHUNIT(142.50,#12000);
#11001=IFCMEASUREWITHUNIT(68.30,#12000);
#11002=IFCMEASUREWITHUNIT(210.80,#12000);
#11003=IFCMEASUREWITHUNIT(210.80,#12000);
#11100=IFCMEASUREWITHUNIT(78.75,#12000);
#11101=IFCMEASUREWITHUNIT(45.25,#12000);
#11102=IFCMEASUREWITHUNIT(124.00,#12000);
#11103=IFCMEASUREWITHUNIT(124.00,#12000);
#11200=IFCMEASUREWITHUNIT(24.97,#12000);
#11201=IFCMEASUREWITHUNIT(14.33,#12000);
#11202=IFCMEASUREWITHUNIT(39.30,#12000);
#11203=IFCMEASUREWITHUNIT(78.60,#12000);
#11300=IFCMEASUREWITHUNIT(28.78,#12000);
#11301=IFCMEASUREWITHUNIT(11.64,#12000);
#11302=IFCMEASUREWITHUNIT(40.42,#12000);
#11303=IFCMEASUREWITHUNIT(40.42,#12000);
#11400=IFCMEASUREWITHUNIT(7.76,#12000);
#11401=IFCMEASUREWITHUNIT(6.50,#12000);
#11402=IFCMEASUREWITHUNIT(14.26,#12000);
#11403=IFCMEASUREWITHUNIT(42.78,#12000);
#11500=IFCMEASUREWITHUNIT(18.51,#12000);
#11501=IFCMEASUREWITHUNIT(9.00,#12000);
#11502=IFCMEASUREWITHUNIT(27.51,#12000);
#11503=IFCMEASUREWITHUNIT(55.02,#12000);
#11600=IFCMEASUREWITHUNIT(551.62,#12000);

#11801= IFCMEASUREWITHUNIT(1,#11901);
#11802=IFCCONTEXTDEPENDENTUNIT(#11701,.USERDEFINED.,'item');
#11901=IFCSIUNIT($,.METRE.);
#11902=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
#12000=IFCMONETARYUNIT(.GBP.);

/* instance of IfcCostItem using name and description attributes*/
#15001=IFCCOSTITEM('abcdefghijklmnopqrst15001',#2,'ABC wash basin type 123',$,$);
#15002=IFCCOSTITEM('abcdefghijklmnopqrst15002',#2,'ABC wash basin stand type 123/S','15mm',$);
#15003=IFCCOSTITEM('abcdefghijklmnopqrst15003',#2,'ABC faucet type F28/Z46','15mm',$);
#15004=IFCCOSTITEM('abcdefghijklmnopqrst15004',#2,'ABC waste trap type W41P','28mm',$);
#15005=IFCCOSTITEM('abcdefghijklmnopqrst15005',#2,'Cu Pipe to SSS XYZ','15mm',$);
#15006=IFCCOSTITEM('abcdefghijklmnopqrst15006',#2,'Cheshire stopcock fig 111X','15mm',$);
#15007=IFCCOSTITEM('abcdefghijklmnopqrst15007',#2,'ABC wash basin type 123 installed','Rate',$);

/* association of instances IfcCostValue and IfcCostItem */
#15020=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15020',#2,$,$,(#15001),#10000);
#15021=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15021',#2,$,$,(#15001),#10001);
#15022=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15022',#2,$,$,(#15001),#10002);
#15023=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15023',#2,$,$,(#15001),#10003);
#15120=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15120',#2,$,$,(#15002),#10100);
#15121=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15121',#2,$,$,(#15002),#10101);
#15122=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15122',#2,$,$,(#15002),#10102);
#15123=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15123',#2,$,$,(#15002),#10103);
#15220=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15220',#2,$,$,(#15003),#10200);
#15221=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15221',#2,$,$,(#15003),#10201);
#15222=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15222',#2,$,$,(#15003),#10202);
#15223=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15223',#2,$,$,(#15003),#10203);
#15320=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15320',#2,$,$,(#15004),#10300);
#15321=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15321',#2,$,$,(#15004),#10301);
#15322=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15322',#2,$,$,(#15004),#10302);
#15323=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15323',#2,$,$,(#15004),#10303);
#15420=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15420',#2,$,$,(#15005),#10400);
#15421=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15421',#2,$,$,(#15005),#10401);
#15422=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15422',#2,$,$,(#15005),#10402);
#15423=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15423',#2,$,$,(#15005),#10403);
#15520=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15520',#2,$,$,(#15006),#10500);
#15521=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15521',#2,$,$,(#15006),#10501);
#15522=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15522',#2,$,$,(#15006),#10502);
#15523=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15523',#2,$,$,(#15006),#10503);
#15620=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15620',#2,$,$,(#15007),#10600);

/* establishing quantities */
#16000=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16000',#2,$,$,'Method1',(#16500));
#16001=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16001',#2,$,$,'Method1',(#16501));
#16002=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16002',#2,$,$,'Method1',(#16502));
#16003=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16003',#2,$,$,'Method1',(#16503));
#16004=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16004',#2,$,$,'Method1',(#16504));
#16005=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16005',#2,$,$,'Method1',(#16505));
#16006=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16006',#2,$,$,'Method1',(#16506));
#16500=IFCQUANTITYCOUNT($,$,$,1);
#16501=IFCQUANTITYCOUNT($,$,$,1);
#16502=IFCQUANTITYCOUNT($,$,$,2);
#16503=IFCQUANTITYCOUNT($,$,$,1);
#16504=IFCQUANTITYLENGTH($,$,#17000,3.00);
#16505=IFCQUANTITYCOUNT($,$,$,2);
#16506=IFCQUANTITYCOUNT($,$,$,1);
#17000=IFCNAMEDUNIT(...);

/* definition of quantities for the cost item */
#18000=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18000',#2,$,$,(#15001),#16000)
#18001=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18001',#2,$,$,(#15002),#16001)
#18002=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18002',#2,$,$,(#15003),#16002)
#18003=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18003',#2,$,$,(#15004),#16003)
#18004=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18004',#2,$,$,(#15005),#16004)
#18005=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18005',#2,$,$,(#15006),#16005)
#18006=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18006',#2,$,$,(#15007),#16006)

Example 4: Collecting Cost Items into a Section

Cost items are typically grouped into sections within a cost schedule. Sections may themselves be further grouped. Each section is defined as an occurrence of IfcCostItem which nests other cost items. This is similar to creating a composite cost item except that the objective is to obtain the total cost of a set of fully quantified cost items that are usually of a similar type.
For example, a section may contain the various sizes of copper pipe used for a part of the building works and establish the total cost of copper pipe used. This can be seen from the diagram below:

/* ownership information*/
#2=IFCOWNERHISTORY(...);

/* instances of the IfcCostValue */
#10000=IFCCOSTVALUE($,$,#11000,#11801,$,$,'Unit Material Cost',$);
#10001=IFCCOSTVALUE($,$,#11001,#11801,$,$,'Unit Labor Cost',$);
#10002=IFCCOSTVALUE($,$,#11002,#11801,$,$,'Total Unit Cost',$);
#10003=IFCCOSTVALUE($,$,#11003,#11801,$,$,'Total Cost',$);
#10100=IFCCOSTVALUE($,$,#11100,#11801,$,$,'Unit Material Cost',$);
#10101=IFCCOSTVALUE($,$,#11101,#11801,$,$,'Unit Labor Cost',$);
#10102=IFCCOSTVALUE($,$,#11102,#11801,$,$,'Total Unit Cost',$);
#10103=IFCCOSTVALUE($,$,#11103,#11801,$,$,'Total Cost',$);
#10200=IFCCOSTVALUE($,$,#11200,#11801,$,$,'Unit Material Cost',$);
#10201=IFCCOSTVALUE($,$,#11201,#11801,$,$,'Unit Labor Cost',$);
#10202=IFCCOSTVALUE($,$,#11202,#11801,$,$,'Total Unit Cost',$);
#10203=IFCCOSTVALUE($,$,#11203,#11801,$,$,'Total Cost',$);
#10300=IFCCOSTVALUE($,$,#11300,#11801,$,$,'Unit Material Cost',$);
#10301=IFCCOSTVALUE($,$,#11301,#11801,$,$,'Unit Labor Cost',$);
#10302=IFCCOSTVALUE($,$,#11302,#11801,$,$,'Total Unit Cost',$);
#10303=IFCCOSTVALUE($,$,#11303,#11801,$,$,'Total Cost',$);
#10400=IFCCOSTVALUE($,$,#11400,#11801,$,$,'Unit Material Cost',$);
#10401=IFCCOSTVALUE($,$,#11401,#11801,$,$,'Unit Labor Cost',$);
#10402=IFCCOSTVALUE($,$,#11402,#11801,$,$,'Total Unit Cost',$);
#10403=IFCCOSTVALUE($,$,#11403,#11801,$,$,'Total Cost',$);
#10500=IFCCOSTVALUE($,$,#11500,#11801,$,$,'Unit Material Cost',$);
#10501=IFCCOSTVALUE($,$,#11501,#11801,$,$,'Unit Labor Cost',$);
#10502=IFCCOSTVALUE($,$,#11502,#11801,$,$,'Total Unit Cost',$);
#10503=IFCCOSTVALUE($,$,#11503,#11801,$,$,'Total Cost',$);
#10600=IFCCOSTVALUE($,$,#11600,#11801,$,$,'Unit Rate',$);

/* instance of IfcMeasureWithUnit that defines the actual value and currency*/
#11000=IFCMEASUREWITHUNIT(7.76,#12000);
#11001=IFCMEASUREWITHUNIT(6.50,#12000);
#11002=IFCMEASUREWITHUNIT(14.26,#12000);
#11003=IFCMEASUREWITHUNIT(855.60,#12000);
#11100=IFCMEASUREWITHUNIT(9.15,#12000);
#11101=IFCMEASUREWITHUNIT(6.50,#12000);
#11102=IFCMEASUREWITHUNIT(15.65,#12000);
#11103=IFCMEASUREWITHUNIT(547.75,#12000);
#11200=IFCMEASUREWITHUNIT(10.20,#12000);
#11201=IFCMEASUREWITHUNIT(7.50,#12000);
#11202=IFCMEASUREWITHUNIT(17.70,#12000);
#11203=IFCMEASUREWITHUNIT(354.00,#12000);
#11300=IFCMEASUREWITHUNIT(11.20,#12000);
#11301=IFCMEASUREWITHUNIT(7.50,#12000);
#11302=IFCMEASUREWITHUNIT(18.70,#12000);
#11303=IFCMEASUREWITHUNIT(374.00,#12000);
#11400=IFCMEASUREWITHUNIT(12.91,#12000);
#11401=IFCMEASUREWITHUNIT(9.00,#12000);
#11402=IFCMEASUREWITHUNIT(21.91,#12000);
#11403=IFCMEASUREWITHUNIT(219.10,#12000);
#11600=IFCMEASUREWITHUNIT(2350.45,#12000);

#11801= IFCMEASUREWITHUNIT(1,#11901);
#11901=IFCSIUNIT($,.METRE.);
#12000=IFCMONETARYUNIT(.GBP.);

/* instance of IfcCostItem using name and description attributes*/
#15001=IFCCOSTITEM('abcdefghijklmnopqrst15001',#2,'Cu Pipe to SSS XYZ','15mm',$);
#15002=IFCCOSTITEM('abcdefghijklmnopqrst15002',#2,'Cu Pipe to SSS XYZ','22mm',$);
#15003=IFCCOSTITEM('abcdefghijklmnopqrst15003',#2,'Cu Pipe to SSS XYZ','28mm',$);
#15004=IFCCOSTITEM('abcdefghijklmnopqrst15004',#2,'Cu Pipe to SSS XYZ','35mm',$);
#15005=IFCCOSTITEM('abcdefghijklmnopqrst15005',#2,'Cu Pipe to SSS XYZ','42mm',$);
#15007=IFCCOSTITEM('abcdefghijklmnopqrst15007',#2,'Cu Pipe to SSS XYZ',$,$);

/* association of instances IfcCostValue and IfcCostItem */
#15020=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15020',#2,$,$,(#15001),#10000);
#15021=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15021',#2,$,$,(#15001),#10001);
#15022=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15022',#2,$,$,(#15001),#10002);
#15023=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15023',#2,$,$,(#15001),#10003);
#15120=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15120',#2,$,$,(#15002),#10100);
#15121=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15121',#2,$,$,(#15002),#10101);
#15122=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15122',#2,$,$,(#15002),#10102);
#15123=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15123',#2,$,$,(#15002),#10103);
#15220=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15220',#2,$,$,(#15003),#10200);
#15221=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15221',#2,$,$,(#15003),#10201);
#15222=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15222',#2,$,$,(#15003),#10202);
#15223=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15223',#2,$,$,(#15003),#10203);
#15320=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15320',#2,$,$,(#15004),#10300);
#15321=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15321',#2,$,$,(#15004),#10301);
#15322=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15322',#2,$,$,(#15004),#10302);
#15323=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15323',#2,$,$,(#15004),#10303);
#15420=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15420',#2,$,$,(#15005),#10400);
#15421=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15421',#2,$,$,(#15005),#10401);
#15422=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15422',#2,$,$,(#15005),#10402);
#15423=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15423',#2,$,$,(#15005),#10403);
#15620=IFCRELASSOCIATESAPPLIEDVALUE('abcdefghijklmnopqrst15620',#2,$,$,(#15007),#10600);

/* establishing quantities */
#16000=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16000',#2,$,$,'Method1',(#16500));
#16001=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16001',#2,$,$,'Method1',(#16501));
#16002=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16002',#2,$,$,'Method1',(#16502));
#16003=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16003',#2,$,$,'Method1',(#16503));
#16004=IFCELEMENTQUANTITY('abcdefghijklmnopqrst16004',#2,$,$,'Method1',(#16504));
#16500=IFCQUANTITYLENGTH($,$,#17000,60.00);
#16501=IFCQUANTITYLENGTH($,$,#17000,35.00);
#16502=IFCQUANTITYLENGTH($,$,#17000,20.00);
#16503=IFCQUANTITYLENGTH($,$,#17000,20.00);
#16504=IFCQUANTITYLENGTH($,$,#17000,10.00);
#17000=IFCNAMEDUNIT(...);

/* definition of quantities for the cost item */
#18000=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18000',#2,$,$,(#15001),#16000)
#18001=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18001',#2,$,$,(#15002),#16001)
#18002=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18002',#2,$,$,(#15003),#16002)
#18003=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18003',#2,$,$,(#15004),#16003)
#18004=IFCRELDEFINESBYPROPERTIES('abcdefghijklmnopqrst18004',#2,$,$,(#15005),#16004)

/* nesting the cost items */
#19001=IFCRELNESTS('abcdefghijklmnopqrst19001',#2,$,$,#15007,(#15001,#15002,#15003,#15004,#15005));

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.1.3 Build:#408 Jan 23, 2006) - Bug/feature request - Contact Administrators