Maintain the surface trim for the subsurfaces

How can I maintain the general trim of the surface in the
a. subsurfaces (curved)
b. Lunchbox subpanels (flat)

Hmm, I guess the IsoTrim component should have done that already. And it seems the Retrim doesn’t work either.

I created two YouTrack issues for Rhino 6.x: RH-43156, RH-43157

Thank you @DavidRutten for the prompt reply.

Actually no, isotrim rebuilds the surfaces so trim info is not maintained.
Retrim doesn’t work because we are trying to send trim info from one to many.
Copytrim copies the same trim to each subunit so this doesn’t work either.

I tried making a solid brep from the first one and then do some subtraction but this method is really bad.

What else can I do?

That is not the problem. ReTrim works on only two surfaces at a time (the source and the target). So trying to transfer the trimming data from the original to all subsurfaces should have worked. I wonder if the SDK method I use for retrimming was only designed for surfaces that kinda-sorta have a the same shape.

I was trying to use Surface Split using the trims of the original surface. This works, but I haven’t yet been able to figure out how to remove the unwanted bits.

Hi David

Yes … I miss a (simple and) reliable way to do this is RhinoCommon.

Please, when you find a way for this, … tell us about it. :slight_smile:

Thank you !

1 Like

Yes, I tried maybe 5 different ways to do it. But they work to some extent only. Especially it is hard if the opening is not entirely inside the surface.

Hello, do you see a pattern in here? I remember this from the days when I was trying to implement something similar by myself. It helps to draw trim boundaries in 2d first, in order to evaluate if visible or not.

That’s the thing. It is hard to find a way that will deal with all possible occurrences and shapes of the windows.

So you didn’t see the pattern. Every time a ray (blue) is hitting a trim curve (red), the surface is switching its state for visibility along that vector. This is a quite reliable information and can be exploited to solve your problem. You just need to think it further. Unfortunally I don’t have enough time to write an algorithm for you but I hope this is pointing you to a solution.

Thank you for the proposal. I saw the pattern @TomTom but this is hard to use if the opening is on the edge :confused: since it is going to make the number of intersections an odd and so the fetched subparts will reverse from here.

so you need to check if the surface edge position epsilon equals the first intersection and if not flip…