algorithmic modeling for Rhino
As your description and the last command used, which is the CCX(curve-curve-intersect), the missing intersect points must be at the cross of nearest curves, which are the blue ones [Figure 1]. From the screenshot, there are only two ROT3D(rotation 3d) commands and SEC (Brep/Plane Section) are defined, it seems that the cylinders are generated at first, and the rotated planes are used to intersect the cylinders, in order to generate the curves.
The redrawing is based on the previous assumpation, and there are 21 pairs of cross-arc drawn[Figure 1]. Finally, the problem is focused on the last step how to intersect curves.
In CCX, there are only 21 run times, which means the curves intersection are looped one-by-one, and 21 curves are arranged to finished 21 intersection[Figure 2, plz zoom in]. That is the reason, why CCX is not able to get the cross points between the neighbour arc.
For the curve-to-curve intersection does not work, in order to get the intersection points, I try to enlarge the set of intersected component, using the plane or cylinder to intersect with curve. When the PCX (plane-curve-intersect) is tested, 21 curves are intersected with the previous 21 rotated planes, the loop runs 441 times, which shows that the curves are mananged to intersect with the neighbour plane, and the intersection points are found. Moreover, the SCX (surface-curve-intersect) is tested, and the 21 cylinders are successfully intersected with the 21 curves. And more important point is that the SCX makes the intection points exactly between the curves and the cylinders, while the redundant ones of the intersection of plane and curve, in some combination of the rotated angles and cylinder distances, are are avoided.
Besides, the Graft/Merge command is also tried, I hope to merge the curves list together, and to intersect them with each other, but it fails. It is supposed that the graft command may change the data structure. When a list of cylinders are grafted, the new data is no longer the cylinders, which fails to plot.
In conclusion, if the loops of geometry are in the same level, the command is run in correspondence; if the loop is between different types of geometry, the total trials of loop are run.
[Rhino Version 5.0; Grasshopper 0.9.0076]
BTW, the .gh file includes the initial base line, which could be run directly in Grasshopper. Please help me to check the model, thanks.
oops...maybe I make a mistake... it seems to be a bug indeed.
The curve-curve intersection are looped one-by-one, which I mentioned before, seems to be wrong. For I try to reverse the curve list, and intersect again, it should be no longer intersection point, if the loops are really in correspondence.
Sorry for the misleading, I may try it later
There's no reason for your curves to intersect if they aren't spaced in a linear or circular fashion.
Just try some more extreme curvatures and zoom into where you expect the curves to meet. They just don't. The rest of your definition should be fine.
thanks for your advice.
I have checked the zoom-in , they does not meet together. For the curves are arranged
Just as you said, the curves are arranged on the curves in rotations, which makes the curves are not intersected in spatial, if the curves are arranged in straight line, without rotation, the curves could meet each other.
btw,in the process, I have found a way to make the curve list fully intersect with another curve list . if the 'Flatten' command is used, the intersection between 21 curves intersect with 21 flattened curves brings 441 time operations.
Symmetric counter rotation around an external axis (polar array) will also yield intersectable curves. It's the combination of linear movement and rotation that breaks the connection.
One flat list vs. a set of single item lists will essentially create a cross reference. That's how the OPs definition worked. ;)
thanks for your help! ^^