A question about sweeping: this is an old problem that exists even in Rhino, and it regards sweeping a profile along a ‘curvy’ curve with kinks. It is always difficult and I understand that mainly it is because the intersection between the “curve spaces” is not planar so the profile at the kink idealy should not be planar but concave (or something like that) The problem gets worse if you want the sweep to be tappered…
I have never found a really good solution to this (the only fake solution is to make the meeting segments straight near the kink but the result is “unorganic” and for big angles it becomes totally weird.)
Profiles are much more complex as it appears to be.
In ICEM SURF there are 16+ methods in sweeping and still very often you need to solve things manually at kinks.
Within a manual approach I would go for method 1, extending surfaces to its intersection plane ( you need to guess it, since often you can’t exactly find it). Now you need to positional match both surfaces. Its good to have an advanced matching functionality, which allows you to blend the other cps proportionally, in order to keep curvature flow similar. In Rhino, VSR tools had this functionality, but native Rhino as well as Grasshopper doesn’t have that, so its up to you to implement something like this. However I doubt someone can do this easily without really knowing the math behind NURBS.
I wonder if it would be possible to try an iterative approach by extracting isocurves (on each interation) and test end points of the curves against its counterparts on the other surface.
By translating and keeping the translation vectors from each iteration one could continue to move in directions that comes closer (its counter part point) and…
Perhaps some kind of flocking/agent methodology could converge within a tolerance (isocurve-ends matching up).
Redneck approach, but perhaps it would work? If I only had unlimited time I’d play around testing things like this…
So the general conclusion is that there is no ‘off the box’ solution right?
RIL I was thinking your approach as well but it would become extremely heavy very quick even for just a single kink (plus: with the tappering, things get more complicated because the prequisites for the corresponding curves to meet are many)
I was even thinking going ‘meshy’ and then translating it into nurbs but I think that would defeat the whole purpose and even then there would be need for deep understanding of topological properties.
(for example: I believe that the intersection (where the ‘spaces’ of the two curves meet) must be a specific surface which would need advanced mathematics to find…
so… we leave it as an unsolvable problem?
Well … read stuff about Continuity (C1,C2,C3 etc), Locus, Hocus, Pocus and other mysterious and ominous things that can being exposed/explained via mysterious and ominous words like:
Whith regard analysis matters (on hocus pocus things) see attached as well (gets curves, makes them pieces, shuffles the pieces, joins the pieces, finds C1 stuff etc etc). But … well … since you don’t like analysis … don’t try it, he he.
Yes, but you don’t necessarily need to use sweep for making a profile. You can do it quite old fashion with a network of well placed curves instead.
In the end its up to a good placement of controlpoints, in order to prevent bad curvature, twisted surfaces and other failure. Less is more, never trust algorithms which are there to shorten work for you. That’s also why for freeform surfacing a direct modelling software outperforms a parametric one. You can’t catch all possibilities when doing freeform surfacing in 3d space
You can also analyse the knotvector(aka knotlist) and search for duplicated numbers other than at the end. So a knotvector of {0 0 0 1 2 3.5 3.5 3.5 4 5 6 6 6} has a kink at t = 3.5
I’m fine with both Tom and @TomTom . I would never trust a @Garmin though. I just put one in the garbage collector and got my self a < plug > TomTom. < / plug >.
Come on guys!
there must be an easier way!!!
I tried finding the space intersection between the curves ‘manually’ (a surface defined by the intersections of offset curves)
It only works for untappered sweeps,for coplanar AND planar curves, its buggy, it’s heavy and doesn’t always produce a solid.
One of you programming gurus should come up with a plugin for these cases. kinkysweep2.gh (48.4 KB)
its obvious you are missing the second part, which is the most difficult part actually. You need to match both ends positional with blending all cvs propotionally. Without out this step you wil never get a solid…
Besides that its not always right to just make a plane, since you can also have a jagged intersection (, which in certain situations can be much better). In addition to that, I would never use Grasshopper for modelling something complex if you don’t have too. Direct modelling is unbeatable for freeform.
Icem Surf could solve your planar case with ease thus, however Icem devs, similar to the Rhino core develloper do have a much deeper understanding as we have, and I would consider myself not being a beginner in cad programming and modelling. So the indention of my last post was just that I believe this problem is of much higher complexity as you believe it is. I can solve your problem manually, but you can argue if Rhino and other cad software has no good automated solution, why should we solve this with writing some simpilistic gh scripts?
It smells electric with a scent of spring flowers…
I tried to somehow get an idea of what that ‘bisecting’ surface might look like… I was hoping that if I at least was able to construct it ‘mechanically’ I could somehow find a way to project onto it the ‘kink profiles’ and that way achieve the kinky sweep but it looks like a fool’s erant.
oh well… Knowing where not to search is a gain as well… bisecting surfaces.gh (26.1 KB)
I have created a definition for creating a -somewhat- automated kinky sweep. (by creating extrussion surfaces at the kinks) and I think I’m 99% there. (although It still only works for coplanar curves)
My only problem is that for some reason I cannot get to smoothly remap the profile on those surfaces and I am not able to rotate it. when I start rotating it, it swaps orientation erratically. I bet its a simple thing but I’m really stuck.
Can somebody have a look pls?
(I’m uploading the full definition because I’m not completely sure where the problem might be) kinkysweep3.gh (76.5 KB)
Yeaaah!
I finally found the way!!! it can now work perfectly (almost). Profile can rotate and the sweep can be tappered.
I couldn’t believe that it would be so complicated to create a simple sweep!!! (I need more studying apparently hehehe)
I’m posting it in case somebody else loves old fashioned forms like me! kinkysweep5.gh (58.0 KB)