Surface Paneling Based on UV lines

I have this overall surface that has a UV grid. I am trying to split the surface based on the UV lines so that I have control of the panels in terms of labeling and assigning different colors to them.


Construction Sequence.rfa (336 KB)
Construction.dyn (210.2 KB)

It looks like the LunchBox does what I need, so far

You can try something like this if you want the curvature of the panels to match the base surface


panels.dyn (14.9 KB)

pt1 = srf.PointAtParameter((0..1..#u+1)<1>,(0..1..#v+1)<2>);
pt2 = List.DropItems(List.Sublists(pt1<1>,0..1,1)<1>,-1);
pt3 = List.DropItems(List.Sublists(pt2,0..1,1),-1);
pr1 = Surface.UVParameterAtPoint(srf,List.Transpose(pt3<1>));
pr2 = List.Transpose(pr1<1><2>);
cr1 = Curve.ByParameterLineOnSurface(srf,List.FirstItem(pr1<1><2>),List.LastItem(pr1<1><2>));
cr2 = Curve.ByParameterLineOnSurface(srf,List.FirstItem(pr2<1><2>),List.LastItem(pr2<1><2>));
pn1 = Surface.ByLoft(cr1,cr2);
2 Likes

For comparison - Panel Quads with Design Script

quads.dyn (14.0 KB)

pt1 = srf.PointAtParameter((0..1..#u+1)<1>,(0..1..#v+1)<2>);
pt2 = List.DropItems(List.Sublists(pt1<1>,0..1,1)<1>,-1);
pt3 = List.DropItems(List.Sublists(pt2,0..1,1),-1);
pt4 = List.Flatten(List.Transpose(pt3<1>)<1><2>,-1);
pt5 = Surface.ByPerimeterPoints(List.Reorder(pt4<1><2>,[0,1,3,2]));
4 Likes

Yes, thank you!
That’s exactly what I was trying to do.

1 Like