algorithmic modeling for Rhino
Hi fellows,
Have a look at the picture below:
Path{4} output two "planar curve" rather than "closed planar curve" as others. Those two planar curves would not generate planar (trimed) surface .These curves are generated by intersection between plans and one closed brep .My question here is : could it be possible to get unclosed curves between plan&closed brep??If this is a bug ,I wish our David could have a look at this and release a fix .Thanks .
Tags:
It might be a bug, maybe it's a tolerance issue. If the intersection thinks it's closed within tolerance, but creates a curve that thinks it's not closed within tolerance, this is what you'd expect.
If that's true, I have to add code to 'repair' curves that come out of Brep|Plane intersection. Or maybe I have to add a component that closes a curve (sounds like a good idea anyway).
--
David Rutten
david@mcneel.com
Poprad, Slovakia
In the meantime, you can use the attached script to close curves.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
@Piter
I guess it is of the "tiny gap" or "tolerance" thing .The gap is so tiny that it looks like a bug !?!
David's "close curve" code work like a charm ,but I tend to think it is a bug until I could understand that intersection between closed brep and plane may generate unclosed curve ?
@David,
thanks !! the close curve code help me out !!Closedness (in the platonic sense) is a property useful to mathematicians and philosophers, but not to programmers. A brep is not really ever Closed (capital C), it's only ever closed to within some predetermined tolerance. If the brep has very clean faces that join together well -say, a cube- then the brep is probably closed to within as many digits as is possible in double-precision computing.
If however the brep consists of trimmed and freeform faces then there will probably be gaps and fissures when two faces meet. As long as these imperfections are smaller than the document tolerance, we'll treat them as closed. Our meshing algorithm will repair these fissures and our brep display algorithm will only present a single edge curve, where there are in fact two edges very close together. So to all intents and purposes it appears to be a perfectly closed brep and all our commands should treat it that way.
To give you an example, imagine creating a boolean difference of a torus and a sphere:
This operation should result in a closed brep (and it does), and no matter how much you zoom in on the sharp edge, you'll only ever see a single curve and no gaps in the mesh.
But what if I don't use BooleanDifference but instead use Split. Now Rhino has no way of knowing we want the two trimmed edges to line up.
And now if I zoom in on the sharp edge, I do get two very different edge curves. (This image is a very large magnification. The distance between the two edges is ~0.0002 mm while the sphere had a radius of 10mm).
If I now proceed to join these two surfaces, Rhino will detect that the edges are well within tolerance, and it will treat it (and display it) as a single, closed edge. But that's just display trickery, the underlying brep faces still have the same gap between them.
This is why I suspect your Brep|Plane intersection results in an open curve. It's because the real intersection is not closed. I don't know why the closedness-repair-algorithms didn't kick in, but now at least you understand why the bug occurs.
--
David Rutten
david@mcneel.com
Poprad, Slovakia
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by