Retrimming the Surface Division of an Untrimmed Surface

Hello, this is connected to my earlier post ( Creating a Single Smooth Roof Surface for an Organically Shaped Pavilion - #8 by Volker_Rakow ), but separated as it is a separate issue.

How do I take the trimmed surface resulting from a patch and make it into an untrimmed surface all while keeping the trimmed shape?

I’ve read through the forum, tried several things like baking the trimmed surface, ShrinkTrimmedSrf, then referencing that in grasshopper, but it’s still a trimmed surface.

The result is when I try to make a grid like below, they extend beyond the arcs. I learned from the previous post that it’s because it’s a trimmed surface and the general process, but I’m lost as to how to actually make it untrimmed. The purpose of the grid is to create curves for extrusions for purlins and framing.

Here are the .3dm and .gh files

Pavilion Base for Grasshopper Forum.3dm (872.2 KB)

Pavilion for Grasshopper Forum 2.gh (121.6 KB)

Any sort of help is highly appreciated. Thanks!

A surface is always four-sided and you have five edges which means your surface will always be trimmed.

Would this still be the case even if I joined the curves? I was told in the previous post that

You will have to split by domain and retrim.

Would you know how this is possible? And in the case that it is impossible to make it untrimmed, how else could I make a grid for extrusions like purlins? Would meshes work for this?

I can answer this this evening when I have time.

The underlying untrimmed surface is always four-sided, yes. The trimmed surface is a crop of that surface to boundaries that are not “square”. This is how surfaces are created in Rhino.

For now, try dividing the untrimmed surface via Isotrim in into cells, or use IsoCurve to get lines (curves).

Ohh I see, thanks and yes I’ll try those out

Here is, for example, IsoTrim:

Pavilion for Grasshopper Forum 2 VR 1.gh (15.3 KB)

You need to click on Data Dam after changing Divide Domain²'s values, then wait a few seconds for your computer to unfreeze from processing.

Try ShapeMap too.

Pavilion for Grasshopper Forum 2 a.gh (136.4 KB)

Here is IsoCurve:

Pavilion for Grasshopper Forum 2 VR 2.gh (25.2 KB)

This works much faster than IsoCurve because it does not use Surface Split

Bah. Even more plug-ins. :face_with_diagonal_mouth:

Although I know Shape Map is integrated into Rhino 9, so I thought I would I take a look.

Why do you always do this? Get parts by expanding ZUI outputs of List Item and taking what you need, or using Box Corners… it’s such bad form.

There are few more hacky options to get untrimmed surface, but you will lose some fidelity of geometry in those case.

  1. Use EdgeSrf - modify your curves to be only 4 e.g. join and rebuild. But you lose sharp edges.

  1. Use kangaroo to snap mesh plane to curves. But it needs more fiddling to get desired geometry. And probably more goals.

trimmedToUntrimmed.gh (20.5 KB)

Basically check surface>freeform tab and try create surface using those components.

Hey @rhino38,

Here’s a potential ‘low effort’ hack to avoid fighting the ‘trimmed surface’ condition, but comes at a cost, proceed with caution*:
Pavilion for Grasshopper Forum 2.gh (21.5 KB)


*turn off surface mappings/sporphin’ (or employ a data dam) when determining UV divisions.

Let us know how it goes—notify if you need grid lines instead of panels.

Wow thank you so much @Volker_Rakow @leopoldomonzani @Edr @René_Corella for your time. I really appreciate it and am learning so much. I will try playing with the suggestions you all gave. I would not have been able to figure these out alone in such a short time frame with the current level of experience I have. Thank you so much

Hi again @Volker_Rakow. I’ve been breaking down everyone’s script trying to understand things and I’ve gotten through all of yours, but this part. I would just like to clarify the construction of the uv point if I understood correctly.

  1. Constructing using construct point instead of numbers to point. I just tried it to better understand and noticed that even if I flatten it, its output is more items than if I constructed using numbers to point (17 compared to 12). It’s visualized in the 2nd image. Why is this so?
  2. Flip matrix. It was used because the list from the range (the 1st list to the left) has 2 sublists, each with more than 2 items (ex. (0;0) has 5 items from index 0 to 4), which you can’t make a point with? Flip matrix was used to get 2 points per sub list to get an x,y. Is this understanding correct?
  3. If my understanding from question 2 is correct, I’m curious what happens if I want an x,y for a numbers to point, but originally have 3 or more sublists instead of the 2 sublists right now? How would I organize that into an x,y in a list? or is that a wholeeee another big topic to learn?

Thank you!

All these question revolve the same thing.

IsoCurve is very stupid in the way it works. It creates a pair of UV curves (a U curve and a V curve) for each UV point given to it. The x component of the UV point is the parameter of the U curve, and the y component the parameter of the V.

So, if, for example, you want 3 U-isolines, and 5 V-isolines from a surface, you will have to provide 5 points in which the U values are over represented. Abstractly:

x1, y1 → U1, V1
x2, y2 → U2, V2
x3, y3 → U3, V3
x3, y4 → U3, V4
x3, y5 → U3, V5

Then you have to cull the set of UV curves of the duplicate U-lines.

In this setup:

I begin by creating a set of U and V params. Flip Matrix pairs these params into branches of X and Y components for a point. Where there are insufficient U or V values, Flip Matrix completes the tree with nulls. Number to Points takes these value pairs and creates points out of them. Null values are interpreted as the parameter value zero, and a z-component of zero is also added. The z-component is inconsequential for Iso Curve. Resultant is a set of equal number of U and V curves.

I complained about the use of plug-ins in the ninth post. However, the Surface+ and Curve+ plug-ins that @leopoldomonzani uses happen to be very useful. In Surface+, there is an Isocurves component that gets you isocurves from a surface division number and division direction (U or V). I tried making a user object that does this a while ago, but using this plug-in is much easier. Sadly, however, Isocurves does not trim the isocurves to the surface trim:

Thanks a lot for this explanation. Super helpful for me and maybe for other newbies reading this.