Creating custom IFC properties in ARCHICAD 19


Many of the data fields required to transfer data to other parties are already defined in the IFC (ISO 16739:2013) standard with additional properties also prescribed in COBie 2.4 / BS 1192-4:2014. A further 9 standard data fields have also been defined by NBS in the UK in their NBS BIM Object Standard. These 4 standards form the basis for data to be built around an open workflow for projects in the UK.

However, these standards don’t fully cover all the data requirements of a typical project and it is therefore necessary to supplement this data with further data fields. This blog piece looks in depth at how custom IFC properties are created within GRAPHISOFT ARCHICAD.

Note: This piece primarily covers IFC2x3 and ARCHICAD 19 and there will be differences with previous and future versions of IFC and ARCHICAD.

Where to add user defined custom Properties

Users have 3 choices about where they add additional properties. These are:

  1. Element/Component Tags & Categories – Properties are added through Tags & Categories > Manage IFC Properties > New Property / Classification. Adding properties to this level means they will only be available to the user for the Element/Components they have been added. They can not be added through this method for Type, Project, Site, Building, BuildingStorey (Floor), Space, Zone, System or Actor. Note: Properties added at an Element/Component level can be merged into the IFC Scheme using the Get Current Project Settings function.
  2. Add new property to Scheme Setup from Tags & Categories – Properties are added to the IFC Scheme by selecting the tick box at the bottom of the dialogue that says “Add new property to Scheme Setup at the selected level of the model hierarchy“. This is a new function in ARCHICAD 19. This allows a user to use method one but automatically push the data to the IFC Scheme. This is a nice addition as it means users don’t need to even look at the IFC Scheme. The only exception would be if additional project data is required at Zone, Type or System level. This workflow is fine though if a user truly understands the IFC tree structure but I suspect this will be too much to expect from the average user.
  3. IFC Scheme Setup – Properties are added through File > File Special > IFC2x3 > IFC Scheme Setup… > New Property / Classification. Properties created here will be available to the user at the level they have been added. As it is a tree structure, anything below in the tree will have this property available. So if you want a property available for every Element/Component then add it at (IfcElement) level or if you want it for every Type then add it at (IfcTypeProduct) level. Alternatively add data at a specific Element/Component or Type level. Properties can also be added to Project, Site, Building, BuildingStorey (Floor), Space, Zone, System and Actor.

Personally I believe that Properties should all be added at the IFC Scheme Setup level so only methods 2 & 3 should be used. This approach provides greater consistency across a project and is also clearer to users.

ARCHICAD dialogue for adding a Custom IFC Property

The ARCHICAD dialogue for adding a new IFC Property looks like this:

Screen Shot 2015-09-01 at 11.41.08

Image: Create New IFC Property / Classification dialogue in ARCHICAD

For the purposes of this blog we will not be looking at Classification Reference and will focus on the Custom IFC Property section of the dialogue. There are four aspects to understand when creating a new Property. These are the Property Set name, Property name, Property type and Value type. We will look at each of these individually in this post.

1. Property Set name

The first step in creating a user defined custom property is to create a Property Set for this property to be contained within. A Property Set is basically a folder for the Property to be stored within. This essentially gives a logical structure to the data and means users are not left managing endless lists of Properties.

The concept of Property Sets is often overlooked by those not focussed on open standards. We often see lists of field names but no information on which property set to provide this information within. It would also mean the recipient mapping for every company they receive data from. Of course we could put it where we like but in the long term this will provide no consistency or efficiency from one company to the next.

Whilst there are no defined standards for Property Set naming, theoretically you can name these how you want. However it makes sense that in creating user defined Property Sets that you follow a consistent, logical and well thought out approach. You may of course be asked to provide data to others requirements but where you can determine there should be a consistent approach.

The main rule is don’t name a Property Set so that it starts with Pset_. Anything starting with Pset_ is from the IFC standard (ISO 16739:2013) so it is important that user defined names don’t conflict and it is clear to the receiver that these have been added by the author. Also avoid COBie_ (although its unlikely you would want to use this anyway!) for the same reason.

One advantage of this means that mapping to standard Property Sets can be created for other tools. If additional mapping is then required for projects then it will be clear which have been added by the author and so the person creating the mapping will have a lot less work to do.

So the general advice is to put a company identifier at the front. For example for us we would put BBA_ at the front of the Property Set. E.g. BBA_Pset_General. Of course you could omit Pset completely although I think it is useful to see this is different from a property. Omitting Pset is an approach taken by both COBie and NBS. In my view the name part should be CamelCase in line with the standard property sets.

One slight issue with this approach is for those creating templates for other parties to use. This came up in a discussion recently with other ARCHICAD users who develop free and commercially available templates. Not knowing the company name would mean customisation for every end user. It would also prevent templates being developed with standard Schedules and Favorites. This seems wasteful so it makes more sense to perhaps name Property Sets Additional_ so that templates can be preset for all template users. E.g. Additional_Pset_General.

This approach would also be more consistent where clients want to specify their own specific data requirements. Having client codes would confuse matters as projects could end up with duplicate property sets one with the model authors codes and one with client codes.

I have considered changing our own approach along these lines. Of course it has massive knock on effects to Interactive Schedules and Favorites so it would be a time consuming task to change. However, I believe it is imperative that a common standard (or as a minimum general guidance) should be agreed in due course. I will continue to push this item at buildingSMART UK&I Technical meetings and it maybe something that can be added to the AEC (UK) BIM Technology Protocol if isn’t agreed with buildingSMART.

2. Property name

Once you have either created a new Property Set or selected one you have already added previously you are ready to add a new field of data, a Property.

All standard properties in IFC2x3, IFC4, COBie 2.4 and BS 1192-4:2014 are all shown as CamelCase. It therefore makes most sense to follow this approach for all user defined custom properties. For example you may want to create a property for a Hardware Set, this would be written as HardwareSet.

I would also suggest that property names should only contain letters as again this is how the aforementioned standards are written. This is how our approach has been developed. Deviating from this approach may lead to issues with other software so I would advise fully testing if you decide to take a different approach.

3. Property types

So once you have created the folder (Property Set) and data field (Property) you then need to select what type of data you want the property to be.

Screen Shot 2015-09-01 at 11.09.49

Image: Property types in ARCHICAD 19

There are 6 options to choose from:

(all definitions are from the buildingSMART technical website for IFC2x3)

  1. Single Value – A property with a single value (IfcPropertySingleValue) defines a property object which has a single (numeric or descriptive) value assigned. It defines a property – single value combination for which the property name, the value with measure type (and optionally the unit) is given.
  2. Enumerated Value – A property with an enumerated value (IfcPropertyEnumeratedValue) defines a property object which has a value assigned which is chosen from an enumeration. It defines a property – value combination for which the property name, the value with measure type (and optional the unit) are given.
  3. Bounded Value – A property with a bounded value (IfcPropertyBoundedValue) defines a property object which has a maximum of two (numeric or descriptive) values assigned, the first value specifying the upper bound and the second value specifying the lower bound. It defines a property – value bound (min-max) combination for which the property name, the upper bound value with measure type, the lower bound value with measure type (and optional the unit) is given.
  4. Table Value – A property with a range value (IfcPropertyTableValue) defines a property object which has two lists of (numeric or descriptive) values assigned, the values specifying a table with two columns. The defining values provide the first column and establish the scope of the IfcPropertyTableValue. An optional Expression attribute may give the equation used for deriving the range value, which is for information purposes only. The IfcPropertyTableValue defines a defining/defined property value combination for which the property name, the table with defining and defined values with measure type (and optional the units for defining and defined values) are given.
  5. List Value – An IfcPropertyListValue defines a property that has several (numeric or descriptive) values assigned, these values are given by an order list. An IfcPropertyListValue is a list of values. The order in which values appear is significant. Each value in the list is unique. i.e. no duplicate values are allowed. All list members should be of the same type.
  6. Referenced Value – The IfcPropertyReferenceValue allows  a property value to be given by referencing other entities within the resource definitions of IFC. Those other entities are regarded as predefined complex properties and can be aggregated within a property set (IfcPropertySet). The allowable entities to be used as value references are given by the IfcObjectReferenceSelect. Note: Choosing a Reference Value will automatically set the Value type to an IfcCalendarDate.

This list can seem pretty technical and perhaps not particularly user friendly in places. All of it is drawn from the buildingSMART standard so its not really an ARCHICAD task to make it simpler. It would be handy if links could be added to the technical pages so users can instantly get to more information. Alternatively it could be built into the software and perhaps also provide some plain language explanation and/or screenshot examples.

To conclude this section, if in doubt stick with Single Value. This is the most basic but if you only want to create a field to put some text, a numerical value or map a piece of data to the field then this will do the job.

4. Value types

The final part is to define what sort of data we want to create.

The value list provided within ARCHICAD 19 is fully compatible with the IFC standard.

When a user chooses to select a Value type the list is condensed to the most common Value types. The default is IfcLabel. These 9 common Value types are as follows:

(all definitions are from the buildingSMART technical website for IFC2x3)

  1. IfcBoolean – A defined data type of simple data type Boolean. (Required since a select type, i.e. IfcSimpleValue, cannot include directly simple types in its select list). A boolean type can have value TRUE or FALSE. Examples: IsExternal, IsCombustible, Loadbearing, ExtendToStructure, Compartmentation, FireExit, SmokeStop, SelfClosing, IsExtendedWarranty or AffectsSurroundings.
  2. IfcIdentifier – An identifier is an alphanumeric string which allows an individual thing to be identified. It may not provide natural-language meaning. Examples: LayerName, ArticleNumber, BarCode, BatchReference, SerialNumber, WarrantyIdentifier and Reference.
  3. IfcInteger – A defined type of simple data type Integer. (Required since a select type, i.e. IfcSimpleValue, cannot include directly simple types in its select list). In principle, the domain of IfcInteger (being an Integer) is all integer numbers. Here the number of bits used for the IfcInteger representation is unconstrained, but in practice it is implementation specific.
  4. IfcLabel – A label is the term by which something may be referred to. It is a string which represents the human-interpretable name of something and shall have a natural-language meaning. Examples: Manufacturer, ModelLabel, ModelReference, ProductionYear or SurfaceSpreadOfFlame.
  5. IfcLengthMeasure – A length measure is the value of a distance. Usually measured in millimeters (mm).
  6. IfcLogical – A defined type of simple type logical. (Required since a select type, i.e. IfcSimpleValue, cannot include directly simple types in its select list). Logical datatype can have values TRUE, FALSE or UNKNOWN.
  7. IfcRatioMeasure – A ratio measure is the value of the relation between two physical quantities that are of the same kind. NOTE: Input given in percent is to be divided by 100% when stored as an IfcRatioMeasure. E.g. 25% becomes 0.25.
  8. IfcReal – A defined type of simple data type REAL (required since a select type, i.e. IfcSimpleValue, cannot include directly simple types in its select list). In principle, the domain of IfcReal (being a Real) is all rational, irrational and scientific real numbers. Here the precision is unconstrained, but in practice it is implementation specific.
  9. IfcText – A text is an alphanumeric string of characters which is intended to be read and understood by a human being. It is for information purposes only. Examples: Description, LocalContext, Exclusions, WarrantyContext, RiskCause or SpecialInstructions.

Screen Shot 2015-09-01 at 11.09.58

Image: Value list available to users in ARCHICAD (before expanding)

A user can choose More Types… for the full list. In total within the IFC2x3 schema there are 117 different Value types available for a user to select from.

Note: Value types are referred to as Defined types on the buildingSMART website.

The following list is provided as a resource for ARCHICAD users wanting to understand what each value type is for.

(all definitions are from the buildingSMART technical website for IFC2x3 and from the buildingSMART documentation for IFC4)

  1. IfcAbsorbedDoseMeasure – A measure of the absorbed radioactivity dose. Usually measured in Gray (Gy, J/kg).
  2. IfcAccelerationMeasure – A measure of acceleration. Usually measured in m/s2.
  3. IfcAmountOfSubstanceMeasure – An amount of substance measure is a value for the quantity of a substance when compared with the number of atoms in 0.012kilogram of carbon 12. Usually measured in mole (mol).
  4. IfcAngularVelocityMeasure – A measure of velocity of a body measured in terms of angle subtended per unit time. Usually measured in radians/s.
  5. IfcAreaDensityMeasure – IFC4 only. A measure of the density of a two-dimensional object and is calculated as the mass per unit area. Usually measured in kg/m2.
  6. IfcAreaMeasure – An area measure is the value of the extent of a surface. Usually measured in (m2).
  7. IfcBooleanSee list above.
  8. IfcBoxAlignment – The box alignment specifies the alignment of the text box relative to its position. The following string values shall be used: top-left, top-middle, top-right, middle-left, center, middle-right, bottom-left, bottom-middle and bottom-right. NOTE: The top-left is the default value.
  9. IfcCardinalPointReference – IFC4 only. An index reference to significant points of a section profile. This index is used to describe the spatial relationship between the section of a member and a reference axis of the same member.
  10. IfcComplexNumber – Representation of a complex number expressed as an array  with two elements. The first element (index 1) denotes the real component. i.e. the numerical component of a complex number whose square roots can be calculated explicitly. The second element (index 2) denotes the imaginary component, i.e. numerical component of a complex number whose square roots cannot be determined other than through the provision of the square of the imaginary number j where j^2 = -1. Note that the imaginary component may be referred to as i in certain references.
  11. IfcCompoundPlaneAngleMeasure – A compound measure of plane angle in degrees, minutes, seconds, and optionally millionth-seconds of arc. NOTE: IfcCompoundPlaneAngleMeasure is used where angles need to be described to an accuracy as fine as one millionth of a degree and expressed as parts of an arc. It may be used for angular measurement by surveyors or for other angular measurements where precision is required. Another usage is exact or approximate global positioning against a geographic coordinate systems using longitude and latitude.
  12. IfcContextDependentMeasure – Is the value of a physical quantity as defined by an application context.
  13. IfcCountMeasure – A count measure is the value of a count.
  14. IfcCurvatureMeasure – A measure for curvature, which is defined as the change of slope per length. This is typically a computed value in structural analysis. It is usually measured in rad/m.
  15. IfcDateTime – IFC4 only. The IfcDataTime identifies a particular point in time, expressed by hours, minutes and optional seconds elapsed within a calender day, expressed by year, calender month and day in month. It is expressed by a string value following a particular lexical representation. This lexical representation for IfcDataTime is YYYY-MM-DDThh:mm:ss where “YYYY” represent the year, “MM” the month and “DD” the day, preceded by an optional leading “-” sign to indicate a negative year number. If the sign is omitted, “+” is assumed. The letter “T” is the date/time separator and “hh”, “mm”, “ss” represent hour, minute and second respectively. Additional digits can be used to increase the precision of fractional seconds if desired i.e the format… with any number of digits after the decimal point is supported. The fractional seconds part is optional; other parts of the lexical form are not optional. To accommodate year values greater than 9999 additional digits can be added to the left of this representation. Leading zeros are required if the year value would otherwise have fewer than four digits; otherwise they are forbidden. The year 0000 is prohibited.
  16. IfcDayInMonthNumber – The position of the specified day in a month.
  17. IfcDateInWeekNumber – IFC4 only. The IfcDayInWeekNumber is an integer that defines the position of the specified day in a week. The positions have the following meaning that assigns the ordinal day number in the week to the Calendar day name. Ordinal day numbers map to calendar days as follows: 1: Monday; 2: Tuesday; 3: Wednesday; 4: Thursday; 5: Friday; 6: Saturday; 7: Sunday.
  18. IfcDaylightSavingHour – The positive integer value by which clock time is offset from solar time at the particular location. (IFC2x3 only. Removed in IFC4)
  19. IfcDescriptiveMeasure – A descriptive measure is a human interpretable definition of a quantifiable value.
  20. IfcDimensionCount – A dimension count is a positive integer used to define the coordinate space dimensionality.
  21. IfcDoseEquivalentMeasure – A measure of the radioactive dose equivalent. Usually measured in Sievert (Sv, J/kg).
  22. IfcDuration – IFC4 only. The IfcDuration identifies a quantity of time (or a “lenght” of an event occurring in time). This lexical representation for IfcDataTime is PnYnMnDTnHnMnS, where nY represents the number of years, nM the number of months, nD the number of days, ‘T’ is the date/time separator, nH the number of hours, nM the number of minutes and nS the number of seconds. The number of seconds can include decimal digits to arbitrary precision.
  23. IfcDynamicViscosityMeasure – A measure of the viscous resistance of a medium. Usually measured in Pascal second (Pa s).
  24. IfcElectricCapacitanceMeasure – A measure of the electric capacitance. Usually measured in Farad (F, C/V = A s/V).
  25. IfcElectricChargeMeasure – A measure of the electric charge. Usually measured in Coulomb (C, A s).
  26. IfcElectricConductanceMeasure – A measure of the electric conductance. Usually measured in Siemens (S, 1/Ohm = A/V).
  27. IfcElectricCurrentMeasure – The value for the movement of electrically charged particles. Usually measured in Ampere (A).
  28. IfcElectricResistanceMeasure – A measure of the electric resistance. Usually measured in Ohm (V/A).
  29. IfcElectricVoltageMeasure – A measure of electromotive force. Usually measured in Volts (V, W/A).
  30. IfcEnergyMeasure – A measure of energy required or used. Usually measured in Joules, (J, Nm).
  31. IfcFontStyle – The font-style property selects between normal (sometimes referred to as “roman” or “upright”), italic and oblique faces within a font family. Values are: normal, italic or oblique. A value of ‘normal’ selects a font that is classified as ‘normal’ in the user agents font database, while ‘oblique’ selects a font that is labeled ‘oblique’. A value of ‘italic’ selects a font that is labeled ‘italic’, or, if that is not available, one labeled ‘oblique’. The font that is labeled ‘oblique’ in the user agents font database may actually have been generated by electronically slanting a normal font. Fonts with Oblique, Slanted or Incline in their names will typically be labeled ‘oblique’ in the user agents font database. Fonts with Italic, Cursive or Kursiv in their names will typically be labeled ‘italic’.
  32. IfcFontVariant – The font-style property selects between normal and small-caps within a font family. Values are: normal or small-caps. Another type of variation within a font family is the small-caps. In a small-caps font the lower case letters look similar to the uppercase ones, but in a smaller size and with slightly different proportions. The ‘font-variant’ property selects that font. A value of ‘normal’ selects a font that is not a small-caps font, ‘small-caps’ selects a small-caps font. It is acceptable (but not required) in CSS1 if the small-caps font is a created by taking a normal font and replacing the lower case letters by scaled uppercase characters. As a last resort, uppercase letters will be used as replacement for a small-caps font.
  33. IfcFontWeight – The ‘font-weight’ property selects the weight of the font.
  34. IfcForceMeasure – A measure of the force. Usually measured in Newton (N, kg m/s2).
  35. IfcFrequencyMeasure – A measure of the number of times that an item vibrates in unit time. Usually measured in cycles/s or Herz (Hz).
  36. IfcGloballyUniqueId – Holds an identifier that is unique throughout the software world. This is also known as a Globally Unique Identifier (GUID) or Universal Unique Identifier (UUID) by the Open Group. The identifier is generated using an algorithm published by the Object Management Group. The algorithm is explained at the open group website. The Microsoft Foundation Class (MFC) function “CoCreateGuid”, which is an implementation of the above algorithm, has been used by many IFC implementers to create an identifier. Example: GlobalId.
  37. IfcHeatFluxDensityMeasure – A measure of the density of heat flux within a body. Usually measured in W/m2 (J/s m2).
  38. IfcHeatingValueMeasure – Defines the amount of energy released (usually in MJ/kg) when a fuel is burned.
  39. IfcHourInDay – The hour element of a specified time on a 24 hour clock. (IFC2x3 only. Removed in IFC4)
  40. IfcIdentifierSee list above.
  41. IfcIlluminanceMeasure – A measure of the illuminance. Usually measured in Lux (lx, Lumen/m2 = Candela Steradian/m2).
  42. IfcInductanceMeasure – A measure of the inductance. Usually measure in Henry (H, Weber/A = V s/A).
  43. IfcInteger – See list above.
  44. IfcIntegerCountRateMeasure – A measure of the integer number of units flowing per unit time. EXAMPLE: This measure may be used for measuring integer units per second or per hour. For example, it may be used to measure the number of books per hour passing along a part of a mechanical book handling system, the number of people per hour travelling along a moving walkway or the number of vehicles per hour travelling along a section of road.
  45. IfcIonConcentrationMeasure – A measure of particular ion concentration in a liquid, given in mg/L.
  46. IfcIsothermalMoistureCapacityMeasure – A measure of isothermal moisture capacity. Usually measured in m3/kg.
  47. IfcKinematicViscosityMeasure – A measure of the viscous resistance of a medium to a moving body. Usually measured in m2/s.
  48. IfcLabel – See list above.
  49. IfcLanguageId – IFC4 only. The IfcLanguageId identifies the language in which a natural language text is expressed. It uses a language tag to identify the language.
  50. IfcLengthMeasure – See list above.
  51. IfcLinearForceMeasure – A measure of linear force. Usually measured in N/m.
  52. IfcLinearMomentMeasure – A measure of linear moment. Usually measured in Nm/m.
  53. IfcLinearStiffnessMeasure – A measure of linear stiffness. Usually measured in N/m.
  54. IfcLinearVelocityMeasure – A measure of the velocity of a body measured in terms of distance moved per unit time. Usually measured in m/s.
  55. IfcLogical – See list above.
  56. IfcLuminousFluxMeasure – A measure of the luminous flux. Usually measured in Lumen (lm, Candela Steradian).
  57. IfcLuminousIntensityDistributionMeasure – A measure of the luminous intensity of a light source that changes according to the direction of the ray. It is normally based on some standardized distribution light distribution curves. Usually measured in Candela/Lumen (cd/lm) or (cd/klm).
  58. IfcLuminousIntensityMeasure – A luminous intensity measure is the value for the brightness of a body. Usually measured in candela (cd).
  59. IfcMagneticFluxDensityMeasure – A measure of the magnetic flux density. Usually measured in Tesla (T, Weber/m2 = V s/m2).
  60. IfcMagneticFluxMeasure – A measure of the magnetic flux. Usually measured in Weber (Wb, V s).
  61. IfcMassDensityMeasure – A measure of the density of a medium. Usually measured in kg/m3.
  62. IfcMassFlowRateMeasure – A measure of the mass of a medium flowing per unit time. Usually measured in kg/s.
  63. IfcMassMeasure – A mass measure is the value of the amount of matter that a body contains. Usually measure in kilograms (kg) or grams (g).
  64. IfcMassPerLengthMeasure – A measure for mass per length. For example for rolled steel profiles the weight of an imaginary beam is usually expressed by kg/m length for cost calculation and structural analysis purposes.
  65. IfcMinuteInHour – The minute element of a specified time. (IFC2x3 only. Removed in IFC4)
  66. IfcModulusOfElasticityMeasure – A measure of modulus of elasticity. Usually measured in N/m2.
  67. IfcModulusOfLinearSubgradeReactionMeasure – A measure for modulus of linear subgrade reaction, which expresses the elastic bedding of a linear structural element per length, e.g. a beam. It is typically measured in N/m^2.
  68. IfcModulusOfRotationalSubgradeReactionMeasure – A measure for modulus of rotational subgrade reaction, which expresses the rotational elastic bedding of a linear structural element per length, e.g. a beam. It is typically measured in Nm/(m*rad).
  69. IfcModulusOfSubgradeReactionMeasure – A geotechnical measure describing interaction between foundation structures and the soil. May also be known as bedding measure. Usually measured in N/m3.
  70. IfcMoistureDiffusivityMeasure – A measure of moisture diffusivity. Usually measured in m3/s.
  71. IfcMolecularWeightMeasure – A measure of molecular weight of material (typically gas). Usually measured in g/mole.
  72. IfcMomentOfInertiaMeasure – A measure of moment of inertia. Usually measured in m4.
  73. IfcMonetaryMeasure – A monetary measure is the value of an amount of money without regard to its currency.
  74. IfcMonthInYearNumber – The position of the specified month in a year as defined in ISO 8601 (subcaluse 5.2.1).
  75. IfcNonNegativeLengthMeasure – IFC4 only. A non-negative length measure is a length measure that is greater than or equal to zero.
  76. IfcNormalisedRatioMeasure – Dimensionless measure to express ratio values ranging from 0.0 to 1.0.
  77. IfcNumericMeasure – A numeric measure is the numeric value of a physical quantity.
  78. IfcPHMeasure – A measure of the molar hydrogen ion concentration in a liquid (usually defined as the measure of acidity) in a range from 0 to 14.
  79. IfcParameterValue – A parameter value is the value which specifies the amount of a parameter in some parameter space.
  80. IfcPlanarForceMeasure – A measure of force on an area. Usually measured in N/m2.
  81. IfcPlaneAngleMeasure – A plane angle measure is the value of an angle in a plane. Usually measured in radian (rad, m/m = 1), but also grads may be used. The grad unit may be declared as a conversion based unit based on radian unit. NOTE IfcPlaneAngleMeasure is used where angles need to be described to an accuracy of less than one degree and expressed as decimal parts of an angle. It is widely used for angular measurement except for situations where accuracy needs to be defined using arc measurement; for which purpose the IfcCompoundPlaneAngleMeasure is provided.
  82. IfcPositiveLengthMeasure – A positive length measure is a length measure that is greater than zero. 
  83. IfcPositivePlaneAngleMeasurePositive plane angle measure is a plane angle measure that is greater than zero.
  84. IfcPositiveRatioMeasure – A positive ratio measure is a ratio measure that is greater than zero. Example: AverageSolarTransmittance, AverageVisibleTransmittance or Reflectance.
  85. IfcPowerMeasure – A measure of power required or used. Usually measured in Watts (W, J/s).
  86. IfcPresentableText – The IfcPresentableText is a text string used to capture the content of a text literal for the purpose of presentation. The IfcPresentableText can include multiple lines of text, then the line feed character LF, 0x0A, should be used to separate lines. 
  87. IfcPressureMeasure – A measure of the quantity of a medium acting on a unit area. Usually measured in Pascals (Pa, N/m2).
  88. IfcPropertySetDefinitionSet – IFC4 only. The purpose of this defined type is enabling the assignment of a set of IfcPropertySetDefinition‘s to an IfcRelDefinesByProperties relationship.
  89. IfcRadioActivityMeasure – A measure of activity of radionuclide. Usually measured in Becquerel (Bq, 1/s).
  90. IfcRatioMeasure – See list above.
  91. IfcReal – See list above.
  92. IfcRotationalFrequencyMeasure – A measure of the number of cycles that an item revolves in unit time. Usually measured in cycles/s.
  93. IfcRotationalMassMeasure – The rotational mass measure denotes the inertia of a body with respect to angular acceleration. It is usually measured in kg*m^2.
  94. IfcRotationalStiffnessMeasure – A measure of rotational stiffness. Usually measured in Nm/rad.
  95. IfcSecondInMinute – The second element of a specified time.
  96. IfcSectionModulusMeasure – A measure for the resistance of a cross section against bending or torsional moment. It is usually measured in m^3.
  97. IfcSectionalAreaIntegralMeasure – The sectional area integral measure is typically used in torsional analysis. It is usually measured in m^5.
  98. IfcShearModulusMeasure – A measure of shear modulus. Usually measured in N/m2.
  99. IfcSolidAngleMeasure – A solid angle measure is the value of an angle in a solid. Usually measured in Steradians, (sr, m2/m2).
  100. IfcSoundPowerLevelMeasure – IFC4 only. A sound power level measure is a measure of total radiated noise with units of decibels with a reference value of picowatts.
  101. IfcSoundPowerMeasure – A sound power measure is a measure of total radiated noise with units of decibels with a reference value of picowatts.
  102. IfcSoundPressureLevelMeasure – IFC4 only. A sound pressure level measure is a measure of the pressure fluctuations superimposed over the ambient pressure level with units of decibels with a reference value of micropascals.
  103. IfcSoundPressureMeasure – A sound pressure measure is a measure of the pressure fluctuations superimposed over the ambient pressure level with units of decibels with a reference value of micropascals.
  104. IfcSpecificHeatCapacityMeasure – Defines the specific heat of material: The heat energy absorbed per temperature unit. Usually measured in J / kg Kelvin.
  105. IfcSpecularExponent – The IfcSpecularExponent defines the datatype for exponent determining the sharpness of the ‘reflection’. reflection is made sharper with large values of the exponent, such as 10.0. Small values, such as 1.0, decrease the specular fall-off.
  106. IfcSpecularRoughness – The IfcSpecularRoughness defines the datatype for the reflection resulting from the roughness of a surface through the height of surface impurities where the specular highlight is made sharper with small values for the roughness, such as 0.1. Applies to “glass”, “metal”, “mirror” and “plastic” reflection models. Larger values, close to 1.0 decrease the specular fall-off. IfcSpecularRoughness is of type REAL. It is constraint to values between (and including) 0 and 1.
  107. IfcTemperatureGradientMeasure – The temperature gradient measures the difference of a temperature per lenght, as for instance used in an external wall or its layers. It is usually measured in K/m.
  108. IfcTemperatureRateOfChangeMeasure – IFC4 only. The temperature rate of change measures the difference of a temperature per time (positive: rise, negative: fall), as for instance used with heat sensors. It is for example measured in K/s (Kelvin per second).
  109. IfcText – See list above.
  110. IfcTextAlignment – This property describes how text is aligned within the element. The actual justification algorithm used is user agent and human language dependent. If ‘justify’ is not supported, the user agent will supply a replacement. Typically, this will be ‘left’ for western languages. Values are: left, right, centre or justify.
  111. IfcTextDecoration – This property describes decorations that are added to the text of an element. A value of ‘blink’ causes the text to blink.. Values are: none, underline, overline, line-through or blink. User agents must recognize the keyword ‘blink’, but are not required to support the blink effect.
  112. IfcTextFontName – The value is a  font family name and/or generic family name. Values are: <family-name> The name of a font family of choice. For example, “gill” and “helvetica” are font families. <generic-family> In the example above, the last value is a generic family name. The following generic families are defined: ‘serif’ (e.g. Times), ‘sans-serif’ (e.g. Helvetica), ‘cursive’ (e.g. Zapf-Chancery), ‘fantasy’ (e.g. Western) or ‘monospace’ (e.g. Courier). It is encouraged to offer a generic font family as a last alternative.
  113. IfcTextTransformation – This property describes how the cases of characters are handled. Values are: capitalize: uppercases the first character of each word, uppercase: uppercases all letters of the element, lowercase: lowercases all letters of the element or none.
  114. IfcThermalAdmittanceMeasure – The measure of the ability of a surface to smooth out temperature variations. Usually measured in Watt / m2 Kelvin.
  115. IfcThermalConductivityMeasure – A measure of thermal conductivity. Usually measured in Watt / m Kelvin.
  116. IfcThermalExpansionCoefficientMeasure – A measure of the thermal expansion coefficient of a material, which expresses its elongation (as a ratio) per temperature difference. It is usually measured in 1/K. A positive elongation per (positive) rise of temperature is expressed by a positive value.
  117. IfcThermalResistanceMeasure – A measure of the resistance offered by a body to the flow of energy. Usually measured in m2 Kelvin/Watt.
  118. IfcThermalTransmittanceMeasure – A measure of the rate at which energy is transmitted through a body. Usually measured in Watts/m2 Kelvin.
  119. IfcThermodynamicTemperatureMeasure – A thermodynamic temperature measure is the value for the degree of heat of a body. Usually measured in degrees Kelvin (K).
  120. IfcTime – IFC4 only. The IfcTime identifies a time within a day, expressed by hours, minutes and second. It is expressed by a string value following a particular lexical representation. The lexical representation for IfcTime is: hh:mm:ss where where hh represents hours, mm minutes and ss seconds. Additional digits can be used to increase the precision of fractional seconds if desired i.e the format… A time zone indicator may be provided by a representation of the different to the Coordinated Universal Time. It is appended with a sign [+/-] followed by hh and optionally :mm.
  121. IfcTimeMeasure – A time measure is the value of the duration of periods. Usually measured in seconds (s). Example: ServiceLife.
  122. IfcTimeStamp – An indication of date and time by measuring the number of seconds which have elapsed since the beginning of the year 1970.
  123. IfcTorqueMeasure – A measure of the torque or moment of a couple. Usually measured in N m.
  124. IfcURIReference – IFC4 only. The IfcURIReference provides for identifying a Uniform Resource Identifier (URI). A URI can be classified as a locator or a name or both, that is it may comprise a Uniform Resource Locator (URL) and/or a Uniform Resource Name (URN). (A Uniform Resource Locator, URL, is a string conforming to a standardized format, which refers to a resource on the internet (such as a document or an image) by its location.) (A Uniform Resource Name, URN, is intended to serve as persistent, location-independent resource identifier and is designed to make it easy to map other namespaces (that share the properties of URNs) into URN-space.)
  125. IfcVaporPermeabilityMeasure – A measure of vapor permeability. Usually measured in kg / s m Pascal.
  126. IfcVolumeMeasure – A volume measure is the value of the solid content of a body. Usually measured in cubic metre (m3). Example: TotalConcreteMeasure.
  127. IfcVolumetricFlowRateMeasure – A measure of the volume of a medium flowing per unit time. Usually measured in m3/s.
  128. IfcWarpingConstantMeasure – A measure for the warping constant or warping resistance of a cross section under torsional loading. It is usually measured in m^6.
  129. IfcWarpingMomentMeasure – The warping moment measure is a measure for the warping moment, which occurs in warping torsional analysis. It is usually measured in kN*m^2.
  130. IfcYearNumber – The year as defined in Gregorian Calendar NOTE: ISO 8601 defines the Gregorian Calendar. (IFC2x3 only. Removed in IFC4)

Note: that some software may not support some of these Defined Type values and we certainly have had issues in the past with passing some data to other software. A full testing exercise is for another day but I advise as a minimum testing with important tools you need exchange data with regularly.

IFC2x3 vs IFC4 Value types (Defined types)

Whilst this post is focussed on IFC2x3 for properties, I was interested to investigate the differences for Defined Types with IFC4. Whilst IFC4 is yet to be implemented in ARCHICAD it is important to understand what changes are coming with IFC so that a long term strategy can be developed with regards to data.

Here is a summary of the differences:

In IFC4 there are 126 Value types (Defined Types) which is 9 more than IFC2x3.

IFC4 creates 13 new values : IfcAreaDensityMeasure, IfcCardinalPointReference, IfcDateTime, IfcDateInWeekNumber, IfcDuration, IfcLanguageId, IfcNonNegativeLengthMeasure, IfcPropertySetDefinitionSet, IfcSoundPowerLevelMeasure, IfcSoundPressureLevelMeasure, IfcTemperatureRateOfChange, IfcTime and IfcURIReference.

IFC4 also removes 4 values that exist in IFC2x3 : IfcDaylightSavingHour, IfcHourInDay, IfcMinuteInHour and IfcYearNumber.

Of course the removal and addition of new values will present Graphisoft (and other vendors) with challenges about how they implement IFC4 within ARCHICAD, whilst still supporting IFC2x3. I certainly don’t envy their task but look forward to IFC4 when it does become available.


Personally I would like to see GRAPHISOFT adjust Property type to Property value and Value type to Defined types. This would bring it closer in line with the IFC standard.


Creating new properties can often be done at a company level so generally speaking most users don’t need to worry about adding properties. The best solution to developing an approach is to give the task to the individual(s) building your ARCHICAD template(s). This can be done in conjunction with project teams to establish their requirements. By adding properties to templates you will get more consistency from one project to the next. Obviously projects over time may have their own specific needs but the key is to capture these and reintegrate them to your company templates. Over time the need to add new properties on a project-by-project basis will diminish, with the only need for new properties coming from external parties.

Rob Jackson, Associate Director, Bond Bryan Architects


Terms and conditions

All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. Bond Bryan will not be liable for any errors or omissions in this information nor for the availability of this information. Bond Bryan will not be liable for any losses, injuries, or damages from the display or use of this information. 

We are happy for others to share our blog pieces through all social media platforms. You may include links to the original blog pieces and use part of the blog to then provide a link to the original content. However we would appreciate it if the content is not reproduced in full on other sites or publications without written consent being granted by Bond Bryan.

This policy is subject to change at any time.

One thought on “Creating custom IFC properties in ARCHICAD 19

  1. Thank you for a very informative post, particularly useful are the descriptions of all the Value Types

Leave a Reply

Your email address will not be published. Required fields are marked *

one + eight =