Create building from solid does not report trim surface on roof

Hi everyone and @chris.
I am creating a building from solid as in this other topic:

Respect to that problem, now I am also adding another solid on the top of the building in contact with the others:

As for the adjacent buildings to the wall, I find the intersection and then create the model from solid as follows:


However, even though it trims the vertical wall (still with the issue of the topic I posted above), the resulting building does not have any trimmed surface on the roof. Even though the HB interesect solids properly trims the roof as well. I believe that the issue has to deal on how the DF building is generated. Because the horizontal floors, and therefore ceilings/roofs are generated by horizontal plans thanks to the split_solid_to_floors function.
I don’t know if it is possible to implement some functions in a way to properly consider trimmed surface for ground floors and roofs when creating buildings from solids.

    # interpret the input _floor_to_floor information
    min, max = geo_min_max_height(geo)
    floor_heights, interpreted_f2f = interpret_floor_height_subdivide(
        _floor_to_floor, max, min)

    # get the floor geometries of the building
    floor_breps = split_solid_to_floors(geo, floor_heights)
    floor_faces = []
    for flr in floor_breps:
        story_faces = []
        for rm_face in flr:
            story_faces.extend(to_face3d(rm_face))
        floor_faces.append(story_faces)

I attach here the two rhino and gh files.
NoIntersectionOnRoof.3dm (67.2 KB) NoIntersectionOnRoof.gh (15.9 KB)

As always, thank you for your help and the amazing tool you created.

The answer is still the same as it was on the other post. Boolean Union your solids together if you want them to act like one building.

Hi @chris, thank you very much for both replies. I am writing here so there are the two topics.
I had a look at the rooms_to_stories_to_building.gh file but I need to work with breps, so I cannot start from the building footprints and extrude them in gh. Maybe I can list my requirements to be more clear, I need to:

  1. Directly work with extruded building footprints, so breps, or solids if you prefer
  2. Each building solid must be subdivided into stories, with one room for each floor
  3. Every solid, even if in contact, has to be a different building, so a different honeybee model when I will convert it from DF to HB.

These are the reasons why I can’t use the workflow present in rooms_to_stories_to_building.gh, I think. But, tell me if I am wrong.
Regarding your other suggestion, I have tried to perform a boolean union, both in rhino and in gh with the solid union component, but when I plug in the result into the DF Building from Solid I get an error 1. Solution exception:Story must have at least one Room2D.. Here the pic of the workflow:

If I do the boolean union in Rhino and then input the breps I get the same error.

As you can see from the pic below, I have already wrote some custom components using the SDK that do exactly what I want: I get one room for each floor and the adjacent and surrounding buildings are treated as shadings.You can’t see it, but the surfaces in contact with adjacent buildings are adiabatic. I just wanted to fix the parts you see highlighted in blue if I can, and be able to include a building on top of this as I was saying in this topic.

I hope I didn’t misunderstand your advice. Anyway thank you very much for your help and time.

The rooms-to-stories-to-buildings is a more detailed workflow than the from-building-solids workflow and offers more control. So, anything that you could build with the from-building-solids workflow can be built with the rooms-to-stories-to-buildings workflow. If all of your breps are extrusions, than you don’t really “need” to work from breps. You can just take the floor face of the brep and say that it gets extruded to height X.

In any event, you should not be using both the “HB Intersect Solids” and the Boolean Union components together. That sounds like a recipe for a lot of weird tolerance errors. Just Boolean Union the unintersected solids together and use the unioned solid as the input for the dragonfly component.

Thank you very much @chris! I will work on my workflow following your suggestions. Thanks as always for the help you and the team give to the entire community.