One big problem I am finding in the geometry I am receiving from others is polysurface face boundaries which have multiple colinear segments and, even worse, self-overlapping segments. By self-overlapping I mean that the overlapping elements are all colinear–i.e. the lines travels right, a new segment travels part of the way back to the left, and then a new segment continues to the right past the end of the first segment. Sometimes there are self-intersecting boundary curves, but more often they are self-overlapping, as a result of pushing and pulling faces using the gumball. If you push a face past another boundary, it sort of overlaps the two boundaries.
Is there a command for selecting self-overlapping lines? SelSelfIntersecting does not capture these.
And, none of the commands I know of work until I have exploded the polysurface and duplicated the boundary of each face, which is very time consuming. What I need is a tool that can inspect polysurface face boundaries without exploding the polysurface.
nothing automated, but showedges set to all edges will highlight the edge layout that looks a bit suspicions… you’d need to investigate it manually after seeing the potential for problems. fixing the issue with a non overlapping surface then running mergeallcoplanarfaces will clean it up.
seldup won’t pick this up because they are not exactly coincident.
it might not be much help, since you would have to click through all the elements manually… with the command WhatPanel it at least will instantly show you whats going on and the output is far more complex than a usual closed polysurface. maybe that helps you finding these faster. you could also use the isocurve display to figure out if something is weird
this only works when coplanar edges meet each other in my experience. for overlapping edges that unfortunately does not work. if you have planar surfaces that overlap and not closed objects you can also use PlanarUnion. that unfortunately only works on surfaces of the same plane, so in your instance that would flatten the entire object instead.
So, returning to the point about how to detect this problem, imagine there is a solid which does not show the overlapping on the faces, because it was not made as an extrusion (see attached). So the only problem is the self-overlapping boundary curve of the top face, which, as you have said, will be visible using ShowEdges/All
But is there really no way to detect this using a script? Can this geometric condition be defined mathematically/geometrically and therefore be picked up in RhinoCommon?
Yes, and thank you so much. A great idea. A potential part of a best “Modeling Practices”. [Not surprised or rather would be surprised if this notion has not been suggested, maybe, a long , long , long time ago.] The instant a bad object is introduced one is alerted. As the command resulting in a bad object is done for a “good” directed purpose [ -an exception is that if you are experimenting / brainstorming etc.a different category of directed “good” purpose.]. The command is being done to move toward a modeling goal. Unknown to the modeler the command results in a bad object, then [I do] stare at the monitor trying to figure out why is the resultant object bad. Right ? one is not running the command [in my case] for a development reason or for “fun”. So the utility is one figures it out in “real time” how to remedy the situation or ends up as to still puzzled as to what happened. In either case, on has the option to undue this command. For me, it is an undo. As you state an:
is in place rather than being ignorant to that a bad object was introduced many moons ago and now a modeling problem has arising and the trouble solving perhaps much more.
What would be extra nice is that as the “a bad object was just entered into the model” alert occurs an explanation as to the why the object is bad is offered. And maybe it is. It now occurs to me that if one selects the new bad object and looks at it’s properties …