thanks, I’ll add that information
Brian-
outstanding, thanks!!
Art Smith
Doesn’t look to me like anything was done to fix Sweep1. It still makes the same surfaces with bad edge curves. In RhinoWip when you join the sweep result to the EdgeSrf surface made from the sweep’s edges it no longer makes a BadObject, but Instead the join just fails. Commandline says: Unable to join surfaces or polysurfaces. That is not much improvement.
IMO, the real fix would be to get sweep1 to work right. Otherwise it just another example of a Rhino tool where if the user wants it done right they have to do it themselves manually.
thanks @jim for reporting. I’ve opened a new issue for this, since the other issue ended up being a Join issue.
RH-90361 Sweep1 creates unjoinable polysurface
The join issue was due to an attempt to join to a surface with bad edges.
The real problem here is Rhino is not identifying the result of the sweep as an invalid construct.
Sweep1 creates a invalid result full stop. Check should identify it as a BadObject
Why focus on join? Other commands will also fail. That should be the definition of a bad object - something that causes downstream failures.
Offsetting the result of the sweep upward by .01" with the solid option will also makes a bad object. Does that mean you should write up a YT item for OffsetSrf?
Since it fails at Join, that needs to be checked too, like you have seen in the previous issue, starting at the point of first failure. Mikko needs to check if there is still an issue left to solve in Join, and can then forward the rest of the issue to Dale.
If only that were true. The point of first failure is Sweep1.
The fact that the error at Sweep1 is not caught is in itself another bug.
It just happens that the OP used the result of the sweep in the join command had it been offsetsrf you would be claiming that OffsetSrf was the point of first failure.
This is why bugs like this take years or even decades to fix or never get fixed.
Since the bug does not occur in Rhino 7, perhaps the code for the “Sweep 1 rail” tool for V7 and V8 could be compared to see if there are any suspicious differences?
The sweep1 bug is also in V7. What’s different is that Rhino8 detects the error when you run join and gives a badobject warning. That’s good. Better late than never with the warning.
If you make the sweep1 in v7 and then and then make the EdgeSrf as described by the original poster and then try to join the two it fails in both Rhino7 and Rhino8. The difference is that in Rhino8 you get a badobject warning.
In Rhino8 SelBadObjects selects the result of the sweep and Check command gives this warning:
Rhino polysurface object is not valid.
brep.m_T[5] trim is not valid.
trim.m_type = singular but trim.m_vi = [7,14] (the m_vi values should be equal).
brep.m_L[1] loop is not valid.
brep.m_T[loop.m_ti[1]=5] is not valid.
brep.m_F[1] face is not valid.
brep.m_L[face.m_li[0]=1] is not valid.
ON_Brep.m_F[1] is invalid.
I’m unable to reproduce the bug in my Rhino 7. Perhaps I do something wrong?
2p750 elliptical horn for Weber 32-36 Rev A.3dm (1.4 MB)
The issue is when you make the sweep1 with the rail in one go. Not when doing things manually in multiple steps.
@jim I’ve added the note about other operations, but I still want Mikko to look at this first before moving it down the line. Again, as you have seen, the previous report did show an issue in Join
The bug is caused by the larger round surface which is split into two halves. When I extract them and build a replacement using the bottom surface edge as an input, and then build the top EdgeSurf, I can join everything properly. However, then the other arc extrusion on the top becomes a bad object. Untrimming the bad surfaces and joining them together fixes the bug.
I wonder why Rhino is unable to build a single surface, considering that the input is a proper arc edge of a whole vertical surface? Maybe exceeding the 90-degree limit of degree 2 surfaces before adding a knot forces the split?
Also, the resulting straight surfaces are degree 2 in either direction, even though the input curve consists line segments that are degree 1.
There is another bug related to the ! _Radius command. When I inspect some radius and then try to check a straight line or edge, Rhino reports the last value instead of 0.
The best way to handle this case is to NOT use the joined curves. Instead, run the ! _Sweep1 command and then activate the “ChainEdges” option from the Command line. That also generates clean surfaces (no longer splits the larger radius surface).


