Each girder will break up the roof outline into zones. Then using a combo of boolean subtraction and intersection we should be able to generate this as a starting point:

The blue shaded truss outlines are the girders, the purple shaded are the trusses requiring a further subtraction step to make the correction for the valley truss sets, notice the third purple truss from the right.
Basically I'm walking you through my algorithm for generating the truss geometry data so I can then draw each truss. As you can see this is not a trivial process. Lots of steps and lots of "edge cases" that can potentially trip it up. That is what I mean when I say the devil is in the details. However if the basic algorithm is sound one should be able to add in logic to deal with the issues and in the end you end up with a robust piece of code. These are the kinds of things that keep me up at night.
Based on these slices we should be able to extract the key geometric points that define each truss and then send that data to the separate truss "draw" algorithm which sorts out all the messy details on how to place the webs, plates and all that fun stuff.
















