I struggled with this for a few hours and this appears to be a partial
solution towards getting the roof in the right direction.
See the attached image for the roof I've been trying to simulate. The
big breakthrough was getting the gables in the right location. I had to
edit the following code in the *.pd2 file:
HasPitchedRoof = 1
RoofZoneErrorCode = 10
RoofEndIsGable[4] = 1
RoofEndIsGable[8] = 1
RoofEndIsGable[12] = 1
RoofEndIsGable[18] = 1
RoofEndIsGable[24] = 1
RoofEndIsGable[28] = 1
RoofEndIsGable[32] = 1
RoofEndIsGable[36] = 1
RoofEndIsGable[41] = 0
RoofEndIsGable[46] = 1
RoofEndIsGable[50] = 1
RoofEndIsGable[54] = 1
RoofEndIsGable[58] = 1
RoofEndIsGable[64] = 1
RoofEndIsGable[70] = 1
RoofEndIsGable[74] = 1
RoofEndIsGable[78] = 1
RoofEndIsGable[83] = 0
The numbers in the brackets correspond to the vertices on the custom
roof. They indicate the first vertices on the roof ends, and they equal
1 if the end is a gable. For example, I had a gable end defined by
vertices 4 & 5, 8 & 9, 12 & 13, etc. Non-gable ends were on vertices 41
& 42 and 83 & 84, so they are set to equal 0. The program had the roof
ends set to the wrong locations: it defined a roof end at vertices 3 &
4, etc. After correcting these and saving the file, I re-opened the
custom roof to see how it all turned out. It still isn't perfect, but
it is far better than it used to be.
Hope this helps.