Will not fillet again

This is an item made of closed polysurfaces booleaned to get the shape. I want to fillet a few edges but they will not select. When I try selecting I get the error:
“Ignored 1 edge in object with a creased surface. Use DivideAlongCreases to fix the object.”
I tried the recommended command but it does not help. I’ve had this before and can’t remember how I fix it. I’d also like to understand how this problem is created so I can prevent it from happening during modeling. I’m using the processes I always use, yet this happens on occasions.

.

Segment.3dm (1.6 MB)

That is really weird, I tried to fillet and get the same error. BUT if I click on ChainEdges it does it:


Not a solution but a workaround till someone has a solution.

I found that deleting the top and bottom surface and capping the polysurface again helped. However it would probably be better to start modelling this object from scratch. There are other weird surfaces on the outside…

I found that deleting the top and bottom surface and capping the polysurface again helped. However it would probably be better to start modelling this object from scratch. There are other weird surfaces on the outside…

Which is really weird, as the modeling was simple extrusions of standard geometric curves, and the booleans. I did remodel after posting and got it to fillet, but still don’t know that I did much differently, so I still don’t know what caused it. I guess the answer is, there is no fix, just remodel.

Well I remodeled it, all parts are kept as indivial parts in the attached file, so you can follow the steps.

Important notes:

  • The part looks symmetric. So use the coordinate system to your advantage. I moved the part so the groove is along the XY plane. That allows mirroring the ribs. I only drew one rib and oriented it to the center, that keeps the surface edge away in case you want to fillet one more set of edges… I used polar array to create all other ribs. In the front plane, I mirrored the upper ribs along the X axis.

  • I rebuilt the section of the cylindrical feature based on an intersection with a vertical plane. The intersection curve has way too many control points, which tells me something isn’t right with the outside surface. This is likely the reason why you couldn’t fillet the other edges.

  • I would use the revolve command for an object like this.

Segment_mrtn.3dm (2.4 MB)

The file is saved small. I deleted the original part and the embedded image.

1 Like

Thanks for your effort. I still don’t understand how things went awry.

I boolean-subtracted 2 cones, a center cylinder with three protrusions, from the main cylinder. All built on the same center-line and giving me three identical pieces. I then polar arrayed the external narrow cylinders and boolean-union-ed to the pieces. I can only assume the boolean union screwed up the surfaces some how. No Idea how that bad outline could have been created.

No worries, when I was a kid, I did crossword puzzles. This stuff is more interesting.

Without posting the file with your initial geometries before any boolean operations it’s hard to tell where things went wrong.

I actually save copies of all my parts on a hidden layer as I model. I went back and repeated the process as I remembered it with all the same parts. I did not get the problem. A jester in the machine I guess.

Thanks again.

In the tutorials I have read so far, using the original form was the recommended choice for doing fillets before actually making any 3d objects. The chair demo shows exactly this.

You have horrible edge tolerances on this part, up to over 0.2 mm.
Especially the small cylindrical rib detail on the outer surfaces.
This seems to cause the problem with not being able to select the edges to fillet (though it does work in rhino 5 interestingly)
After fixing the tolerances on the main surfaces (and removing the ribs) everything works as expected and even the disjoint fillet at the circle creases of the cylindrical surfaces vanishes.

2 Likes

Loose tolerance, misplaced surface seam, very short edges, and tangent surfaces are the main causes of failing fillets.

You can see the loose tolerance when you zoom on the isocurve near the edge and you see that the end of the isocurve does not touch the edge. The most reliable way to find the loose tolerance is selecting the polysurface before running What command and checking edge tolerances. If the edge tolerances exceed 0.001, change tolerance in Options command (Document Properties, Units) to about 0.001. Explode the polysurface and fix the edges of the surfaces. Sometimes RebuildEdges command is the best way to fix the edges. If the RebuildEdges command makes a gap between the adjacent edges, untrim the edges (with Untrim command) and trim the edges again (with Trim command). Join the surfaces into the polysurface and make the fillets with the FilletEdge command.

A surface seam in the wrong place is another common cause of the failing fillets. If you have this problem, move the seam away from the failing fillet with the SrfSeam command and run the FilletEdge command again.

Sometimes the fillets are failing because the FilletEdge command cannot cope with very short edges or with tangent surfaces. These problems do not have simple solutions. My favorite solution is replacing the polysurface with a SubD object. If this solution is not practicable, you have to either make the fillets by hand, or use different CAD program (e.g. Solidworks). Making the fillets by hand means cutting away the edges with pipes and making the fillet-like surfaces with the Sweep2 command.

Advanced Fillets in Rhino: https://wiki.mcneel.com/rhino/6/advancedfilletsinrhino

1 Like

Good input, how can the tolerance between two edges be checked?

Thanks for the suggestions. As I mentioned earlier, I used copies of the same parts and the same construction processes and it worked. The only part I left out was the polar arrayed ribs. So I assume that is where the problem happened. Everything else was simple extrusion/boolean. My tolerance is set to 0.001mm in my template. I’ve never changed that. Does this mean that Rhino changed it to complete an action? How did I end up with .2?

@phos4
@CalypsoArt
By “tolerances” I mean the deviation of edges by values higher than the file tolerances.
Usually these would be naked edges and result in open polysurfaces, but by using the “joinedge” command these file tolerances can be overridden locally to make edges appear to Rhino to be closed edges irrespective of actual deviation.
(files imported from other CAD software may contain “toleranced” edgeds too)
The only Rhino-native way to check edge tolerance that I know of is the “what” command (or the “details”-button in the “object properties” panel.
This gives you the following information:

For users of the Autodesk shape modeling plug-in (discontinued, works only in Rhino 5) there is the excellent “ADGlobalMatchingAnalysis” command which gives very detailed overview of edge continuity conditions:

All edges with red labels have deviations that are above 0.002 mm.
Under 0.002 mm deviation surfaces usually join without problems for a 0.001mm file tolerance.

There is a similar function in Rhino 7 WIP, albeit much more cumbersome as you would have to pick edge pairs manually to display deviation/continuity information.
Let’s hope McNeel will put some work into the usability of this new feature, especially the selection aspect (@pascal ?)

3 Likes

Thanks for the detailed and informative answer.

1 Like

you can use _testMarkOTEdges to see which edges are out of tolerance, since is a test command you have to type it entirely. better to use an icon.

4 Likes

CrvDeviation can be used to check the distance between surface edges. Start the command and select a two surface edges and/or curves.

2 Likes

The CrvDeviation command does not work well on the polysurface edges because it is fooled by the JoinEdge command.

CrvDeviation works very well on surface edges and naked edges of polysurfaces. It does not work on joined edges, whether the Join or JoinEdge command was used to join the surfaces.

1 Like

Explode and rebuild. fixes everything.