Loft 2 open curves fails if I select curves near left side succeeds if I select curves on their right sides

The attached 3dm file has a cyan curve and a black curve.

I’m trying to do a linear loft between them.

Both curve directions run from left to right.

I type loft, and pick near the left ends of the curves. The loft dialog appears but there is no surface preview. The loft type is already set to linear. If I OK the dialog then there is no surface created.

It doesn’t matter if I pick the cyan curve first or the black one.


If I select the ends near the right of the screen then I see a surface preview and the surface will be created when I OK the loft dialog.

What’s going on?

I want to do this loft inside a Grasshopper component so I can’t just pick the right hand sides of the curves.

I am trying to create the loft via Brep.CreateFrom loft but this also fails in the UI so it’s not just a scripting problem.

        for (int i = 0; i < outrEdgeCurves.Length; i++)
            pair[0] = outrEdgeCurves[i];
            pair[1] = innrEdgeCurves[i];
                joiners.Add(Brep.CreateFromLoft(pair, Point3d.Unset, Point3d.Unset, LoftType.Straight, false)[0]);
                DocumentAddCurves(pair); // my 2 strange curves


strangeTwoLines.3dm (842.9 KB)

This extra info might help you troubleshoot this.

I have included a 3dm file with the two surfaces that I’m trying to join.

I did a dupborder on the nearer surface and it has 5 curves around the border. Just explode the border polycurve and try to select the lower right hand corner.

You will “see” the worlds smallest curve where the corner is.

Has this anything to do with the loft problem?

strangeTwoLinesWithSurfacesAnd5LineBorder.3dm (884.8 KB)

Loft works as expected in Perspective viewport, but has the problem @jmcauley describes in the ortho viewports. Version 6 SR30 (6.30.20238.13311, 8/25/2020)

The black curve has a problem. Explode it and the result is two curves. One is the visible curve. The other is at the left end and has length 0.00. Loft works as expected beween the cyan curve and the black curve after exploding.

Loft works as expected with the unexploded black curve using Work In Progress (7.0.20238.17095, 8/25/2020).

The black curve has 6 control points stacked at the left end. Delete all but 1 of the stacked control points and Loft works as expected in V6.

Thanks David,

I tried running my component in Work In Progress (7.0.20238.17095, 8/25/2020).

I’ve found a new problem in Brep.Split

The problem line is : Brep surfs = uppr.Split(splitters, t);

Brep upprSaucerPatchCtr;
                    Curve c = saucerOutr.DuplicateCurve();
                    Line axis = new Line(0, 0, 0, 0, 0, 1);
                    RevSurface rs = RevSurface.Create(c, axis, Math.PI*3/2, Math.PI / 2);
                    Brep uppr = Brep.CreateFromRevSurface(rs, false, false);

                    Brep[] splitters = new Brep[] { outrWndTrm, outrMidTrm, innrMidTrm, Brep.CreateFromSurface(innrWnd) };
                    Brep[] surfs = uppr.Split(splitters, t);
                    // 0 is the outr rim
                    // 1 is the middle strip
                    // 2 is an innr skinny
                    // 3 is the inside
                    // 4 is the outr skinny
                    surfs[1].Translate(Vector3d.ZAxis * -0.2);

I’m splitting a flatish brep with 4 vaguely bowl shaped “surfaces” (they are closed, untrimmed, surfaces wrapped in breps via Brep.CreateFromSurface).

I expect the original brep to be split into 5 pieces. I labelled the pieces I expected in the comments.

But the returned array has 6 items. surfs[0] is null.

This is a difference between Rhino 6 and the latest WIP.

I have included a 3dm file to illustrate. The flatish brep (uppr) is cyan colored.

wip7BrepSplitProblem.3dm (1.7 MB)

@jmcauley Your question about Brep.Split is more likely to be replied to as a new thread with an appropriate title.