Ifd:Ifc naming convention in Ifd

To ensure an uniform import and export of Ifc data in Ifd the following naming conventions will have to be followed for anyone wanting to import Ifc data to the Ifd library.

Please remember to always use searchForDuplicates before adding to the Ifd library!

Adding the Ifc schema version
Each version of the Ifc schema is treated as a different language in Ifd. This allows for different versions of the Ifc schema to coexist within the library thus enabling visualizations of the differences. If the relevant version of the Ifc schema doesn't exist it needs to be added. Use the addLanguages and set the following values for the IfdLangage attributes:


 * guid - don't add. It will be generated.
 * name_in_english - Use IFC in uppercase
 * name_in_self - Use IFC followed by a space and the version number, e.g: IFC 2x2
 * language_code - Use ifc in small case followed by a minus and the version number in upper case. E.g. ifc-2X2

Adding Ifc entity types
The naming of entity types from the Ifc schema is done simply by adding the name as it is and setting the name_in_self for the language = the Ifc version. To add an enity from the Ifc schema you need to:
 * 1) create a new variable of type IfdConcept
 * 2) Set IfdConcept.concept_type = the concept type. E.g SUBJECT for IfcDoor
 * 3) Add the new concept to the IfdLibrary by using the function addConcepts
 * 4) create a new variable of type IfdName
 * 5) Set IfdName.language.name_in_self = the schema version. E.g = IFC 2x2. Preferably use IfdName.language.guid if you know the GUID for the Ifc schema version.
 * 6) Set IfdName.name = the entity name. E.g. IfcDoor. (Use mixed case as in the schema)
 * 7) Set IfdName.name_type = FULLNAME
 * 8) Add the name to the concept using addNamesToConcept
 * 9) create a new variable of type IfdDescription
 * 10) Set IfdDescription.language.name_in_self = the same as for name above.
 * 11) Set IfdDescription.description = the formal definition of the entity from IAI. Remove any HTML formatting.
 * 12) Set IfdDescription.description_type = DEFINITION
 * 13) Add the name to the concept using addDefinitionsToConcept

Adding Ifc enumeration types
Adding enumeration types is a nearly identical process to adding an entity type, but in step 2.2 do the following: IfcDoorStyleOperationEnum.SINGLE_SWING_RIGHT Follow the rest of the steps from Adding Ifc entity types
 * Set IfdName.name = the enumeration type name . (dot) the enumeration name. E.g. :

Adding Ifc entity attributes
Adding eneumeration types is a nearly identical process to adding an entity type, but in step 1.1 do the following: and in step 2.2 do the following: IfcDoor.OverallHeigt Follow the rest of the steps from Adding Ifc entity types. Not all attributes from Ifc should be added. Only those that have corresponding concepts in the Ifd library.
 * Set IfdConcept.concept_type = PROPERTY
 * Set IfdName.name = the entity name . (dot) the attribute name. E.g. :

Adding Ifc property-sets
Again the steps to perform is nearly identical. The property set itself is treated as a collection of type IfdNest in Ifd. Use the step-by-step guide for Adding Ifc entity types with the following differences: Pset_WasteTerminalTypeGullySump Use mixed case like in the filename for the corresponding xml property-set file. Follow the rest of the steps from Adding Ifc entity types.
 * In 1.1 Set IfdConcept.concept_type = NEST
 * In 2.2 Set IfdName.name = the name of the propertyset E.g. :

Adding properties from Ifc property-sets
Again the steps to perform is nearly identical. Each property will be of type IfdProperty in Ifd. Use the step-by-step guide for Adding Ifc entity types with the following differences: Pset_WasteTerminalTypeGullySump.NominalSumpLength Use mixed case equal to the name used in the xml property-set file. Follow the rest of the steps from Adding Ifc entity types.
 * In 1.1 Set IfdConcept.concept_type = PROPERTY
 * In 2.2 Set IfdName.name = the name of the propertyset . (dot) name of the property E.g. :

Created by: Lars Bjørkhaug - SINTEF building and infrastructure