Inherit Psets and Qtos of a user defined type for a given element

Hi 👋,

In ìfcopenshell 0.8.0, my goal is to instantiate an IfcWall using a custom IfcWallType in order to inherit all Psets and Qtos that I defined on the IfcWallType:

my_wall_type = ifcopenshell.api.root.create_entity(
    model,
    ifc_class="IfcWallType",
    name="Custom_Wall_Type",
)
# add some Psets to my_wall_type...
my_wall = ifcopenshell.api.root.create_entity(
    model,
    ifc_class="IfcWall",
    predefined_type="Custom_Wall_Type",
    name="my_wall",
)

but when opening the resulting IFC file in Bonsai, it shows "No Relating Type" in Scene > Object Information of the selected wall:

I've tried to play around with ifcopenshell.api.aggregate.assign_object() without any success for the moment.



For programmatic reasons, I would have loved 😍 to instantiate the object with the predefined type as a class instead of a string, but this currently doesn't work, obviously:

my_wall_type = ifcopenshell.api.root.create_entity(
    model,
    ifc_class="IfcWallType",
    name="Custom_Wall_Type",
)
# add some Psets to my_wall_type...
my_wall = ifcopenshell.api.root.create_entity(
    model,
    ifc_class="IfcWall",
    predefined_type=my_wall_type, # <---- use the type instance to inherit everything from it!
    name="my_wall",
)

I guess I certainly missed some other obvious method here...

Thanks 🙏!

Comments

  • edited November 2024

    In IFC PredefinedType is an optional object attribute that offers some fine grained classification. To assign a Type to an Element use ifcopenshell.api.type.assign_type()

    swiss_knight
  • e.g. an IfcWall might have a PredefinedType of 'PARAPET', but this is just a text label - when you select the Wall in Bonsai the class will be displayed as 'IfcWall[PARAPET]'

Sign In or Register to comment.