Question

BIM items re-grouping & fbx metadata

  • 28 October 2019
  • 8 replies
  • 11 views

Badge

New to FME world, interested to discover if apart the conversion capabilities will be possible to automatically regroup items based on their metadata and geometrical properties.

As example group all elements that are tagged (in Revit or IFC) as Windows, first floor and have the same number of polygons after the conversion in fbx format.


8 replies

Userlevel 2
Badge +17

Hi @davide445,

Yes, the Aggregator transformer has a Group By setting that allows you to choose the feature attributes (ie. type, floor, etc.) you want to group the input features by.

The number of polygons is not normally a usable feature attribute, but you can use the FME Hub GeometryCounter transformer to extract that info into a regular feature attribute suitable for use in the Aggregator Group By.

Badge

Thanks @daveatsafe

A bit changing topic, I was also trying to find a way to highlight custom metadata associated with a Revit --> fbx export, so to prepared when I need to import it into an engine not reading them.

Is possible to show any metadata, i.e. texture rotation?

Just as example the attached fbx (a direct export from Revit of a part of a project) does have a 90° rotation in the wall texture that's not maintained importing it in our choosen realtime engine.

So will be useful to list all the metadata and so being able to decide how to treat them.

AreasportivaGRUMO_Basic_Wall_rvt.zip

Badge

Looking at the ASCII encoding of the fbx (see attached file) I discovered the rotation of the texture is represented in this data

Texture: 1937159942528, "Texture::Map #155", "" {         Type: "TextureVideoClip"         Version: 202         TextureName: "Texture::Map #155"         Properties70:  {             P: "Rotation", "Vector", "", "A",0,0,90.0000025044782             P: "Scaling", "Vector", "", "A",0.181428581476212,0.362857162952423,1             P: "UVSet", "KString", "", "", "UVChannel_1"             P: "UseMaterial", "bool", "", "",1

With the Rotaiton parameter of the #155 texture representing the element I'm not able to translate from an Autodesk program to a realtime engine.

Trying to import the fbx in FME I'm not able to dig inside the properties to extract this one and next save it on another file, in the below example fme_rotation it's a global parameter and not the specific one. Any suggestion on that.

0684Q00000ArK0tQAF.pngBasic_wall_ASCII.zip

Userlevel 2
Badge +17

Looking at the ASCII encoding of the fbx (see attached file) I discovered the rotation of the texture is represented in this data

Texture: 1937159942528, "Texture::Map #155", "" {         Type: "TextureVideoClip"         Version: 202         TextureName: "Texture::Map #155"         Properties70:  {             P: "Rotation", "Vector", "", "A",0,0,90.0000025044782             P: "Scaling", "Vector", "", "A",0.181428581476212,0.362857162952423,1             P: "UVSet", "KString", "", "", "UVChannel_1"             P: "UseMaterial", "bool", "", "",1

With the Rotaiton parameter of the #155 texture representing the element I'm not able to translate from an Autodesk program to a realtime engine.

Trying to import the fbx in FME I'm not able to dig inside the properties to extract this one and next save it on another file, in the below example fme_rotation it's a global parameter and not the specific one. Any suggestion on that.

0684Q00000ArK0tQAF.pngBasic_wall_ASCII.zip

You can use an AppearanceExtractor transformer to extract the texture information from surfaces. If you set Keep Input Traits as Attributes, the appearances will be output with the attribute fme_appearance_texture_gen_info, which contains a set of parameters that can be used to calculate the texture alignment. Please see the transformer doc for more detailed info:

http://docs.safe.com/fme/2019.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/appearanceextractor.htm

Badge

You can use an AppearanceExtractor transformer to extract the texture information from surfaces. If you set Keep Input Traits as Attributes, the appearances will be output with the attribute fme_appearance_texture_gen_info, which contains a set of parameters that can be used to calculate the texture alignment. Please see the transformer doc for more detailed info:

http://docs.safe.com/fme/2019.0/html/FME_Desktop_Documentation/FME_Transformers/Transformers/appearanceextractor.htm

Thanks again. Using the AppearanceExtractor with the settings you suggest I find the fme_texture_style_rotation_angle missing

Trying to get rid of this problems with the fbx I tried to load the original rvt file but bot an error

"Revit Native Reader: Unable to read file: unsupported version detected. Please ensure the target file was created in Revit 2015 or later"

The file was saved with Revit 2020

Userlevel 2
Badge +17

Thanks again. Using the AppearanceExtractor with the settings you suggest I find the fme_texture_style_rotation_angle missing

Trying to get rid of this problems with the fbx I tried to load the original rvt file but bot an error

"Revit Native Reader: Unable to read file: unsupported version detected. Please ensure the target file was created in Revit 2015 or later"

The file was saved with Revit 2020

I don't think the fme_texture_style_rotation_angle applies to image textures - those are controlled by the texture coordinates on the vertices. the fme_appearance_texture_gen_info attribute contains the parameters to generate the texture coordinates, so it would be the place to get the texture rotation.

To read Revit 2020, you will need to get the latest beta version of FME 2020, from safe.com/beta.

Badge

Changing the kind of problems I need to face I started focusing on other aspects of the same model, to understand if FME can help me in managing the transition btw Revit and fbx format.

Finally I have a cleaned Revit project to share Area sportiva GRUMO_Basic_Wall_parts RIPULITO.zip

In this project I exploded the parts the wall is composed from, and was trying with FME to understand if it's possible to

- Know how many different parts (layers) the wall is composed from (in this case need to be 10)

- Know what material is associated with each part

- Extract custom metadata such as the Other in this case (Collocazione WBS and Fase costruttiva)

So far I didn't succeed in any of them using FME 2020 Beta, before spending infinite time in trying to climb an impossible mountain I prefer to ask.

Userlevel 2
Badge +17

Changing the kind of problems I need to face I started focusing on other aspects of the same model, to understand if FME can help me in managing the transition btw Revit and fbx format.

Finally I have a cleaned Revit project to share Area sportiva GRUMO_Basic_Wall_parts RIPULITO.zip

In this project I exploded the parts the wall is composed from, and was trying with FME to understand if it's possible to

- Know how many different parts (layers) the wall is composed from (in this case need to be 10)

- Know what material is associated with each part

- Extract custom metadata such as the Other in this case (Collocazione WBS and Fase costruttiva)

So far I didn't succeed in any of them using FME 2020 Beta, before spending infinite time in trying to climb an impossible mountain I prefer to ask.

Hi @davide445,

To get the wall material layers, you will need to export the IFC file in Revit, then read that into FME. The FME Revit reader does not yet have that functionality.

Use a GeometryPropertyExtractor transformer to extract the property sets into attributes. Set Property to Extract to Traits, and Prefix Extracted Trait with Geometry Name to Yes.

If there is only one Material, you will have an attributes named IfcMaterial.Name and IfcMaterial.LayerThickness on the output features. If there are more Material layers, you will get the lists IfcMaterial{}.Name and IfcMaterial{}.LayerThickness instead.

Add a AttributeExposer to expose both the attributes and lists. You can use an ListElementCounter on IfcMaterial{}.Name to count the number of layers in the wall.

The Other properties will also be extracted by the GeometryPropertyExtractor, so you just need to expose the attributes to make them available for use in Workbench. To see all of the available attributes, send the feature to an Inspector, then click on the displayed features and examine the Feature Information window.

Reply