What is a "Bad Object"?

If I do SelBadObject, what are the reasons that it might be bad and how can I check?

Normally when I get a bad object it is because of non-manifold edges. ZoomNonManifold.

I have an object Rhino says is closed and has no non-manifold edges so I am trying to figure out what other commands to run.

This Wiki page is a bit old, but the information is still valid… --Mitch

I should have added that, in my particular case, Check gives

brep.m_L[77] loop is not valid.
end of brep.m_T[loop.m_ti[0]=334]=(180.471,131.969) and start
of brep.m_T[loop.m_ti[1]=335]=(152.507,145.436) do not match.
brep.m_F[73] face is not valid.
brep.m_L[face.m_li[2]=77] is not valid.
ON_Brep.m_F[73] is invalid.

What is weird is ExtractBadObject Delete and Cap fixes the problem in this case.

Yep, sounds like a trim gone bad. If you have _CheckNewObjects turned on, you will get a message at the moment that your object “goes bad”. 99% of the time, this will be immediately after a Join or Boolean operation.


I am having a case now where a MergeFace (MergeAllCoPlanar=YES) creates a bad object. CheckNewObjects does not catch this. I curious why merge face would do that.

brep.m_L[995] loop is not valid.
end of brep.m_T[loop.m_ti[196]=4721]=(147.625,519) and start
of brep.m_T[loop.m_ti[0]=4529]=(168.625,294) do not match.
brep.m_F[950] face is not valid.
brep.m_L[face.m_li[0]=995] is not valid.
ON_Brep.m_F[950] is invalid.

MergeAllFaces tries to find coplanar surfaces that can be merged within tolerance, then replaces them with a single planar face. I suspect you had surfaces just out of tolerance but MAF tried anyway, resulting in a bad trim. Surprising that if you had CheckNewObjects set to yes, it didn’t flag it at the time when it was created.