MergeEdge problem

In the file below, in V8, there is an edge that is split in a place I don’t want - and when I extrude the surface I get an unwanted microsurface there.

In V8 I tried using MergeEdge before extruding to eliminate that split, but it wants to take the radius corner edge with it. MergeAllEdges makes a bad object. In the WIP MergeEdge does not include the corner, but instead does nothing… MergeAllEdges also makes a bad object.

Obviously DupBorder, fix the one edge curve, then remake the surface/extrusion is the solution. But methinks MergeEdge should also fix the problem…

BTW, the split edge was because the surface was extracted from another polysurface with adjoining surfaces. That original polysurface object was also manipulated with multiple sub-object operations moving surfaces to adjust sizes.

SplitEdge.3dm (3.1 MB)

I have seen this many times, there are conditions that exist that make the merge edge misbehave and I’m not entirely sure of the mechnism that causes that. (hoping one of our devs chimes in)

the correct fix (or workaround depending on your point of view) as you pointed out is to untrim, keep your edge curves, then rebuild the bad ones. and retrim.

if i rectangular-sub-Select the area i get:
1 edge, 2 vertices added to selection.

so there is a really tiny (0-length ?) edge
curve index 9

curve2d[ 0]: TL_NurbsCurve domain(-3.5,-0) start(-31.25,-14.1) end(-31.25,-14.1)
curve2d[ 1]: TL_NurbsCurve domain(-12,-3) start(-31.25,-14.1) end(-31.25,-18.9)
curve2d[ 2]: TL_NurbsCurve domain(0,4.71239) start(-31.25,-18.9) end(-28.25,-21.9)
curve2d[ 3]: TL_NurbsCurve domain(-62.832,-3.168) start(-28.25,-21.9) end(28.25,-21.9)
curve2d[ 4]: TL_NurbsCurve domain(-4.71239,-0) start(28.25,-21.9) end(31.25,-18.9)
curve2d[ 5]: TL_NurbsCurve domain(3,49.2) start(31.25,-18.9) end(31.25,23.1)
curve2d[ 6]: TL_NurbsCurve domain(0,4.71239) start(31.25,23.1) end(28.25,26.1)
curve2d[ 7]: TL_NurbsCurve domain(2.85714,57.1429) start(28.25,26.1) end(-31.25,26.1)
curve2d[ 8]: TL_NurbsCurve domain(-40.2,-0) start(-31.25,26.1) end(-31.25,-14.1)
curve2d[ 9]: TL_NurbsCurve domain(-12.5664,-0)
	start(28.75,21.6) 
	  end(28.75,21.6)
curve2d[10]: TL_NurbsCurve domain(-12.5664,-0) start(-24.75,-17.4) end(-24.75,-17.4)
curve3d[ 0]: TL_NurbsCurve domain(0,3.5) start(37.5,-0.1,49) end(37.5,-0.1,49)
curve3d[ 1]: TL_NurbsCurve domain(3.168,62.832) start(97,-7.9,49) end(40.5,-7.9,49)
curve3d[ 2]: TL_NurbsCurve domain(3,49.2) start(100,-4.9,49) end(100,37.1,49)
curve3d[ 3]: TL_NurbsCurve domain(2.85714,57.1429) start(97,40.1,49) end(37.5,40.1,49)
curve3d[ 4]: TL_NurbsCurve domain(3,12) start(37.5,-4.9,49) end(37.5,-0.1,49)
curve3d[ 5]: TL_NurbsCurve domain(0,4.71239) start(37.5,-4.9,49) end(40.5,-7.9,49)
curve3d[ 6]: TL_NurbsCurve domain(-4.71239,-0) start(97,-7.9,49) end(100,-4.9,49)
curve3d[ 7]: ON_LineCurve domain(0,40.2) start(37.5,-0.1,49) end(37.5,40.1,49)
curve3d[ 8]: TL_NurbsCurve domain(-4.71239,-0) start(97,40.1,49) end(100,37.1,49)
curve3d[ 9]: TL_NurbsCurve domain(0,12.5664)
	start(44,-3.4,49)
	  end(44,-3.4,49)
curve3d[10]: TL_NurbsCurve domain(0,12.5664) start(97.5,35.6,49) end(97.5,35.6,49)

my guess - mergeEdge, rebuildEdges and other commands have difficulties to handle this.

_dupBoarder
_join
_planarSrf
will result in this surface

and now _mergeEdge does the job.

… so we miss some remove-zero-length-Edges functionality ?

kind regards - tom

At the very least _RemoveAllNakedMicroEdges should fix this, but as stated in Help:

The RemoveAllNakedMicroEdges command removes very small single naked edges; that is, edges that fold or loop back on themselves and have no matching edge to which they can be joined.

In the provided example, the zero-length edge has ends with different vertices, so the fold/loop requirement of the command is not being met.

If removal of zero/almost-zero-length edges is included in this command, it may need a separate tolerance.

Hi Mitch -

I’ve put that sample on the list as RH-91871 MergeAllEdges: Failure Sample
-wim

RH-91871 is fixed in Rhino WIP