I think I have exhausted the diagnostic tools available in OpenNurbs to find out what is wrong with this Brep, and I can’t figure it out.
Topologically, it’s a cylinder, but the top and bottom are pieces from surfaces of revolution and the mantle and edges are more complicated NURBS shapes of high degree. The edges and trims are precise to arithmetic precision and changing the tolerances doesn’t seem to make a difference.
The readouts of the testing functions are:
isSolid false isManifold true isOriented false hasBoundary false IsValidGeometry true IsValidTopology true IsValidTolerancesAndFlags true
I also tried running these automatic setting functions, to see if any of them changed anything, but none did:
SetTrimBoundingBoxes true SetTrimIsoFlags true SetTrimTolerances true SetTrimTypeFlags true SetVertexTolerances true
Although my understanding is that being oriented is not necessary, I used
face.Transpose(); to make sure all face normals point outwards.
As an aside, SetEdgeTolerance seems to be broken in OpenNurbs requiring a namespace called TL_Brep. Without it, it appears to assign ON_UNSET_VALUE to any edge that is part of a trim, rendering the edge (and with it the brep) invalid.
nurbsgen.3dm (39.2 KB)