5.0 IFC Viewer

This example shows how to use the compas_viewer to visualise IFC files.

from compas_viewer import Viewer
from compas_viewer.layout import Treeform
from compas_ifc.model import Model
from compas.datastructures import Tree, TreeNode

model = Model("data/wall-with-opening-and-window.ifc")


spatial_tree = Tree()
root = TreeNode(name="root")
spatial_tree.add(root)


def add_entity_to_tree(entity, parent_node):
    node = TreeNode(name=entity.name)
    parent_node.add(node)
    for child in entity.children:
        add_entity_to_tree(child, node)


add_entity_to_tree(model.project, root)

spatial_tree.print_hierarchy()


viewer = Viewer()

for entity in model.get_entities_by_type("IfcBuildingElement"):
    viewer.add(entity.body_with_opening, name=entity.name)

viewer.layout.sidedock.add_element(Treeform(spatial_tree, {"Name": ".name"}))

viewer.show()

Example Output:

../_images/spatial_tree.png