See IMG below:
Using this as an example, Say I have 3 different rooms bounded by different wall types (in this example, bounded by some combination of a generic wall, curtain wall, and/or brick wall). Each Room is its own branch and as you can see getting its boundary elements there is a sublist of walls for each respective room. Additionally, within each room is a rectangular entity let’s just say its a table. What is the best way to associate each face of the rectangular table to its bounding walls while keeping the same list structure so that Room is the main branch and its sublist is a face of the table’s bounding box. So if 0 (Room 1) List  is the curtain wall, the table’s bounding box list structure would match respectively with its northern most face would be 0 List .
Now, the first method that comes in mind is to shoot a point or line out of each face’s normal and check if it is inside or intersects a wall but it can get tricky maintaining list structure. Anyone have a good suggestion? Thank you!