Module Contents

ifcopenshell.api.layer.assign_layer.assign_layer(file: ifcopenshell.file, items: list[ifcopenshell.entity_instance], layer: ifcopenshell.entity_instance) None

Assigns representation items to a layer

In IFC, instead of objects being assigned to layers, representation items are assigned to layers. Representation items are portions of the object’s representation. For example, this allows a single IFC Window element to have portions of its 2D linework (e.g. the cross section of its frame) assigned to one layer, and another portion (e.g. the glazing panels) assigned to another layer.

  • items (list[ifcopenshell.entity_instance]) – The list of IfcRepresentationItems to assign to the layer. This should be the items from the object’s IfcShapeRepresentation.

  • layer (ifcopenshell.entity_instance) – The IfcPresentationLayerAssignment layer to assign the item to.



Return type:



# Remember, all geometry needs to specify the context it is part of first.
# See ifcopenshell.api.context.add_context for details.
model = ifcopenshell.api.run("context.add_context", model, context_type="Model")
body = ifcopenshell.api.run("context.add_context", model,
    context_type="Model", context_identifier="Body", target_view="MODEL_VIEW", parent=model

wall = ifcopenshell.api.run("root.create_entity", model, ifc_class="IfcWall")
representation = ifcopenshell.api.run("geometry.add_wall_representation", model,
    context=body, length=5, height=3, thickness=0.2)
ifcopenshell.api.run("geometry.assign_representation", model,
    product=wall, representation=representation)
ifcopenshell.api.run("geometry.edit_object_placement", model, product=wall)

# Now let's create a layer that contains walls
layer = ifcopenshell.api.run("layer.add_layer", model, Name="AI-WALL")

# And assign our wall representation item (in this example, there is
# only one item) to the layer.
ifcopenshell.api.run("layer.assign_layer", model, items=[representation.Items[0]], layer=layer)