Surface UV changes with IGES export



I have two surfaces, one of which (green) is created by mirroring the other (purple). Using the Dir command in Rhino shows that the UV directions on the surfaces are also mirrored.Here’s a screenshot:

When I export these surfaces as IGES and then re-open the model, the U and V directions are swapped on the mirrored surface, shown here:

Is there a way to stop this from happening, or is it a limitation from iges? Is it some artifact from mirroring?
I need to be able to determine what the UV directions will be when exported. Is there a reliable way to do this from within Rhino without going through the export/import cycle?


(Pascal Golay) #2

Hi David - the green object in the first image has the surface normal pointing away from the ‘natural’ right-hand rule direction the actual underlying surface normal points the other way - determined by the U and V directions - Rhino has applied a ‘flipped flag’ to the object, to force the normal that many functions use on this object to contradict the natural one - IGES is seemingly letting the flipped normal drive the UV direction of the surface… is what it looks like, rather than the other way around, letting the UV determine the normal, which is maybe more what I’d expect, but I can see it being useful either way I guess… I’ll experiment but that’s what it looks like to me.



Hi Pascal,

Thanks that’s some helpful insight. Do you know if there’s a way I can (programatically) determine if the ‘flipped flag’ has been applied to the surface so I can predict when this will happen?

(Pascal Golay) #4

Hi David - here is a Python that will select flipped surfaces.

import Rhino
import rhinoscriptsyntax as rs

def SelFlippedSrf():
    ids = rs.ObjectsByType(8)
    if not ids:
        print "No single surfaces found."
    count = 0
    for id in ids:
        if rs.IsObjectSelectable(id):
            srf = rs.coercesurface(id)
            if not isinstance(srf, Rhino.Geometry.Extrusion):
                if srf.OrientationIsReversed:
                    count = count + 1
    print str(count) + " flipped surfaces selected."

if __name__ == "__main__":



This is just what I was looking for. Thanks for your help.