Create an interior surface scaled within a surface

To Rhino Community,

Please forgive me if my title doesn’t quite make sense. I didn’t know what else to title it.

I drew a crude graphic as an example. (See above). Let’s say that I have a “surface” in Rhino (borders highlighted in yellow). My goal is create a new scaled surface where the perimeter boundary curves are moved in by a distance “x”.(This would be the interior scaled surface with red boundary (see above.) Then, I would like to create the remaining 8 pieces and have 9 surfaces (arranged as shown above) that will be equal to the original surface.

I really like grasshopper. If anyone would be kind enough to push me in the right direction, I would very much appreciate it. Thank you all for your help.

Can you please post enough of that file we can mess with the surface?

Hi John,

Absolutely. Give me one minute and I will upload it. :slight_smile:

Example.3dm (3.3 MB)

Uploaded. If I didn’t upload correctly, please let me know. Thank you John for your guidance. If you can’t solve it, then I do appreciate your time. Thanks bud.

Hi Robert - how precise does the offset need to be? The quick way out is Split with the Isocurve option , Direction =Both

-Pascal

Yeah, I was playing around with isocurves but for odd quadrilateral surfaces, the offset distance at one end will be much different than the offset distance at another location. Unfortunately, I would say no bueno to the use of isocurves if possible.

Hi Robert - OfffsetCrvOnSrf then, on the edge curves, then Split. There is an Offset on Srf GH component.

-Pascal

Hi Pascal,

I did what you suggested and it works. However, the 9 new surfaces I have created are now “trimmed surfaces”. I tried to use the “ShrinkTrimmedSrfToEdge” command but it says "The surface is already shrunk. I need the pieces to be “surfaces” so I can create meshes of each piece correctly using the u-v grid.

I would like to use Grasshopper. Ideally, I would like my input to be the original surface along with a slidebar or some other input device to specify what my “x” should be. How would I go about doing that. The grasshopper portion where I will mesh the pieces I already got. Its just splitting the surface into 9 that proves difficult to me.

Hi Robert - it is going to be tough to get untrimmed surfaces that are of some specific offset without creating new ones from the offset curves, which would themselves need to be split up to make four sided surfaces - and there is no way to guarantee that these will be tangent to one another or the interior one, if that matters…

-Pascal

So why can’t I convert a trimmed surface to a “surface”?

Hi Robert - you could, if you split them with isocurves - but an arbitrarily split surface has an underlying structure that may not align (usually does not) with the trims, so there is always a bit or a lot of underlying surface that sticks out from the trims - you can see this if you turn on the control points of one of your split surfaces.

https://wiki.mcneel.com/rhino/nurbssurfaces

-Pascal

There is no way to get it to this state? (see attached graphic)

Hi John,

In the beginning of this thread, you wanted a snippet of my Rhino model. Are we going in the right path?

Hi Diego,

Thank you for your reply. I am very green (new) with Rhino and am very limited in my knowledge. I understand the concept of a macro but I dont know how to implement your script. May you show me how? Does this script apply to the original surface or does it apply after I created 9 trimmed surfaces?

Is the intent of your script to occur with the original surface or after I created 9 trimmed surfaces?

Hello - is this good enough?

9Surfaces.3dm (535.1 KB)

-Pascal

Hi Pascal,

Unfortunately not. Thank you for helping though.

The goal is to get it to this state as shown below with 9 “surfaces”. No other lines.

Hello - if you turn off isocurves on the surfaces in my last file, you should get it looking like that.But the surfaces have no particular continuity at the edges - that is what I was asking about - is that good enough?

-Pascal

V7 has a command named

testTrimRefit

that I was tipped about on this forum before.

It shrinks the way you and I perhaps expect.