No matter what I do, when extracting trim-aware isocurves on the face edge, the result is null.
BrepFace bf; // defined elsewhere
Interval iv = bf.Domain(0);
int dir = 1;
Curve[] crv = bf.TrimAwareIsoCurve(dir, iv.T0); // null
crv = bf.TrimAwareIsoCurve((dir+1)%2, iv.T0); // also null, I never know what is what with dir and value
I guess, I need to find out which of the edges correspond to the desired iso-curves and go with that, but that is error prone.
Remember, Brep.Faces[face_index].Domain(dir) returns the domain of the untrimmed surface, If the specified parameters to BrepFace.TrimAwareIsoCurve fall on the inactive portion of the surface, then no curve(s) will be returned. This is the case of the trimmed cylinder in your document.
Please run the code with the delta parameter set to 0.0, not to 1e-12. The problem shows itself with delta value of 0.0. The solution is to provide a non-zero value for delta, like 1e-12.
When I run it with delta of zero, the code does not return any curves for your example file; with 1e-12 I get the four expected curves.
The problem persists in Rhino 6. In Rhino 5, the untrimmed side of the cylinder still gave an isocurve. Now, for the cylinder in the document no isocurves are returned at all when delta == 0.0.