Need help! Fillet edge failed drives me crazy

Have sucked at fillet for a week. Fillet edge can’t trim corner where marks red. I don’t know why. The brep is convert from subd.

fillet fail.3dm (1.2 MB)


Hello- that does look like it ought to work - if you fillet ar radius 1 the fillets are made but overlap at one location so trimming fails - I’ll get this on the list for the devloper.

fillet fail_fixerupper.3dm (847.8 KB)

I guess the problem is here:

The adjacent edges of the surface are G2 to one another right there which makes offsetting messy - offsetting is required in the background in FilletEdge. I do not know if there is a workaround or a fix for this - I guess it would be best if ToNurbs could magically avoid making these but that is how the SubD is arranged…

@BrianJ , @theoutside , @pierrec - any thoughts on how the SubD might be arranged make the NURBS conversion better in cases like this?


1 Like

May I ask how exactly do the fillet right?

May I ask how exactly do the fillet right like you did? what magic do you fix the G2 and offsetting?

Did you miss the fact that he’s using Rhino 7 Corporate?


@pascal I think you are correct, this is a difficult case for offsetting and that is what makes the fillet fail. It should work – the left-hand side works and it’s a symmetrical of the failing right-hand side.

I don’t know what exactly makes the offset to fail, it could be a problem in the way ToNURBS builds the Brep or it could be an issue in the offset code itself and how it is used from FilletEdge.

I don’t see a way to re-arrange the SubD to make this go away, without changing the SubD surface location. I would rather make the fillet in SubD directly, with a Bevel.

@zhuangjia777 You can fix up the fillet manually after running the FilletEdge command. Personally I tried DupBorder on the new surfaces of the fillet, edited it to get nice closed trimming curves, and trimmed the initial surfaces with these. Pascal might have other tricks.

1 Like

I don’t have to understand why people fillet SubD geometry…

Sometime I have to install certain version for some. I know what it is means.

Your tips are always very useful. Thank you very much.

Feel the same, but I need take steps. Before this, the bottom was made by fillet.

Yep, that would be the way in this case, but I was wondering about a more general one – I generally steer users away from making surfaces like this. But you’re right it works on the other side - my guess is it fails at this location because that is the start/end of the loop of edges where the whole thing tries to wrap up. The fillet is made but does not clean up at the ends there - there is some overlap, so it cannot trim.


I refined the topology from my post above so it only consits of quads. Removed two edge loops where I beveled the edge before and creased the edge. Max. fillet radius is around 1.5 mm, no naked edges.

another approach would be, to remove all planar sections with simpler, trimmed surfaces.
(_unjoinEdges, _selChain, _curvatureGraph, _split Isocurve Shrink at Knots, _cap, _filletEdge)

Maybe this would be a nice option, for the ToNurbs function ? "simple planar areas"
replace all planar Areas with simple, planar trimmed surfaces.

after this filletEdge works fine:

fillet fail_tp_small.3dm (1.5 MB)


a pipe trim is a good “i’m not asking, this is not a suggestion, just #!@&ing do it”

cuz sometimes you just need stuff to be done.

1 Like

Interesting idea, that does help for the fillet and there are other places when a trimmed flat rectangle will be easier to deal with than a flat untrimmed Bezier. It would mean changing the face packing algorithm so that it finds the biggest possible groups of faces contained in a plane, probably doable but hard to say if it would ever be practically useful.

RH-67715 ToNURBS: Add option to simplify planar face sets in a SubD


it could also be a separate “post-processing” command,
(new / wish) _simplifyPolySurface (ooohh i would love this…)
or just be integrated into
_mergeAllCoPlanarFace … becoming more a Merge And Simplify Planar Surface Spans / Regions.

It would not be as useful as a post-process: SimplifyPolySurface would entirely depend on who’s defining what a “simple” Brep is, and would not be able to find the partly flat surfaces like the handle; MergeAllCoplanarFace could only work on the unpacked ToNURBS output, and would leave the non-flat section unmerged.

using quadremash?

Yes. That planner subd segments merge to one planner surface sounds logical.

I see. Two fillet surfaces’ ends are overlapping a little.