Why does Rhino have lots of issues in filleting complex surfaces while Solidworks usually fillets easily?

I don’t think we’re complaining about the same thing, and not sure you understand what mine would be exactly. Although, I have probably mentioned a few details about why Rhino fails to fillet in a few cases so far.

Because going from one program to another makes formats consideration non-avoidable.

IGES isn’t able to output solids, for example, but STEP can – during the export/import workflow between programs. As I already mentioned. So should be obvious why I mentioned them, especially cause I haven’t seen anyone bring it up yet really.

IGES does have the option but requires “stitching” and can cause more potential of translation errors than just using STEP/STP.

Technically I agree with you, but at the same time I know enough already about geometric entities in CAD programs to know the term “fillet” is relative like many things are.

So, a ‘fillet’ derived from meshes, or surfaces – are two completely different things.

And within each of those two geometry types, a “fillet” can be comprised infinitely many ways.

However, there are a few intended ways which are much more efficient than others – of course.

A user that blindly expects software to be magical and do things automatically via imagination and lack thereof, is a user that will not be as efficient as one who knows the difference between geometry comprised on one entity type and another.

Not to mention those infinitesimal ways to fillet via Sub-D, etc.

I was kinda quoting Einstein, and yes once a 3D modeler that combines all those modelers together in one, is understood, it would be obsolete. :wink:

And to kinda quote Musk, ‘some technology shouldn’t exist’.

It’s important, imo, to reduce redundancy. There’s many other programs we could mention, but at some point we’d have to be more specific about GUI features, rather that broadly merging programs together.

And as technologies become obsolete, like when patents expire for example, then you’ll see different programs actually embodying the same features – or even sooner via licensing.

I’m glad you mentioned that. I’ve seen it before. It’s a really good read.

I especially like how Mark said, “… Many people are disturbed by the fact that if they trim a solid (like the wall of a building) they reveal the inside of the boundary representation (BRep ) of the solid. This is more to do with the technique used to cut the wall than an issue of “was it actually solid”. If you cut a solid using a Boolean operation, using either a surface or a solid as the cutting tool, you will never see inside the BRep. So everything is kept secret.” :sweat_smile:

What does the author mean by “see inside the BRep”. It’s kinda misleading. Maybe the author is referring to the inside of the multi-faced-BRep-solid.

I think part of the problem is “everything is kept secret”.

This ultimately will prevent users from actually knowing how to overcome errors and bugs that occur from time to time, that are associated with geometries comprised of certain “secret” format compositions.

But yes it would be nice if things were to automatically design themselves out of thin air like magic flawlessly and instantly – as a user I could wear a blindfold.

IGS can contain solids, just some programs (Rhino) doesn’t support them. Temp.igs attached is a solid body and Temp1.igs is the same part exploded. Hard to test this as most solid modelers will tend to stitch while importing but here’s what I get reimporting to Fusion.


And the same files imported into SprutCAM
temp1.igs

temp.igs

temp1.igs (274.3 KB)
temp.igs (186.9 KB)

1 Like

There is a simple explanation for the problems you are having making fillets. You are using the Filletedge command to make fillets. The Filletedge command is based on an algorithm that attempts to make one fillet for each edge that the user picks. But that is an invalid algorithm. In some simple cases like a box that algorithm may produce the correct result but with polysurfaces more complicated than a box it is likely to produce invalid results. If you have access to other programs like Solidworks that make correct fillets you will notice that often it does not make one fillet for every edge on the part. If SWX tried to make one fillet for every edge SWX would also make bad fillets like Rhino does.

One of the consequences of the defective algorithm used by Filletedge is it may try to attach a fillet to the wrong surface. Someone posted what looks like an example. The reason Rhino tries to use one surface is because only one edge was picked. This error of trying to always create one fillet for each edge picked has been known for more than 20 years. Rhino developers have shown no interest in doing anything about it.

There is nothing special about the tools you will find in Rhino’s Solid menu. You can make valid
“multi-faced breps" using only the Rhino tools not found in the Solid menu. A solid is just a multi-faced breps with no naked edges. You can construct valid solids without using any of the tools in the Solid menu and the advantage is you can make them more reliable and accurate.

2 Likes

That was kinda my point earlier. And while the conversion process does this “stiching” option, the results may end up treating every feature more as individuals rather than one complete solid.

I’m not really having problems making fillets, other than a few cases where Rhino doesn’t know what to do with where vertices, edges, and faces may reside from time to time.

So, I don’t agree with your statement, because I think I understand the dilemmas well enough to be able to hurdle over the issues as they arise.

My intent however would be to isolate the shortcomings of the algorithms, and make them more powerful for all the users who would rather not care about the nature of the algorithms and their shortcomings.

I’ve leaned several versions of Solidworks in the past, but sadly I don’t spend an arm n’ a leg to have current access to it.

That’s a very interesting description of a similar problem I’m familiar with, as I’ve stated earlier. Meanwhile, I think the developers need help isolating the patterns where this failure may occur, so they can make better algos to make better fillets.

So, in this example I believe the fillet will work if the vertices that are adjacent were actually coincident instead.

Rhino has a hard time trimming back the fillet from one adjacent surface to another.

But if the surface edges were recomposed slightly, it will work.

So, question is why does Rhino have this problem?

Using first principles, we have to isolate the patterns of the problems.

I disagree. The more familiar I get with those tools, the better I’m able to make use of them.

I agree with that statement 50/50.

I think of Rhino tools, such as ones for “solids” or ones for “surfaces” just as tools that correlate to NURBS whether they’re “joined” or whether they’re “exploded”.

Same geometry, different state.

Agreed.

I agree you can make valid solids with tools other than the “solids tools”, but whether or not they’re ‘valid’, ‘reliable’, and ‘accurate’ is really up to the user’s workflow and abilities.

Any time I ever “explode” a polysurface, I usually always rebuild the edges immediately following the explosion in order to maintain the originals, so that when I rejoin them I won’t get compounding errors associated with the Brep “edges pulled away” effect.

You can see where I’ve shared my secret workflow previously discussed here: Simple surface from simple planar curve isn’t planar - #26 by pascal

An important reason I use this workflow, is relative to cases where “vertices” of geometry can be even ever so slightly off at times when they should be perfectly “coincident”.

I’ve noticed this can occur do to geometry becoming moved around microscopically for whatever reason, and the “edges pulled away effect” can conceal this occurrence, and even propagate it.

My workflow I shared, is what I use to reveal the reality of whatever geometry I’m dealing with.

My opinion is that users who ignore the “edges pulled away effect” are using a futile workflow, and fillets with be even more problematic over time, as they attempt to add further and further details to their models.

Making sure that surface edges are as close to their originals as possible and addressing the naked edges relative to their originals, is a more correct way of insuring the “solid” models are clean and better suited for “successful fillets”.

Now, obviously it would be great if Rhino would magically take care of it so that I could ignore it, from a user standpoint. But until then, the bugs need to be relentlessly isolated and reiterated until someone says “no, algos for that are impossible”.

Extract the bad surface from the last picture, then remove the unwanted extra control points with ! _RemoveControlPoint or ! _RemoveKnot and leave just the last row there, then join again. Voila! It’s a well known bug in Rhino since years.

1 Like

It doesn’t sound like that is working out…

Many dozens of models have been posted to this forum with out-of-tolerance edges and the source of these error is often caused by using the tools in the Solid menu. Filletedge, the Booleans and the Solid Edit tools can and do make out-of-tolerance edges.

I am saying that if you took the time to make the same objects using tools not found in the Solid menu you would have a better understanding how the tools found in the solid menu work and more important when they fail to work properly you would be less bewildered as to the cause. You would have a better understanding of underlying process and less likely to fall prey to erroneous beliefs about how that process works.

Any trimmed surface that is more complicated than a flat plane will have edges that are not exactly on the surface (if the edge is not exactly at a surface Isocurve). But there is no reason to need edges that are exactly on the surface. If the edges are within .0001" of the surface that is more than accurate enough for manufacturing purposes.

1 Like

I wonder if this might be a side effect of how tolerances work in Rhino.

When you Trim a surface with a curve (not an isocurve), the intersection is fit to stay within the absolute modeling tolerance in effect at that time.

Joining allows 2x the tolerance as two surfaces cut by the same curve could be in some places as much as 2x tolerance apart.

Just a thought…

I’ve also opened a few models created in SW, Exploded, RebuildEdges, Join and found open edges that were more than 2x tolerance.
I have no proof, but I suspect some fudging may be going on under the hood.

3 Likes

I’m not sure what you’re talking about. I was reposting someone else’s image.

Maybe I interpreted the image wrong. I’m not seeing a “unwanted extra control point or knot”. Typically deleting those can lead to surface shape changes.

I’m not seeing ho that’d be ‘voila’ lol

Huh?

I think you’re misinterpreting the solid pallet tools requisites, characteristics and outcomes.

They require more precision and skill to use than surface tools probably.

The user does have some responsibility to pay attention to details in order to be successful with higher level tools such as the solids tools – they’re more advanced and complicated than regular surface tools, hence they require more things to be correct in order for success.

I’m not bewildered. I’ve literally modeled billions of points, millions of surfaces, and hundreds of thousands if not millions of polysurfaces in Rhino and other programs in the last 18 years.

Maybe we’re lost in translation.

Imma go ahead and surmise you’re speaking very broadly here, cause my understanding is fine, and accurate thus far – I’m willing to make adjustments over time as I’ve done relative to my understanding of B-rep’s, but you and I seem to be on different pages.

Without seeing you demonstrate exactly what you’re reiterating, there’s no way for me to adjust my purview if I am mistaken in my beliefs of particular processes.

I’m not sure what you mean here really. But I sort of agree. It all boils down to tolerance, GD&T’s, machine/instrument resolutions, and generations of changes n’ evolutions, etc.

very interesting.

also very interesting.

I really like how Rhino let’s us see deeper into models details.

Many years ago when I was converting my work from several other 3D CAD’s into Rhino and converting all my files to compatible formats – I would see all these strange revelation type residual geometries that I’d say were hidden from view or “fudged” hahah for sure.

It’s like other CAD’s just do fudging, while Rhino reveals the truth or rather can also add or reduce tolerance too.

But I really like the abilities Rhino provides me as a user to investigate all the details of a model etc.

Right.
Standard procedure when using data from other sources was to NEVER believe the stated tolerance.
Select a few objects, Explode, RebuildEdges, the use JoinEdge as a measuring tool to see how far apart surfaces edges were in several places. Based on what you found, you could set your Rhino tolerances accordingly and do some Joining. If you got closed polysurfaces, your sleuthing was probably good.

The big problems started when someone quickly modeled something with sloppy tolerances to get it done.
Then someone else faked the tolerance setting before sending the model off to an unsuspecting contractor for machining.
Rhino was blamed.
We would describe how to test the model (above) and expose the cheat.

3 Likes

My reply was related to the following post of @eobet :slight_smile:

1 Like

Many US-based companies work with tolerances of 0,005", this is why importing their models (mainly made in Solidworks) in Rhino often end up with plenty of naked edges due to the fact that 0,005" is equal to 0,127 mm. Any Rhino set to file tolerance of 0,1 mm will render those models exported from SW as “not good enough”. Even if some company works with more strict 0,0005" tolerance, that’s still equal to 0,0127 mm, which may be a problem for those who work in Rhino with file tolerance of 0,01 mm.
I work in Rhino with an absolute tolerance of 0,001 mm to make sure that my models will be compatible with any other CAD program.

3 Likes

What a weird topic.

As far as industry standard surface modelling is concerned, Autodesk Alias wins hands down by a wide margin. Why? Interactive CV control while evaluatng and experimenting. As far as industry compatible surface modelling is concerned, Rhino 3D wins hands down. And for those tier-2 and tier-3 clients are concerned where, formal aesthetics are less important, you can easily get by with Creo, Siemens NX or SolidWorks.

And this is why a tier-1 client has more than just one software available in the studio.

The whole metric vs Imperial thing is such a cluster$$$$, in the US.

NASA has admitted that one (at least!) of its failures was attributed to an Imperial (English) to Metric translation / conversion. When I was in grade school in the US in 1970’s, we were assured that as adults we would have to understand and use metric. Bull$$$$, that’s never happened, at least outside of the medical field or other hard sciences.

2 Likes

We still have too many “good old boys” left in our government to make this happen. Terms limits would have corrected this a long time ago but we have to wait until they “pass” for the oversight to be corrected. Arrrgh. Sorry for the political rant.

1 Like

I see maybe you’re talking about this one :thinking:

Yeah I’m not sure what’s going on there, but now your comments on modifying control points and knots does make alot more sense :beers: :slightly_smiling_face:

definitely looks like some type of control point anomaly. :face_with_monocle:


Well it does appear you are bound and determined to stick with your mistaken beliefs. So kudos for being so determined.

You are the one complaining about edges that are pulled away from the surfaces and fillets that are not working right…
I don’t have those problems. I have tried to explain that you, also, could avoid those problems by using different methods which are available in Rhino, but you aren’t interested.
OK no problem, but maybe someone else reading this thread will benefit…

1 Like

Yes, this particular bug with multiple control points in the same place at the very end of a fillet happens all the time after using ! _FilletEdge on two or more chained edges. Several people have reported the bug over the years, but unfortunately it’s still not resolved… Last year I also made a dedicated topic regarding this bug. You can see how I solve it in these videos:

1 Like

I hope there is a feature can tell you if a fillet is a fail or at least tell you if a closed polysurface become open after fillet.