Bug in ON_Brep::SplitClosedFaces() for Rhino 5 SR10?

Dear Rhino specialists,

We are using Rhino as preprocessor for our structural analysis package. Before transferring the geometry to the mesher, we perform a number of geometry operations like splitting bipolar and closed surfaces in a C++ plugin within Rhino.

However, since the latest service release of Rhino 5, SR 10 we observe problems with the function ON_Brep::SplitClosedFaces() from the openNURBS toolkit. Attached you will find a test command together with an example. Calling SplitClosedFaces() returns true, but does not split the face into two halfs.

Rhino: Version 5 SR10 64-bit (5.10.41015.17045, 15.10.2014)
openNURBS.dll: Version 5.10.41015.17045, 15.10.2014

TestSplitClosedSurface.zip (22.9 KB)

Thank you for your help,
Best regards,

I can repeat this, and I have logged this as a bug.


Thanks for reporting and my apologies for the inconvenience.

This issue will be fixed in SR11. In the mean time, you can work around the problem by testing ON_RevSurface::m_bTransposed. If this value is true, then call ON_RevSurface::Transpose() before splitting.

What does transpose do?

It reverses the parameter that is the “curve” and the “angle” in a surface of revolution:

  // If false, the "u" parameter is the angle parameter
  // and the "v" parameter is the curve parameter.  
  // If true,  the "u" parameter is the curve parameter
  // and the "v" parameter is the angle parameter.  
  ON_BOOL32 m_bTransposed;

So something like flip?

No, more like _Dir SwapUV _Enter. The U and V parameters will be changed. Flip will only reverse the normal of a BrepFace [WITHOUT changing the U- and V-parameters of the underlying surface].
In detail: Flip will set m_bRev to true on a BrepFace.