Components - attributes for ifc

hello,
i have a problem, which i do not understand:

starting to learn, how to export bim (ifc) the right way:

when i export to ifc 2x3 and check with a viewer, i see attributes, which i cannot see anywhere in the component-definition in sketchup:

how can i clean a component - means - is there a way to do it in skp or do i have to iterate thrue all existing dictionaries in the component?

the compo in skp only shows:

AND

why does the compo in the ifc-vier shows cm as unit, when the model in skp used for export uses m as unit system ?

when iterating all compo atrribute libraries, i get only:

image

no key named “ausfuehrung” (without the underline prefix…)

thanx for helping!

stan

edit 1:

can it be , that there are two separate internal attribute lists in one diuctionary, put together in an ifc exprot?

i found out, that

attributes defined thru the menu for components are not visible , when i iterate the dictionary bis ruby,
but both are brought together under “dynamic atributes”, when in ifc …

???

thanx
stan

The IFC attributes are implemented as Classifications.

Even though classification attributes can be shown in the DC Options dialog, classifications are not part of the "dynamic_attributes" dictionaries.

They have their own attribute dictionaries attached to the component definitions.

One dictionary will have the name "AppliedSchemaTypes" which will list all the classifications that a particular definition has been tagged with. (This means that a component can be classified multiple ways.)

For each of the applied classifications, the definition object will have a dictionary with the same name as the classification name, … "IFC 2x3" in your case.
This attribute dictionary object is a nested tree of dictionaries. (The AttributeDictionary class is an Entity subclass so itself can have a collection of child dictionaries.)

Please, in the future, one question to a topic. This has to do with the exporter used.

Did you use the native IFC exporter or an extension ?

hi dan, thanx for the explanation.

i will try to get the content of AppliedSchemaTypes by ruby.

is it a classiclal dictionary, where i can add a description (key) and value by ruby?

i am writing a small script, which can add a particular value to all objects of a certain ifc-category.

thanx a lot
stan

by the way - any idea for the length-unit-problem ?

ok, please excuse for the double question …

i used export to 3d > ifc from file menue…

Please do not modify it, this is a internal dictionary so consider it read only.

Then it is the specific classification dictionary, "IFC 2x3" or one of it’s child dictionaries that you need to add the value to.

Okay this has nothing to do with the API. You should likely ask this question in the main SketchUp category. (It may be an open issue for the native exporter that does have some issues.)

There is a custom extension. See this old discussion …

IFC import to / export from SketchUp Pro

1 Like

ok, so if a summarize:

the sketchup menu
image

may not be modified by ruby, ok

for the new parameters then i have to create an own attribute dictionary,
from which the kae & values will be exported to “dynamic attributes” going to ifc

this new library can have any name, as far , as i can see.

in the viewer i can can see both , the system component attributes (menu > ausfuehrung and test 1) and the ruby-made-attributes (extra dictionary > DIREKTER KEY))
in the ifc-summary:
image

stan

What you show is the Component Attributes dialog window that is used for Dynamic Component authoring.

Dynamic attributes can be added by Ruby, but it is a very advanced concept because the DC extension is close source.

But this authoring dialog has nothing to do with IFC because (as I said earlier) the "dynamic_attributes" dictionaries do not hold IFC data. Again, classifications use their own dictionaries.

Do not confound these 2 separate concepts just because the Component Options dialog has been improved to allow the setting of classification attributes (such as IFC data.) The values are still going into separate dictionaries.

First check if the IFC classification allows you to add custom data keys / values.

If not, then you may need to copy the “IFC 2x3.skc” schema to a new file with a custom name and modify the XML schema.

Then you would import and use that classification schema instead of the plain “IFC 2x3.skc” supplied with SketchUp.

AGAIN … the “dynamic attributes” dictionary does NOT hold IFC (or any other classification) data.
They are in separate dictionaries.

What viewer ?

The DC attributes dictionary will display schema attributes. Which fuels the confusion in regard to “attributes” in SketchUp.

ams: I’m not sure I fully understand what you are trying to do. Do see IFC related attributes from the model when you export? (To IFC) And you don’t want these attributes to appear in the export?

Perhaps you can attach a sample model to go along with this question so we can inspect it?

I know this as I said above …

The OP is calling this [the Component Options dialog] the “SketchUp menu”.

The viewer ams refers to appears to be some external application. (See screen grabs.)

hello dan & tomtom,
thanx for dealing with the topic.

i will try to describe, what i discovered so far (as absolute ifc-starter ):

  • i have an object in skp as component, nested in a component (ifc storey) nested in a ifc-building in a ifc project.

ok so far.

first, i declared the component attributes
“schild” and “stoff”
via sketchup component menue.
image

then, via ruby script, i added a further parameter “DIREKTER KEY VIA RUBY”

now as far as i understood, those 2 groups should be in different libraries.

but as you can see in the sketchup menue, the “ruby-made” parameter also appears there (but without the value-string “Inhalt” .

and more:

when i export from sketchup and import to the bim viewer (
image
,
i can see ALL 3 PARAMETERS under “dynamic _ attributes”:

so i am a bit confused,

regards
stan

These are custom dynamic attributes that you’ve manually added via the DC authoring dialog window.

These have nothing at all to do with BIM or IFC attributes. Again, you need to realize that IFC data are implemented as a Classification, which are defined by a XML schema definition (XSD) file with a .skc file extension.

Please stop saying “sketchup menue” … it is the Dynamic Component Attributes interface window.

This DC interface and the “dynamic_attributes” dictionary is a complex closed source implementation.
You cannot simply add a dynamic property using the #set_attribute method. The Dynamic Components extension uses a set of special hidden attributes to define a dynamic property that is shown in the Component Attributes interface window. (Look at the list that you have shown of the dictionary. Each dynamic property has a set of attributes that begin with "_#{propertyName}_". Without these attributes, the interface does not know how to display them.)

You keep saying that you wish to create custom IFC attributes, … and I keep telling you that these need to be defined in a classification schema, but only IF the default supplied "IFC 2x3.skc" does not allow adding custom data on-the-fly.

What is “Schid” ?
I see that “Stoff” means “Fabric”, …

Are there not any place in the IfcFurnishingElement data hierarchy where you can enter this information ?

hi dan,
first : sorry, if i used wrong expressions - i will learn :slight_smile:
but as far as i can see, i totally misunderstood the basic idea of ifc.

i understood, that there are the ifc-types (as defined in sketchup component - element-information [type]), where i can define it as storey or bulding of furniture [ifc-attributes]. ok.

but this list is limited to basics like columns, walls etc…

i thought, tat - on top of this - i can assign various informations to the elements like materials, colours etc., which also become a part of the component-instance-information, passed via ifc to the investors viewer.

but those can only be asigned in component attributes in the Dynamic Component Attributes interface window, as far as i can see…
image

i was trying to find some descriptions about ifc on the web, but was not lucky enough yet to find an overview for beginners.

i must confess, that at the moment i somehow do not understand the scheme system (classification).
but i will try to study the structure of the scheme file IFC 2x3.skc tounderstand more.

thanx a lot for helping. for now i will export with the standard ifc-attributes.

stan

Once again, no. Those attributes you are adding get added to the “dynamic_attributes” dictionary.
They will not be added to the BIM / IFC data which have their own dictionaries (which use the classification name as their top level dictionary name.)

The .skc is just a custom file extension for a standard XSD file.
There should be tons of information about XML Schema Definition files out on the web.

But as I linked up above, … if this all confuses you, then perhaps you should try the custom IFC extension by Jan Brouwer :

hi dan,
i have to thank for your infos. it took a little bit longer to split
ifc from dynamic
and
schema from attribute_directory
in my head.
but i think, i am on my way.

finally i know:

model contains the schemata

element have their directories,
where some of them hold the ifc-data.

i keep on diving :slight_smile:

stan

what i have is so far as structure:

**** MODEL DICTIONARIES*
GeoReference
temp
GSU_ContributorsInfo
IfcGUIDs
------
**** IFC SCHEMATA*
IFC 4
IFC 2x3
#Sketchup::ClassificationSchema:0x000002155f06e250 IFC 4
#Sketchup::ClassificationSchema:0x000002155f06dff8 IFC 2x3

ITERATE IfcGUIDs

  •             BuildingElementProxyGUID = 0Z8AMjdU9AZOtvDPmaQh1W*
    
  •             BuildingGUID = 0Qozucmtb5YfLPvHNQKzrJ*
    
  •             BuildingStoryGUID = 1XTMNIbkT0bP$kqsCyyAhY*
    
  •             ModelGUID = 0JLhRIVhLDBh337Sjr132b*
    
  •             SiteGUID = 1fDYjPeUX9Fewi4zPJOmAz*
    

------
xxxxxxxxxxxxxxxx IFC STRUCTURE xxxxxxxxxxxxxxxxxxxxxxx
PROJECT
SITE

BUILDING

  • Building Name #1*
  • Building Description *

  • STOREY *
  • Storey Def Name EG1 *
  •           name         EG1*
    
  • Storey Def Description EG1*
  •           descr        EG1*
    

  •    ELEMENT (SINGLE IFC-OBJECT-COMPO*
    
  •    ELEMENT DICTIONARY: SU_DefinitionSet*
    
  •          Price = *
    
  •          Size = *
    
  •          Url = *
    
  •    ELEMENT DICTIONARY: AppliedSchemaTypes*
    
  •          IFC 2x3 = IfcDoor*
    
  •          IFC 4 = IfcDoor*
    
  •    ELEMENT DICTIONARY: IFC 4*
    
  •          SchemaType = http://www.buildingsmart-tech.org/ifcXML/IFC4/final:IfcDoor*
    
  •    ELEMENT DICTIONARY: IFC 2x3*
    
  •          SchemaType = http://www.iai-tech.org/ifcXML/IFC2x3/FINAL:IfcDoor*
    

…

  •      ent.name          Komponente_instanz*
    
  •      ent.def.name      Komponente_instanz#1*
    
  •      Own Keys:         DIREKTER KEY = Inhalt*
    
  •      Own Keys:         DIREKTER KEY VIA RUBY = Inhalt*
    

  • STOREY *
  • Storey Def Name EG2*
  •           name         EG2*
    
  • Storey Def Description EG2*
  •           descr        EG2*
    

  •    ELEMENT (SINGLE IFC-OBJECT-COMPO*
    
  •    ELEMENT DICTIONARY: SU_DefinitionSet*
    
  •          Price = *
    
  •          Size = *
    
  •          Url = *
    
  •    ELEMENT DICTIONARY: AppliedSchemaTypes*
    
  •          IFC 2x3 = IfcFurnishingElement*
    
  •          IFC 4 = IfcFurnishingElement*
    
  •    ELEMENT DICTIONARY: IFC 4*
    
  •          SchemaType = http://www.buildingsmart-tech.org/ifcXML/IFC4/final:IfcFurnishingElement*
    
  •    ELEMENT DICTIONARY: IFC 2x3*
    
  •          SchemaType = http://www.iai-tech.org/ifcXML/IFC2x3/FINAL:IfcFurnishingElement*
    

…

  •      ent.name          Moebel_2*
    
  •      ent.def.name      Moebel_2#1*
    
  •      Own Keys:         DIREKTER KEY = Inhalt*
    
  •      Own Keys:         DIREKTER KEY VIA RUBY = Inhalt*
    

____________ END ___________________

EDIT1:

so for now the system tells me, which ifc-attribute is set for a component.

the parameters can be set by

path = ["IFC 2x3", "IfcDoor", "ObjectType", "IfcLabel"]
success = definition.set_classification_value(path, "Room 101")

!!!

i also tried the 4x2 scheme - there are much more options in it for elements!!!

stan

Okay, it looks like you are finally on your way. Congrats.

I’ll leave you to it. Self discovery is the best means of learning retention.

1 Like

hi dan, yes, many thanx for your help. your tips and reminders followed by deep ruby diving :slight_smile: led me at least to the right direction.

now i can create preset-definitions for elements in ruby and set all 3 ifc-versions at once, if necessary …

cheers !!! stan

1 Like

An example of applying multiple schemas can be found here:

If you download the example and open it, you can export the used skc files via Model info > Classifications