Solved

Reading IFCPROPERTYSINGLEVALUE from IFC aggregates

  • 23 August 2019
  • 3 replies
  • 3 views

Badge +5

I have an IFC file representing a Stormwater network, and it has IFCFLOWSTORAGEDEVICE features representing nodes and IFCBUILDINGELEMENTPROXY features representing pipes.

I have been able to pull out all the IFCPROPERTYSINGLEVALUE attributes for the node features thanks to daveatsafe's excellent answer here.

However the pipes are a little more challenging as there seems to be some sort of aggregate standing in between the geometry and the attributes, and I can't expose the attributes in the same way. In the IFC file they are represented like this:

 

IFCBUILDINGELEMENTPROXY('1HDtbP71

IFCELEMENTASSEMBLY('3xaXAEmy159vL

IFCRELAGGREGATES('2U9sLih9H1YhOYO

IFCPROPERTYSINGLEVALUE('calculate

IFCPROPERTYSINGLEVALUE('calculate

whereas for the nodes it was just straight in to the attributes:

IFCFLOWSTORAGEDEVICE('1NHbOsZU

IFCPROPERTYSINGLEVALUE('pit id

IFCPROPERTYSINGLEVALUE('pit na

IFCPROPERTYSINGLEVALUE('pit ty

The IFC file was created with 12D software, and to be honest there seems to be no practical reason for the aggregate (maybe just an artefact of a more generic design)

When using the Revit reader with the Building Elements with Hierarchy option I get an IFCBUILDINGELEMENTPROXY geometry without the attributes, and I also get an IFCELEMENTASSEMBLY feature come through with a geometry of FMENull which has GeometryTraits equating to the attributes. But these are currently ignored in the Revit Reader (I'm using 2018.1), and even if they did came out as features it is not very obvious how I would stitch them back on to the original geometry.

Is there a (relatively) straightforward way of picking up the attributes of these aggregate features?

 

For full disclosure, I have actually ended up hacking the IFC file to remove all the IFCELEMENTASSEMBLY and IFCRELAGGREGATES rows, which then necessitated adjusting a bunch of IDs in a couple of other places. Luckily I was only dealing with 40 pipes, so was fairly manageable. This hack actually works perfectly, but I would not like to repeat on a bigger file.

Thanks

Keith

 

icon

Best answer by daveatsafe 29 August 2019, 20:23

View original

3 replies

Userlevel 2
Badge +17

Hi @keithhastings,

Would you mind sending us a copy of the IFC file so we can take a closer look at it. If you don't want to make it public, you can send it to .

Badge +5

Hi @keithhastings,

Would you mind sending us a copy of the IFC file so we can take a closer look at it. If you don't want to make it public, you can send it to .

Thanks Dave, will send to you in an email.

Userlevel 2
Badge +17

Hi @keithhastings,

The IFC reader's default Relationship data model breaks up the hierarchical IFC data into separate feature types for more convenience in processing. These feature types can be at different levels of the hierarchy, with the parent/child relationships stored in the attributes ifc_unique_id and ifc_parent_unique_id.

In this case, the IfcBuildingElementProxy and IfcElementAssembly are being read as separate feature types, even though the IfcElementAssembly is the parent of the IfcBuildingElementProxy.

You can merge the IfcBuildingElementProxy geometry onto the IfcElementAssembly using the FeatureMerger, using the parent id:

This will replace the geometry of the IfcElementAssembly, so it is best to extract the property set data from the geometry before merging, using a GeometryPropertyExtractor transformer.

For now, I would recommend using the regular IFC reader. The data views in the IFC with Data Views (FME Exporter for Revit) reader do not yet have IfcElementAssembly feature types.

I am attaching a workspace illustrating how best to merge these feature types.

Read_IFC.fmw

Reply