How to Create single polysurface from multiple planer patches not is same plane

Hi,

I have set of planer voronoi patches (planer) and need them to join without distorting the base geometry , the idea is to loft nearest edges and then bridge the triangles, the problem is I am having hard time finding nearest edges and bridging them, let alone bridging triangles…
Anyway the goal is to get single polysurface / mesh with outermost boundary… please help… almost a week trying to find solution …
Any help will be greatly appreciated. attaching the GH file

2019-06-24%2011_57_51 surface_patches.gh (9.3 KB)

By that you mean that you want to do a thing like this with your polylines (BrepFaces outerLoops Curves as Polylines):

or

Thank you so much for reply.
I think the second one is what i will prefer with triangles closed somehow, but honestly don’t mind first either. Also the final surface may not be a closed brep as you can see from my attachments…
thanks again…

Well … the closed state is not an issue at all (is Topology related). Nor the options a/b shown are issues (they just use a different Method to bridge [Loft] correct pairs of LineCurves)

The big issue (for you) is that this task is very easy via code (C#) … while I have no idea if is doable via native components: I don’t work with them.

So … a C# solution would be a 100% black box for you. But if no other can provide a component based solution I’ll post here the C#.

sounds good to me, I will wait for some of the experts (2-3 days) to see if they can provide some solution… and get back, personally I would also like a component based solution as it will add to my working knowledge of grasshopper…
Nonetheless, I sincerely thank you for taking time to help.
will ping you back in a day or 2… thanks a lot…

It’s just a connectivity game you know.

That said the whole issue is to find the proper LineCurve pairs:

  1. If the BrepFaces were (at first) in contact (meaning that you did the inwards offset - say from something the likes of FacetDome ) then the Brep FF connectivity is the first thing to get.
  2. If they are at distance as captured then a proximity clustering is the first thing to do meaning a DataTree containing pairs of Polys (as Curves) then locating the prox LineCurve pairs (obviously testing directions as well [via DotProduct etc etc]) is very easy.

For the triangles is also a connectivity puzzle (slightly more challenging: intersections of Lists etc etc).

In the mean time a draft for your thing is ready (Would include some pasta stuff as well in order to get the gist of the prox connectivity, prox pairs and other mysterious things).

For bridging the triangle, I was more thinking on converting to poly and plug the holes using polygon naked edge detection, correct me if i am wrong… and the fact is that the edges were not connected from the beginning, these edges were generated by projecting the end points of curved voronoi edges (generated from pattern flow on curved surface) to average normal plane and connecting using polyline…
appreciate your help…

Assume that poly i yields a segment si that is closest to a poly j segment sj. Since we test DotProduct for j this means that si starts from node si as well (N of unique nodes = N of segments).

Now for bridging we need a connectivity tree (see left most info panel above) meaning that i has some adjacent polys and j has some others as well. If the Intersection of these 2 Lists is not empty … then we are talking for a Loop (so we get the 3rd poly: say with index k).

So we go from node si > closest node to poly j > closest node to poly k > closest node to i.

All these are elementary with code or er … pure hell if you are not familiar with thses things.

sure, its hell… for me coding is list of commas, semicolons and syntax which too much to handle. My last attempt of coding was using MEL (maya embedded langauage) now … you know that was BC. Although I have been working on various 3d for almost 20 years I dread… algorithms, commas and semis…
by mistake I saw one video tutorial on grasshopper two weeks ago and I realized, no commas, no syntax … just pure logic… and I am hooked… and thanks to wonderful community of helping users like yourself, it is a designers dream come true… can’t thanks you enough…

Now coming back to the problem… I did progress a bit and stuck at a juncture where your knowledge / experience can help… I found a mid point of all the curves (point on line component) then using proximity component found the shortest line between nearest points which lies on the pairs that I would like to loft… my problem is how to track the lines back from the points on curve using some component. If I can, I will have start group of lines and end group and … my solution… attaching the GH filemidpoints.gh (17.0 KB)

This works for the geometry you uploaded, point groups and proximity are the important components:
surface_patches-MP.gh (29.7 KB)



Also note, not all your nodes are triangles or quads, so after grouping node points, I had to sort them along fit circles to make closed polylines and then use a small C# script to go from polylines to triangulated mesh.

Thank you so much… I will study this and see how much I can understand…
appreciate your help…

interesting :slight_smile:
Here’s a funky (‘less complicated’) attempt using proximity - might require ‘slight’ adjustment if other patches are used:
surface_patches.gh (22.6 KB)


1 Like

Nice one, using cap is a smart idea, actually our definitions are quite similar if you remove my node making part and just cap at the end :smiley: I would just change out the lofting with the following to maintain the original intent of planar parts.


surface_patches-Tri.gh (22.8 KB)

1 Like

I just love the forum and the people… its amazing… just plain respect for all of you…:pray:

Based on my limited understanding of lists etc this is what I made out from the solutions provided above. this may not be strictly parametric but does the job…
I sincerely thank all of you wonderful users who helped me to arrive at solution as required… have a great day!


Surface_patches_N7.gh (21.6 KB)

BTW: If at some future time you decide to expand your wings (you should: time flies and the future is already past) drop a word: it’s a case where connectivity is King (and everything else is trivial):

Screen%20Shot%20140

1 Like

Hi Peter,
I am indeed waiting to see your solution… the future is now!!!
see if I can make some head or tail out…

No … the future is past. In fact every future is past these days … meaning that the only thing that matters for you is how to be on high demand.

Other than that I must add some checks more. For instance what happens if we have tiny segments (your stuff) that have no meaning in real-life?

Plus … as it is it allows you to bridge gaps in a user controlled way (make connections (pairs) between all polys that have min distance < D) … and this may become quite tricky to master and handle (an auto Method is on the making).

1 Like