Trevor,
See the attached zip file. I made a flipCoords3.py copy and pointed flipXY.py to it which provide a working example. However even though I made a bunch of modifications, your code ended up being correct and was just missing a single line which you could add or just use my example. It looks like you had almost solved the problem earlier.
As you know, based on your code comments, outer ring shapefile points run clockwise and inner rings run counter clockwise. That's how the software knows to make a hole in the outer polygon. The flip operation you did apparently also flipped the order of the ring points in both cases. So all you needed to do in your makeParts() function is reverse the order of each part so the flipped version works:
part.reverse()
myparts.append(part)
I added a couple of functions you might find handy for testing that tell you if a polygon (i.e. a ring) is clockwise or not.
It's important to realize when parsing shapefiles that the spec allows the outer rings and inner rings to be added to the shapefile in any order. You don't have to add the outer rings first. Just something to be aware of.
One more thing - you were using the multipatch shape type for the flipped polygon which wasn't necessary. It think that would have caused headaches unless you manually defined the part types which have numeric codes for inner and outer rings as well as surfaces. If you alter your code be sure to change the Writer shape type to "inSF.shapeType" so it works with all of the polygon type shapefiles.
- Joel