fillet problems

Next
 From:  armin
2510.1 
Hi to All,

Today I ran into some problems with fillets. The first shape at the origin was my starting point. On the second shape I used a fillet of .005, which caused some unexpected extension. On the third shape I used a radius of .01 which looks much better, but if you zoom into that "corner" you can see that those lines do not perfectly connect and on the opposite side there is a weird wave. I noticed the same problem on the curved face at the very top, the edges of the fillet do not really meet in one point. If I zoom in on the original part, those corners look perfect.

Thanks in advance

Armin
Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.2 In reply to 2510.1 
Hi Armin, I'd recommend scaling your object up by some amount, for instance by a factor of 10.

Currently when you get to small fillet radius values like that (basically less than 0.05), they can get to be too close to the fitting tolerance of 0.001 units, and when the fillet rails and such are calculated to a tolerance close to the fillet surface size itself it can make for sloppy results.

I do have an improvement to this coming for the next v2 beta so that it will automatically reduce the fitting tolerance for the fillet to be a fraction relative to the given radius if necessary, which will handle small fillet radius values much better. But for the moment you need to scale your model up to avoid it.

To scale your object up, select it and then run Transform / Scale, type in 0 <enter> to use 0,0,0 for the scale origin, and then type in 10 <enter> to scale up by 10 times.

When you perform your fillets on the scaled up object, you should see some better edges in there.

However, one of the things that you seem to be asking about is the issue of fillets not necessarily matching up in width where they intersect one another, which is a normal thing that can happen when doing a constant radius rolling ball fillet between several things that meet each other at all different angles.

Usually if you want things to match in such a situation you need to also select the other edges that are going downwards so that a corner patch can be made to make a good blending between the different fillets.

Here is a bit of an exaggerated example to illustrate a bit more. Here I have a block which has surfaces which meet at different angles:



Now if I fillet the entire block (all edges), I get this result:



Notice how the fillets are different widths - that is a normal thing because an arc of the same radius is smaller or longer in size depending on the angle of 2 lines where it meets, here is a little demo of that to make that more clear:



Both of those arcs in yellow there are tangent to the 2 lines, and they are each of the same radius, radius = 5. But you can see that they are of different lengths due to the different angles that they cover - the exact same thing happens with a fillet surface between surfaces that meet at angles as well.

So if I produce a fillet on my block there and only choose to fillet just the top 4 edges instead of all edges, I will get this result:



You can see there the kind of different fillet widths as they run into each other. This one now does not have any corner patches since not all of the edges coming from the corner were filleted.

That is not a bug, that is a normal way that fillets function.

To make fillets meet up more nicely you usually have to incorporate more edges into the filleting process so that there will be a corner patch made as the juncture between the different pieces.

Does that make some more sense for what you are seeing there?

- Michael

EDITED: 24 Mar 2009 by MICHAEL GIBSON


  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.3 In reply to 2510.1 
Hi armin, just an additional illustration using your model. Right now you're trying to fillet only these edges:



Which gives this result (I did the fillet on a 10 times scaled up model here which gets more accurate results) shown zoomed in to the corner:



Due to the various angles that those surfaces meet, that is the proper fillet result. They are closer to being the same angle than in my exaggerated example in my previous post, so they are closer to being the same in width than the other example, but it is the same thing.

What you may want to do instead is to select all of these edges:



Now when you fillet there will be the addition of corner patches where different fillets run into one another:



You'll usually want to have corner patches in between pieces, otherwise the fillet surfaces themselves will only tend to be perfectly aligned with one another in width if everything is touching each other at the same angles.

They will still make a valid solid if they are of different widths though, like the pieces are all trimmed and joined to one another for example (except in the one that you saw with the excess piece not getting trimmed properly, but I think that should go away if you scale up).

- Michael

EDITED: 23 Mar 2009 by MICHAEL GIBSON


  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  armin
2510.4 In reply to 2510.3 
Hi Michael,

thanks for your help. Yes, it makes sense, and actually now that you mention it, I remember that I've read about the small fillets in another thread. As far as adding adjacent edges for the fillets, that was actually anyway my intention, to be precise I tried to fillet all edges but the ones on the bottom face, didn't work though, that's why I tried to fillet a few at a time ... the rest is history.

It still doesn't work on the whole part, so I started filleting all the individual parts before I union them (4 parts), I can get it to work on three of them, the fourth I'm still experimenting, trying to figure it out before I bother you again.

I have to say, I'm amazed how fast, and how extensive and thourough the help on this forum is, especially from you Michael. I really appreciate it.

Armin
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.5 In reply to 2510.4 
Hi Armin,

re: fillet all edges - there are a couple of areas in here that have things split up into a couple of pieces instead of one big piece which MoI's filleter does not like. Also a couple of edges were split into multiple edge pieces.

For example here:



I've attached a tuned-up version, fillet_problem_fixed_3dm.zip - if you unzip that and load in that version, you should now be able to fillet the whole model in one go, here is what it looks like with radius 0.1 :




Basically if you can get things into a sort of "one single surface sheet per smooth area", that has a lot better shot at being filleted. The filleter doesn't even like it if you have planes made up of several co-planar fragments, instead of one big trimmed plane.

- Michael

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  armin
2510.6 In reply to 2510.5 
Hi Michael, thanks for sending me that file, and yes it works, that's kinda what I was heading for. Though I don't really want to have a fillet around the bottom face or the edges of that "tunnel", which actually raises another question. Since I would have to select a huge amount of edges to achieve my goal, is there an easier way? I'm thinking of something like selecting the whole part and than deselecting just the edges I don't want to be filleted? Or maybe selecting the edges I don't want to be rounded and than invert my selection?

I was also playing a little bit more around with those parts myself, after posting my initial problem yesterday. I also noticed that split on the curved face and was wondering if this might be the problem. So I started remodeling that part. My first assumption was that the problem might have been caused by some edges that I copied from an existing part, but after the extrusion the splits didn't show up. So I took the next step and cut that rounded face (Boolean Diff) with a curve, also a copied edge from existing geometrie. Since this edge initially wasn't long enough to cut through the whole part, I extended it at both ends. And the width of the extension is exactly where that trimmed surface gets split. Not sure if this is supposed to happen? Anyways after trimming the part with a new curve (arc), the curved surface looked ok, no more split lines, and of course the fillet command works now. I attached that file, maybe you can see why this extended curve behaves that way, and maybe this is just the way it is? Does this also mean DO NOT USE EXTENDED CURVES FOR TRIMMING? I also noticed, after turning on the points for that particular curve, there are a lot (relative :) ) of points, why don't they cause the trimmed surface to split?

One more question. In case I run into another split face in the future, is there a way to repair that without recreating the part? I guess I could delete that face and just fill it in with the planar command?

Thanks in advance
Armin

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.7 In reply to 2510.6 
Hi Armin,

> Since I would have to select a huge amount of edges to
> achieve my goal, is there an easier way?

Just use a window select - after you select one edge with a click, then you can use window select to target additional edges.

Also there are different window select modes, if you start from the left and go towards the right it will only use things that are completely captured inside the window, and if you start on the right and go towards the left it will grab any that intersect the window.

So for a case like this, you want to use Right-to-left mode (it will show a dashed window outline) and just barely miss the bottom part to get what you want.

Here's a video:



It doesn't matter which edge you select first (as long as it is not one of the ones on the bottom that you don't want selected) - when any edge or face is selected then window select targets edges or faces as well.


> I'm thinking of something like selecting the whole part
> and than deselecting just the edges I don't want to be filleted?

You could do that too, but the way above is faster I think. If you did want to deselect edges you would probably want to do a window deselect of them instead of a one-by-one click - to do that hold down Ctrl when doing the window.


> Or maybe selecting the edges I don't want to be rounded
> and than invert my selection?

Yeah, you can do that as well, Invert is available under the Select menu on the side pane.

It can be convenient to set up invert on a keyboard shortcut, so you can type I for invert. To do that go to Options / Shortcut keys and put in this for the command:

script:var gd = moi.geometryDatabase; gd.invertSelection();

I'll try to look at your other questions a bit later.

- Michael
Attachments:

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.8 In reply to 2510.6 
Hi Armin, to answer another part of your questions:

> And the width of the extension is exactly where that trimmed
> surface gets split. Not sure if this is supposed to happen?

Yeah if I understand you correctly that part is supposed to happen. Doing a cutting operation with a planar curve is the equivalent of extruding that curve out into a surface. When you do an extrude of a curve made up of multiple segments, you will get one surface per segment for the extrusion result.


> Anyways after trimming the part with a new curve (arc), the
> curved surface looked ok, no more split lines, and of course the
> fillet command works now. I attached that file, maybe you can see
> why this extended curve behaves that way, and maybe this is just
> the way it is?

Yeah, that is just the way that curve extension currently works - if you extend a line, then you will get a longer single line, and if you extend an arc you will get a longer single arc.

But if you extend just a "general" curve like this one you have here (looks like it was probably the result of some surface intersections or something like that), then the extension is a line segment that is added as an additional segment to the curve, so you get a multi-segment curve in that case which you can see if you use Edit/Separate on it to break it into different pieces.

I do want to add some options to extend in the future though, it should be possible to add an option that will make a "smooth" extension that could make lengthen that piece without making it segmented. I'm not quite sure when that will happen yet.


> I also noticed, after turning on the points for that particular curve,
> there are a lot (relative :) ) of points, why don't they cause the trimmed
> surface to split?

It is possible for a curve to have a lot of points internal to it but still be a single segment as long as the curve has a high degree of smoothness at each of those internal points.


> Does this also mean DO NOT USE EXTENDED CURVES FOR TRIMMING?

Well, not necessarily... It kind of depends on the situation.

But for filleting, things that are broken into more segments can cause problems. The way it causes problems is that the filleter will try to produce a fillet surface for every edge that you have, and then when it has produced all these fillet fragments, it has to try and trim them to one another, trimming surfaces that are tangent when they touch each other tends to be a difficult area of calculation, unfortunately. So currently if you just generally reduce the number of fragments and separate pieces in your model it will tend to avoid some of the areas where the filleter has difficulty in.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
2510.9 In reply to 2510.6 
Hi Armin,

> One more question. In case I run into another split face in
> the future, is there a way to repair that without recreating
> the part?

Often times you can do a bit of localized surgery to the shape rather than full rebuild.

For example, you can select faces, delete them, sweep in a replacement face, trim if necessary to the other existing edges, then use Join to glue it in and make a solid again.

There is a tutorial here: http://moi3d.com/forum/index.php?webtag=MOI&msg=446.17
which goes into some details on how to do some "low level" surface tweaking type stuff, like in that case it is a boolean that was done in the wrong place, and the tutorial is about how to salvage the shape by repairing localized areas of it.


> I guess I could delete that face and just fill it in with the planar command?

Yeah the things you want to repair are all planar then that is the easiest way.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  armin
2510.10 In reply to 2510.9 
Hi Michael, thanks again. Didn't know you can box select the way you explained it.

Armin
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Michael Gibson
2510.11 In reply to 2510.10 
Hi Armin, no problem!

I think that kind of edge selection is covered in one part of the Pod video tutorial if I remember right. Those videos are available from here: http://moi3d.com/1.0/docs/tutorials.htm

Those are definitely worth watching since they go kind of step-by-step through the whole workflow to build a few things.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All