IFC - retrieve all attributes?

i cannot find a solution at one point, while inspecting ifc-parameters.

i use in 2x3:
path = [my_scheme, my_element, Description, IfcText]
local_value = my_definition.get_classification_value(path)

good so far, but here i have to know , that an attribute named “Description” is included (exists) in the ifc-object.

my question is:

how can i iterate and retrieve ALL assigned IFC attributes (at the level of name, longname, description, tag…) or get all existing pathes on an imported element (where i do not know all assigned infos)
to get
ALL corresponding values ?

thanx a lot for any tip :slight_smile:

This has been discussed before …

hi dan,
but how can i traverse thru when a path is necessary with a “NAME” , i want to find out and do not know?

at the moment i have a set (array) of known "names " (like “longname”) and iterate with the path to find out , if they exist in the instance.
but which is the name of the attribute directory, which holds those elements ?

maybe i still do not undrstand the structure of this information …


Install one of the Attribute Inspector extensions and do some investigative homework.

yes, i will.

maybe a last question :slight_smile:
is an user created dynamic attribute dictionary the equivalent to a pset ? ( just to understand, how i can create a new special pset for a ifcdoor-element …

thanx for helping .


I don’t know what a pset is, but if it is something like Ruby’s PStore or a JSON file, then yes.

The name “attribute dictionary” comes from the C++ programming language.
It is a data list of key/value pairs. Each key/value pair is a data attribute.
Just like a language dictionary, attributes are looked up (accessed) by the key term.

SketchUp’s AttributeDictionary class is an Entity subclass. Any entity in the SKP model can have a AttributeDictionaries collection. Therefore, an AttributeDictionary object can have a collection of nested dictionaries (and so can the nested dictionaries, etc.)

All top level attribute dictionary names should be qualified (ie, begin with) a unique namespace name just as your extension should. Ie … “AMS_BIMifier” or whatever. Ie …“CompanyName_PluginName”.
For example, a simple dictionary name like “Properties” would likely clash with someone else’s.

There’s no such thing as a universal Propertyset, some software might have that implemented as default name, but it’s usually ‘category’ dependent and as such, names like Pset_curtain_wall (followed with an underscore and specific name) can occur and be used.

hi, thanx a lot! what i am trying to understand:

if a ifc-file also has some pset definitions in to ( as Pset_curtain_wall ),

is this than a separate attribute dictionary in the ifc-dictionary?


They won’t import in SketchUp desktop app….

i mike,
i see. i am starting with ifc, so if i may ask:

if a cad-3d-software has the option to create a pset, is this pset, when ifc is exported a separate file belonging to the ifc-model?

or do i have to create a pset with a text-editor or so ?


It truly depends on which software. Usually, there is an exporter, a software specific module responsible for what to export and, even more important, how to map those attributes to the Building Smart standard (IFC 2x3 or IFC 2x4).
Revit has it’s own exporter, so does Archicad and SketchUp.
They’re sometimes updated during a release version.

Each has it’s own importer as well and then those Ifc attributes are mapped to software specific ‘elements’ (Revit has ‘category’s’, SketchUp has ‘Components ‘)

Fwiw, an ifc file is also ‘just a text file’, but it’s structure is a bit overwhelming for a human to read:)

Specific pset’s can be added in the 3d cad modeller, but then you will have a high risc of loosing data upon exporting (or importing)
One could consider adding pset’s in a cloud environment such as Trimble connect.
The info is then kept aside from the software that generated the model.

1 Like

You should install IfcManager extension. It helps you a lot with IFC classifications. It also export additional Psets if you create them by including them as a hash inside IFC classification.