Where and how will my colors be saved in IFC?

Hi ,

I still can’t figure out how colors are saved in IFC and why they are lost during the conversion proces. It is kind of important to set and save the colors in display because they represent a diameter.
So… (other voice of tone…)

HOW THE F_AM I ABLE TO KEEP COLORS IN MODELS?
DON’T TELL ME IT IS NOT POSSIBLE IN IFC FORMAT !

:slight_smile:
… please… no hard feelings…

1 Like

First of all, you should define the IFC version.

I don’t know about IFC2x3 because it’s years I didn’t read it again, but IFC4 ADD2 TC1 supports colors through IfcPresentationItem Link
It supports RGB which I think should expand its support scheme

@ReD_CoDE is right, IFC indeed supports colours in your models. However, it supports much more than just colours, it supports textures, and many different types of colours depending on the purpose. The exact relationships depend on the IFC version, so it is important to specify it.

If you provide a sample IFC file, we can look at it and tell you exactly what your software is including, and what it is failing to include.

1 Like

@Hans_Lammerts please check out the IFC2x3 CV2.0 and IFC4 RV1.2 MVD documentation from this page:
https://technical.buildingsmart.org/standards/mvd/mvd-database/

Simple element colors were part of the certification criteria in both cases.

1 Like

The model is from Allplan ifc2x3. Colors are lost in Revit, Autodesk Architecrure as well as BricsCAD. I can only see them using ifc viewer. The certification doesn’t seem foolproof to me. Where rebar objects part of it? How does one read this line as RGB definition?

#36599= IFCCOLOURRGB($,1.,0.5019607843137255,0.);

Ah. i found somthing in the zipper file. Interesting.
What does this tell me as user ?

@Hans_Lammerts there are many ways to specify colours in an IFC, just because it is stored in one way doesn’t mean that the viewer / reader supports that particular way.

If you share your IFC file, we can help debug your issue properly rather than guessing :wink:

I would be great if you can tweak these color codes so my IFC’s can convert it to 3D DWG better.
What is your email adres so i can supply it?

One more line to share. This is what i got back from a fellow IFC experts from the BricsCAD company.
Still, my guess is, that the solution lays in the IFC format itself!

My colleague, IFC support specialist, reacts as follows. I will send you a separate link to some mp4’s she has made.

BricsCAD correctly imports solids colors. But it cannot redefine the color of a solid … etc.

You can send to dion@thinkmoult.com

If you need to generate a DWG with color, the Geometry Gym Rhino IFC plugin has configured options to use different style inputs and Rhino3d can then save to DWG. We’ve been considering to develop an AutoCAD IFC importer for some time and hope we can do this soon.

1 Like

Thank you. Lots of workarounds go around.
Not looking for one more.

@Hans_Lammerts, I have recieved your file. Your file is IFC2X3, but this diagram from the IFC4 documentation which describes how materials have colours still largely applies.

Your object, say IfcReinforcingBar, has an IfcMaterial assigned to it. An IfcMaterial is purely a material name. By itself, it doesn’t contain complex information such as how it should look or what colour it should have. The example code below taken from your IFC file shows how a simple material called S 500 is defined and how it is assigned to an IfcReinforcingBar.

#162= IFCRELASSOCIATESMATERIAL('3jqclFXRX4suObPM94MO4I',#4,$,$,(#167), #163);
#163= IFCMATERIAL('S 500');
#167= IFCREINFORCINGBAR('00kx2obfn9xPPzuYYnZ350',#4,'<Unnamed Element>', $,$,#108,#109,$,$,20.,0.503,$,.NOTDEFINED.,$);

As said, the material alone isn’t enough. You also need to define the “style” of a material. So, if you want to apply a colour to a 3D surface, you should have an IfcSurfaceStyle defined. The code below, taken from your IFC file, describes a surface style used for rendering or shading purposes (as opposed to other purposes such as illumination simulations) of an RGB of (1, 1, 0), or Yellow colour.

#142= IFCSURFACESTYLERENDERING(#143,$,$,$,$,$,$,$,.NOTDEFINED.);
#143= IFCCOLOURRGB($,1.,1.,0.);
#144= IFCSURFACESTYLE($,.BOTH.,(#142));

Again, as shown in the below diagram, defining the surface style is not enough. We now need to link the style to the material … and that surface style has to be assigned within a specific representation context (because IFC supports more than just a 3D representation, it also supports 2D representations, or other scale specific representations, or even diagrammatic representations).

Therefore, from the below diagram, we need definitions of an IfcStyledItem, IfcStyledRepresentation, and IfcMaterialDefinitionRepresentation. However, only the IfcStyledItem is defined in your file shown in the code snippet below. This suggests that the link between the style and the material is not defined properly in your IFC file.

#146= IFCPRESENTATIONSTYLEASSIGNMENT((#144));
#148= IFCSTYLEDITEM(#140,(#146),$);

That said, there are two different ways to map colours to an IFC file. So far, we have been following the “chain” on the left of the diagram. Your particular file takes a different approach, i.e. the chain on the right:

#148= IFCSTYLEDITEM(#140,(#146),$);
#140= IFCMAPPEDITEM(#137,#151);
#135= IFCSHAPEREPRESENTATION(#34,'Body','MappedRepresentation',(#140));
#109= IFCPRODUCTDEFINITIONSHAPE($,$,(#135));
#167= IFCREINFORCINGBAR('00kx2obfn9xPPzuYYnZ350',#4,'<Unnamed Element>', $,$,#108,#109,$,$,20.,0.503,$,.NOTDEFINED.,$);

As you can see, Allplan has chosen to assign the surface style to the shape itself (notice how #167 matches the first code block I posted), rather than to the material. This is not my preference, but it is not incorrect. I also believe it is not your preference, since I see that you have carefully named your materials. It would be more efficient to define a small number of materials, one per size, each with its own style and be done with it.

My initial conclusion, but perhaps others might have an opinion, is that buildingSmart has defined two approaches towards assigning a basic colour, and Allplan took one approach. Other IFC viewers that can open your file might not support that approach, and that might explain why you are running into problems.

I should also note that there are some IFC viewers that simply do not visualise any coloured shading. This is not an error, as the raw data is still there, but it is simply the way they choose to visualise the object. One example of this is XBim. You can still check that the appropriate material data has been assigned, which I believe is the more important piece of data.

I would also highlight that it looks as though there are 428 material definitions and material assignment entities in your IFC file. I highly doubt that you have 428 distinct materials in your file as I see many with identical names. This shows that the Allplan exporter is highly inefficient with regards to materials and results in a bloated IFC file. There are other issues with the quality of your IFC file, such as the <Unnamed Element> shown above rather than using $, but if I continued with these descriptions, it would be off-topic. Please raise these issues with Allplan.

I hope this helps, and I hope the explanation was clear.

4 Likes

Thanks for your detailled analyses. I will inform a dutch reseller of Nemetschek software. Overall, i hope BSA manages to streamline input/output more with color testing to that this INFORMATION is passd though better in the future. Users should not need to know all this technical stuff in the first place

Do you know any IFC Viewer that can show textures? We are trying to introduce textures in IFC’s models by writting the txt format but we don’t know if we are doing well

Textures are mostly mapped witj pgn files.The FBX files stores them. I doubt you will find it for ifc.

IFC has some issues in texture.
I understand your considerations and what are you looking for?
I think soon we will see them, open-source.

IFC supports the use of image files (preferably png) for textures, see IfcImageTexture

I start from a question from @Moult which is so close to what Ms. @pilarjimenez is looking for, “Material Catalog” and mainly “Product Catalog” for COBie

A as oldskool AutoCAD user i see some similarities between “bylayer” “byblock” and “bymaterial”. Simple as that it might be.

I was hoping there is a way to control or change colors in a simple way. It should be made easy. You could use a user defined property “color” with a description.

@Hans_Lammerts - yes, it is similar to that :slight_smile: By the way, BlenderBIM now allows you to pick whether objects are assigned surface styles by object or by material. As far as I am aware, it is the only BIM program which allows you to do this.

@pilarjimenez - sorry, I don’t know of any that supports textures. It is on my to-do list. However, it is possible in BlenderBIM to assign externally defined material files - I have used this to associate external material definitions which have textures as well as complex material setups. Like the ability to assign surface colours by object or by material, BlenderBIM is the only BIM authoring tool that I know is capable of doing this.