# Design Options + Units + Color

**URL:** <https://forums.buildingsmart.org/t/design-options-units-color/2006>\
**Category:** IFC4.2\
**Tags:** ifc4, ifc5\
**Created:** [November 15, 2019, 10:00am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006 "2019-11-15T10:00:36Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [November 15, 2019, 10:00am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/1 "2019-11-15T10:00:36Z")

</div>

1. Does IFC4 support Design Options?

2. Also, [`IfcColourRgb`](https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/schema/ifcpresentationappearanceresource/lexical/ifccolourrgb.htm) is based on 3 channels, `Red, Green, Blue`, in the range of `0.0 ... 1.0`, so does it support some 4 channels technologies like WebGL?

Also, does a range of `0.0 ... 1.0` support advanced colors? With correct implementation? As long as I know correction of color change most of the times cause chaos

1. Is it possible to add/improve Units and Unit Conversion in IFD/IFC schema? I think for PDM - PDT this is crucial

---

<div class="post-metadata">

**Author:** ![stefkeB](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefkeb/32/1755_2.png) [@stefkeB](https://forums.buildingsmart.org/u/stefkeB)\
**Post date:** [November 18, 2019, 2:18pm UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/2 "2019-11-18T14:18:12Z")

</div>

About question 2: IfcColourRgb is only the colour part. Transparency is described in another data type (IfcNormalisedRatioMeasure). They can both be assigned as part of e.g. IfcSurfaceStyleShading

[https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2\_TC1/HTML/link/ifcsurfacestyleshading.htm](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/link/ifcsurfacestyleshading.htm)

A range of 0…1.0 is thought if in the context of typical RGB colour definition (three values in 8-bit, between 0 and 255). This is typically used as part of a simple shading model. These are not floating point colour intensities as you would have in HDR visualisation.

---

<div class="post-metadata">

**Author:** ![Moult](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/moult/32/196_2.png) [@Moult](https://forums.buildingsmart.org/u/Moult)\
**Post date:** [November 18, 2019, 11:11pm UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/3 "2019-11-18T23:11:12Z")

</div>

1. I am not aware of any Design Option support. I personally believe this should be a responsibility of the version control system, not the IFC schema.
2. What @stefkeB said, but keep in mind that the alpha channel is reversed compared to most graphic programs. For advanced colors, including HDR visualisation and lighting simulation, we have used `IfcExternallyDefinedSurfaceStyle` to integrate IFC with other materials like Blender Cycles for PBR shading, Eevee for real-time VR, and Radiance for photometrically correct definitions.
3. What’s wrong with the current units and unit conversions?

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [November 22, 2019, 7:54pm UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/4 "2019-11-22T19:54:21Z")

</div>

Thanks Stefan and Dion,

1. I think because in ISO19650 we have “Revision” I guess in the future we will have “Revisions” inside the IDM and MVD  
And Revisions are so close to “Design Options” too

Imagine you send different Revisions and/or Options to the related party to choose the best one/ones and you want to “archive all design changes from the first day” and “include inside the Micro-MVDs”

1. It’s really good to hear this, I will talk about this part soon

2. I don’t see anything inside the IFC4.2 Final about “Unit Conversions” like what GS1 has developed  
Software have some mechanisms to convert different units inside the software but I think it would be better IFD and IFC inherently have a mechanism inside the schemas to select and convert different Units

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [November 30, 2019, 5:50pm UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/5 "2019-11-30T17:50:06Z")

</div>

IFC supports which units? Please categorize them to: `Supported` and `Unsupported`

Units:

- Length
- Area
- Volume
- Angel
- Slope
- Time
- Speed
- Currency
- Mass Density
- Temperature
- Pressure
- Humidity
- Force
- Impulse
- Energy
- Energy Density
- Torque
- Power
- Irradiance
- Charge
- Current
- Resistance
- Conductance
- Acceleration
- Frequency
- Voltage
- Capacitance
- Magnetic Flux
- Magnetic Flux Density
- Magnetic Vector Potential
- Inductance
- Luminous Intensity
- Illuminance
- Exposure
- Amount of Substance
- Molar Mass
- Molar Concentration
- Dimensionless Concentration
- Molar Volume
- Molar Thermodynamic Energy
- Radioactivity
- Absorbed Dose
- Effective Dose
- Absorbed Dose Rate
- Effective Dose Rate
- Memory Capacity
- Data Rate
- Kinematic Viscosity
- Dynamic Viscosity
- Flow Rate

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [December 1, 2019, 12:35am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/6 "2019-12-01T00:35:13Z")

</div>

I couldn’t find units for these:

- Speed
- Impulse
- Irradiance
- Magnetic Vector Potential
- Exposure
- Effective Dose
- Absorbed Dose Rate
- Effective Dose Rate
- Memory Capacity
- Data Rate

And I’m not sure about these units too:

- Humidity
- Energy Density
- Current
- Molar Mass
- Molar Concentration
- Dimensionless Concentration
- Molar Volume
- Molar Thermodynamic Energy

---

<div class="post-metadata">

**Author:** ![stefan.markic](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefan.markic/32/168_2.png) [@stefan.markic](https://forums.buildingsmart.org/u/stefan.markic)\
**Post date:** [December 2, 2019, 9:39am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/7 "2019-12-02T09:39:04Z")

</div>

@ReD_CoDE ,

please have a look here:

- [https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2\_TC1/HTML/schema/ifcmeasureresource/lexical/ifcnamedunit.htm](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/schema/ifcmeasureresource/lexical/ifcnamedunit.htm)
- [https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2\_TC1/HTML/schema/ifcmeasureresource/lexical/ifcconversionbasedunit.htm](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/schema/ifcmeasureresource/lexical/ifcconversionbasedunit.htm)
- [https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2\_TC1/HTML/schema/ifcmeasureresource/lexical/ifcsiunit.htm](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/schema/ifcmeasureresource/lexical/ifcsiunit.htm)

If you know your physics and how data modelling goes, you should be able to work it out yourself.

Note: this was already possible with IFC2x3.

---

<div class="post-metadata">

**Author:** ![ReD\_CoDE](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/red_code/32/226_2.png) [@ReD\_CoDE](https://forums.buildingsmart.org/u/ReD_CoDE)\
**Post date:** [December 2, 2019, 10:52am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/8 "2019-12-02T10:52:11Z")

</div>

Thanks Stefan, I clearly aware of these and I know that IFC is so flexible in these areas and nearly all units are achievable

However, I think some units are better be added directly to IFC schema (some of them are really important in MEP and Building Performance areas)

---

<div class="post-metadata">

**Author:** ![stefan.markic](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/stefan.markic/32/168_2.png) [@stefan.markic](https://forums.buildingsmart.org/u/stefan.markic)\
**Post date:** [December 2, 2019, 11:47am UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/9 "2019-12-02T11:47:03Z")

</div>

I would go so far to even boldly state that every unit is achievable, as long it can be expressed by any combination of the standardized SI units (see [ISO 80000-1](https://www.iso.org/obp/ui/#iso:std:iso:80000:-1:ed-1:v1:en) )

You can even define a new length unit, _banana_, as a conversion based unit like this:

```
#42 = IFCCONVERSIONBASEDUNIT(#1729, .LENGTHUNIT., 'banana', #6174);
#1729 = IFCDIMENSIONALEXPONENTS(1, 0, 0, 0, 0, 0, 0);
#6174 = IFCMEASUREWITHUNIT( IFCLENGTHMEASURE(16.739), #80000);
#80000 = IFCSIUNIT (*, .LENGTHUNIT., .CENTI., .METRE.);

```

With this, 1 banana = 16.739 cm.

> [@ReD\_CoDE](#):
>
> I clearly aware of these

This contradicts your previous replies.

> [@ReD\_CoDE](#):
>
> be added directly to IFC schema

How do you recommend doing that? What would that solve? I think that the current way is very versatile and capable of every imaginable scenario. And: which units should that be and why not any other?

---

<div class="post-metadata">

**Author:** ![Helland](https://sea2.discourse-cdn.com/flex016/user_avatar/forums.buildingsmart.org/helland/32/679_2.png) [@Helland](https://forums.buildingsmart.org/u/Helland)\
**Post date:** [December 2, 2019, 12:58pm UTC](https://forums.buildingsmart.org/t/design-options-units-color/2006/10 "2019-12-02T12:58:53Z")

</div>

Any unit can be defined. But you probably don’t have measure types some of the measures ReD\_CoDE mentions.

But at least speed exists as IfcLinearVelocityMeasure.

If any other measures needed in proprietary property sets, I guess the correct solution is to store the value in an IfcReal and set the unit directly on the property set value.
