If things weren’t complicated enough with complex roofs, they just got a lot more complicated.
Rather than having two or three different types of connections I think it makes more sense to sub divide it into two additional options and then a connection is simply a connection. You end up with two additional options: TERMINAL and CONNECTION
With terminal it is very similar to a gable end however the roof just ends, no overhangs, no outlookers etc… This would be used when framing the roof up to a wall that is parallel to the roof edge. Theoretically this same type of roof could be achieved with the CONNECTION option however it would remove the requirement for selecting a primary roof (or solid) to connect to, and just simply end the roof in a squared off fashion.
The CONNECTION option is a bit more interesting. To get the results that we want we need to make this end treatment as general as possible. One could potentially connect to any group or component in the model or to another Medeek complex roof assembly. I will need a tool within a tool which allows the user to select the primary roof/object that they would like to connect to.
-
If the selected group is a Medeek roof assembly then the primary roof will also store that it is being connected to by a secondary roof, and the secondary roof will list the instance name of the primary roof it is connecting to.
-
If the selected group or component (must be a solid) is a non-Medeek roof assembly it will also store and list the instance name of the primary object that the roof is connecting to.
Here are shown a couple of possible connection scenarios:
Connecting to another complex roof at an oblique angle and below the fascia line.
Connecting to a non-Medeek roof (solid group).
To keep this option from completely spiraling out of control we must make the assumption that the only roof planes impacted by the connection will be the two adjacent and orthogonal roof planes that are either side of the connection roof edge (the connecting roof plane technically does not exist). I’m sure there will be users who try to subvert this requirement in certain design situations, so some logic to check this limitations may need to be implemented.
View model here: