I’ve looked at all the roof solutions I could find relating to Grasshopper and @laurent_delrie’s code is what I have settled on as it yields the best results.
But, as this article points out, roof conditions like gable ends, dormers, flat tops, or varying heights from a single height input profile/curve set gets “complicated” and while I’ve put this on hold for now I, and I know others, would be very keen to be able to solve for “typical” architectural conditions of roofs such as gable, dormers, dutch gables, shed, etc.
With Laurent’s variable angle version of the script I was able to get gable ends working by effectively feeding an angle of 90 degrees to those sides of the boundary curve, thus producing a gable.
I experimented with Dutch gables by parametrically offsetting the sub-curve of a roof boundary at a Dutch Gable condition up the existing “hip roof” face and then lofting/extruding out the dutch gable portion at the top but never quite finished that in a polished state.
Roofs are annoying in that they are complex yet stupidly simple simultaneously, really roofs are just edges that have an angle given to them, creating a plane, and these planes are trimmed at their intersections and you end up with any conventionally framed roof form from that method. This obviously doesn’t account for onion domes, curvilinear roofs, etc. but that’s another/separate issue.
The majority (please correct me if I’m wrong) of roofs are framed with planar faces intersecting each other and some variation of this at a smaller/local scale within the larger roof form (such as dormers)
Solving this portion of the problem would be so highly beneficial. Next chance I have I’ll compile what I have been able to produce thus far and share to this thread in the hopes of advancing the topic.
TLDR; this is something I, and others, have been wanting/hoping to solve for years, and I’d love to collaborate on this effort for those open to it.