Patch surface can't align edges

hi all,
i want to get basic shape like picture-1&2. I want to get clean surface so i use patch component, however it can not follow edge 100% with tiny gape(picture-3) which is not acceptable for me. is there any ideas to get it with surface?
the attachment is my GH.

thanks a lot.

picture-1&2


picture-3

ring.gh (22.3 KB)

Patch doesn’t exactly follow curves; it’s a best-fit surface that then gets Trimmed to the input curves.

There are several ways to make a surface defined by three curves which you can find with a google. Here’s one using Network Surface. Note that there’s a little bit of messing about required to generate Nulls for the “missing” curve at the apex.


ring network surface.gh (33.6 KB)

Sweep2 can also work (one curve each for rail 1, rail 2 and section), but gave me some funky results for your curves.

All that said, the shape in your source images is more complicated. I didn’t try to disentangle your curve generation components so can’t give guidance on how to achieve that shape. It might have a simple origin as a series of overlapping revolved surfaces with different axes? Hard to say without holding it!

EDIT: Looking closer, the radial lines are all linear, which a general three-curve solution is not going to give (my solution is noticeably dished).

I suspect the original shape was not generated from boundary curve surfaces but by parametrically altering a profile for each “fin”

Which could be as simple as intersecting the boundary curves with radial planes to get all the points.

1 Like

This isn’t there yet but I’m thinking this way?

1 Like

Hi Tom,
thanks to your great effort and nice explaination. I have tried to get every single surface from Network Surface and sweep like what you said. just unluckily, i found the the same issue appear in surface section with noticeable dish not linear. i was wondering that if it has some relation with curve angle and complexity. in older case, the curve have less complexity than circle curve, i never get confuse in surface section line whichever i use edge surface, sweep 2 or network surface component.
by the way, i have tried to turn 3 edges to 4 edges. Through using loft for every two curves, the boundry and section both are purfect. however, the surface will have clear break.

I have no idea how to get clean surface and keep boundary simultaneously. is it impossible in every software?
as you said, is there another way to get surface defined by three curves apart from what i have mentioned?

thanks a lot

Hi Joseph,
Long time no see. thanks for your demo.
you just give me new mind to think about this original shape. right now, i totally get stuck in three-edge surfaces controlling section line. based on your idea, i need to figure out how to get fading out point (blue points) and control curve shape (red curve).

by the way, do you have any idea about three-edge surface? forgive me, i just want to try my thought to solve this shape from basic surface.

I think you miscounted. I see five “ridges”, not four. I tried many different methods, including triangle shapes - all failed (so far).

sorry, what did i miscount? i have no idea where did i mention four ridges. this is my first time to find you take some time to solve some problem in this practice. In my memeory , you are the great master in GH solving problem with just having a look. I also keep working on it. Please sharing every detial about this case if you have get any progress. thank you so much!

Your image has four blue circles.

This version has five branches (55 boxes per branch, 110 boxes), five colors and isn’t correct. :thinking:

i get it. four blue circle is just used to mention fading out shape.

I changed the rotation domain so the end of one branch matches the start of the next branch and it looks pretty good :interrobang: Have to ponder this so angle is exact and i can SUnion them… :thinking:



The fact that each color appeared twice was a clue that something was wrong. Fixed that. Slider in the yellow group is an approximation, set manually by eye. Not ideal but close enough for now.


rotate_boxes_2025Jun18d.gh (31.9 KB)

SUnion takes 4.3 seconds. ‘Count’ slider set to 110 must be evenly divisible by two and five; I can fix that later so it’s always the case.

P.S.Count’ = 90 instead of 110. SUnion takes 2.6 seconds.

P.P.S. One last thing… I re-wired to avoid SUnion and put it behind a Data Dam (red group) so it’s now fun to play with parameters and see immediate results :red_exclamation_mark: Turns out the ‘Count’ slider can be set to any value, though I haven’t looked closely yet. Be careful about the Rhino ground plane.


rotate_boxes_2025Jun18dd.gh (22.4 KB)

2 Likes

A more accurate value for the yellow group slider in is 0.613549 but this is still by eye and varies slightly for different values of ‘Count’ slider. I haven’t figured out why that value works and how to derive it? As input to Pi, that is 110.43882 degrees. :thinking: Weird. :frowning:

I finally found a way to derive angle domain value (yellow group) instead of setting it manually.

It seems to work well for different values of ‘Count’ slider, though values that are multiples of ten (divisible by both 2 and 5) work best.


rotate_boxes_2025Jun19b.gh (35.3 KB)

I left SUnion enabled, though as noted before, it can easily be bypassed:

As you may have noticed by my struggles, I don’t thoroughly think things through. More like a sculptor working in clay, I “mold” the code until I like what I see, often using many temporary text panels to examine component outputs. Frequently, I build multiple versions of parts to compare them. I’m still not sure why the yellow group works. :roll_eyes:

@Xinrong, a quick test not looking too beautiful:
ring.gh (32.4 KB)




Unless you add many planes:
2025-06-19_15-25-17
Then the issue may become imperceptible?

'Hope it helps!
ring.gh (32.4 KB)

1 Like

oh my god, it’s a huge work. i need more time to study your script. thanks a lot. if i have some new finding, i will share my feedback.

:thinking: you transform three edge surface to loft surface. that’s a fresh way to keep both boundary and section line. very useful! i need to deal with twist surface in lofting and how to make fading out “ridges”.
sincerely, thanks a lot.

1 Like

hi Rene,
i am still working on how to avoid twisted surface when using loft component. Besides,i found that if i use your script to loft shape, it will have clear break in surface.

i think it’s bad side of loft. how can i solve this? i am working on that.

by the way, i notice you shift list and get two line merging to loft not using single list, may i ask why you made this?

1 Like