Rhino's "bad objects"

Hi Robert -

That appears to have been fixed in Rhino 8.
-wim

1 Like

That would be Siemens they’d have to make a deal with since Solidworks runs on Parasolid, which comes with A LOT of baggage… but they also claim that some newer tools actually run using Catia code since Dassault owns them… either way, it would probably cost an insane amount of money.

However, maybe we could all start asking for improved robustness in that area for Rhino 9 or 10? :wink:

3 Likes

I haven’t tried newer Solidworks after 2015, so I have no idea if its fillet has a baggage or not. :slight_smile: But several years ago the SW fillets were pretty good and worked on extremely complex shapes 99% of the time. However, to do so, SW uses “hacks” such like using fake radius that will not always follow the user-set radius. This is how complex fillets are possible in SW, whereas a perfectly accurate radius would cause issues.

Got another bad object by joining the brown one with the red and yellow:

But not only do I not see any issues, it’s a mirror of the green surfaces which did join without problem and the yellow is just trimmed from the brown original surface.

Now, since I repeat this three times on the larger surface, a workaround that I discovered is to trim down that surface to only encompass one repeated shape (basically the crop in the screenshot above). That stops the generation of the bad object… again, seemingly without changing the pictured surface areas…

bad-object-created.3dm (1.3 MB)

Hi @eobet,

I’ve tried to replicate that but haven’t been able to. Joining two pieces at a time, joining all three, joining all the objects in the scene at once - all work fine. FWIW I’m on Rhino 7.28.23051.1001, 2023-02-20.

Regards
Jeremy

Hello- look closely here -

image

That needs to be cleaned up I think including untrimming or RebuildEdges on the larger surface that has a ‘fragmented’ edge right there.

image

-Pascal

Bingo… however, can’t help but wonder if the famous “accurate trimming” of Rhino has struck again…

1 Like

The solution is explained in this topic:

Hi @pascal,

As far as I can see Join results in a bad object if you run the command and then select the objects. However if you preselect the objects and then run Join, it creates a good surface.

Why the difference?

Regards
Jeremy

Hi Jeremy - yeah, I saw that as well - it may have to do with the order of processing - I am sending it over to the developer.

RH-73278 Join creates a bad object

-Pascal

This thing is really making my hairs grey… not matter what I try, I get a “bad object” here… the problem is that I can’t extract all surrounding surfaces and put them in a .3dm for upload, because then RebuildEdges actually works and I can Sew everything again without creating a new “bad object”. It’s only in the entire product where it fail (but always on this surface) and I can’t share that.

:face_with_symbols_over_mouth:

As an alternative to using _ExtractSrf to prepare a model for upload, try trimming the model outside of a closed solid, e.g., sphere, centered on the bad face.

@eobet can you upload the full model for inspection?
I’m curious to see if this relates to a recently fixed bug with joining. (The fix will be ported to v7 in the next SR)

2 Likes

Already moved on unfortunately. This is real work that just had to get done. I think that after I fixed some other part of the model, the particular highlighted surface stopped becoming a bad object…

But after Block Management and filleting, I must say the “bad objects” are my least favourite part of Rhino (which I’ve never seen any other CAD software I’ve used in my past 20 years in the industry).

EDIT: Wait, strike that… the export does generate a bad object after all? Try this…

bad-object.3dm (426.8 KB)

(I also get a “bad object” after a boolean union operation that I’m currently wrestling with… so it never ends on imported models… that particular case was solved by deleting faces and sewing instead, but still annoying work that wastes time better spent elsewhere.)

EDIT 2: Here’s an older case that I apparently saved and forgot about as well…

rebuild-edges-still-bad-object.3dm (66.7 KB)

EDIT 3: They just keep coming! The sewed fillet is made in Rhino, the red fillet is the original imported one, but it has a naked micro edge that won’t go away (another huge Rhino annoyance and time waster).

bad-to-the-bone.3dm (157.5 KB)

EDIT 4: Two surfaces which previously weren’t bad, suddenly become bad and RebuildEdges doesn’t help. I only trimmed their bottom part and now I wanted to sew again after adding a fillet… now, UntrimAll and then manual trimming and sewing fixed it, but again… it’s shitty tedious work for something that never should happen in the first place!

bbbbbbbad-to-the-bone.3dm (50.7 KB)

i would start asking just to freeze functionality and take time to resolve bugs and refine what is already there. that would be perfect for me :smiley:

@eobet thanks a lot for sending the examples. I am looking into them at the moment. Were these all created directly in Rhino or is this imported geometry modified in Rhino?

These are at least partially related to the join bug that was solved recently, unfortunately it won’t solve things for existing objects.
I see that rebuildedges sometimes makes it worse or cannot solve the issue. In case of the last example, the bigger surface has a tiny extra border that I have seen earlier as a result of the join bug that Jim reported. This is a nasty one as it won’t fix itself with rebuildedges.
The bad objects with the pointy fillet is a well know issue that is only going to be solved if the fillet algorithm will ever manage to make pointy fillets correctly. The pointy end is folding over itself. In current WIP the first sample and the pointy fillet join up without leaving a bad object, but will not solve the underlying problem of the fillet. Manually setting the endpoints of a pointy fillet is the only option in Rhino right now.
I will need a bit of time to put these in a proper bug report.

I don’t know what you mean by “sew”. You should try to explain in terms of Rhino commands if you want others to understand what you are trying to do. By “sew” do you mean using the command JoinEdge?

In my experience, RebuildEdges rarely fixes bad objects. RebuildEdges will bring out of tolerance edges back into tolerance but doing that can cause problems.
If you are working on imported geometry that was modeled at a looser tolerance you may be stuck working at that looser tolerance if you don’t want to remodel all the out of tolerance surfaces.

In most of the examples you have posted of bad surfaces you can fix them by using Untrim command with _KeepTrimObjects=_Yes option and then Trim command will fix the surface. Pascal has a script for doing that.
https://wiki.mcneel.com/_media/people/retrim.zip
Don’t know if that is any faster than doing it manually with a macro.

In a few cases the trim boundaries that you get when you untrim are messed up. Typically the messed up areas are near the corner points (vertices). If you want to zoom in and see the damaged trim boundaries you should be working in parallel viewport.

Originally everything was imported, but at one point it was all exploded, some of it re-trimmed, a few surfaces re-created or rebuilt.

Sew/stitch/join. Over the years I’ve used so many Nurbs software that it’s all a blur for me.

This is why long time ago I proposed the idea for a dual tolerance setting. Doing it manually helped me weed out 99% of the reasons for bad objects. In fact, I haven’t experience any bad objects since months, because I preliminary bump the tolerance to 0,0001 mm while trimming/splitting tricky areas, then I revert to 0,001 mm which is my default tolerance. It’s not recommended to often switch between different tolerance settings, hence my proposition to assign a custom tolerance only for “Trim”, “Split” and “Project”.

Here is the very solution in action: