Continuity on surface

Hi. I am trying to create a continuous strip coming from a ‘base’ geometry. Every component that I am using is coming from a closed poly-surface (please see first attachment = grey surface). In the second attachment you can see the blue surface made by a sweep 2 rail. I am trying to ‘close’ that rial with a curves network command (red surface). The idea, since all the profile curves come from a core surface that looks continuous, is to join the blue and red in a way I can not perceive a discontinuity.

Hope you can help me . I can also provide the file in case you need it.


Hard to say much without some data. That blue surface looks extremely complex (too many isocurves, the viewport shading shows lots of strange things going on in there). Is it G1, G2 or G3 continuity you’re after?

Lagom. I attached the file. Thanks a lot for your insights.

Basically I am trying to rebuild a ‘base volume’. The new shape is kind of the ‘grooved’ version of the layer ‘base geometry’. Regarding of the isocurves it come from the riel and profile selected for my surface. That is how rhino build the sweep 2 rial. When I choose the rebuild option…the change is subtle.

The degree of the profile curves is 3. Though I never check this. Maybe i should start.

If you can check the file I will really appreciate.

Edit: I added the first groove in another file. You can imported it will be placed exactly where it should be.
Lagom_groove_help.3dm (239.3 KB)

Lagom_help.3dm (3.2 MB)

How were the curves created?

Why are there 58 curve and line segments?

Thanks David. Which curves do you mean.

Regarding the 58…Can you help me to understand maybe with a print screen ?

I will answer asap.

Thanks so much

I was asking about the curves and lines in the Rails layer. There are 58 segments after I explode them.

I answered my question about how the curves were created. I now see they are from intersections with the base geometry.

Yes. I intersect planes to the base surface. That is how the curves are created. The reason why they are 58, I guess is has to do of how rhino found the intersection. Do you think that is the reason of the insane amount of isocurves?

I exploded the rials…I do not have 58 segments.

My mistake, the 58 segments includes curves on the Rials layer and the Profile layer.

When I explode the curves on the Rials layer Rhino reports “Exploded 4 curves into 45 segments.”

I apologize I do not know why this happen. The rials are just intersections of planes and polysurfaces.

Hej Bruno,

I rebuilt your original surfaces with single-span G2 surfaces (= Bezier surfaces) to first of all make sure that when these original surfaces are later intersected with the planes, the resulting trim edges are as simple (= as few edit points) as possible. Then, I put r 30 mm curves on opposing trim curve ends. One can achieve G2 continuity easily on the green surfaces and if one uses a higher degree on the yellow surfaces, but not on the red surfaces. Therefore, on the red surfaces, one would need to switch on the control vertices and manually move them to fine tune the red surfaces so they too are G2 continuous to each other. At least your object is symmetrical so you only need to do half of it.

However, this does not result in the look of a CNC ball-cutter milling all around a block of material (which, as I gleaned from your first thread is what you are after), because with a ball-cutter, the radius of the cuts (= the ridges) is equal everywhere. Because of that G2 continuous “top lip” you have on the top of your form, this cannot result in a sharp crest all around. See the white curves (forgot to match them to the central ridge surface isocurves on both ends) I put in - this is not the path in G-code that the CNC machine would follow, such path would have to be planar in your case.

Another user showed you in your other thread how a tube intersects your shape, which is how I would do this (not with planes) in order to mimic the “ball cutter approach”, but if I remember correctly, his example did not take the rather complex “lip shape” on top of your model into account, which makes things difficult. Also, to mill this, you need a 5-axis machine and a response block with the negative of your form, since you need to turn it over to mill the side that at first is on the machining table. To then produce the injection moulding tool, you’d also need to remember that as it is now, there is no draft anywhere so you cannot produce tooling.

Hope that helps a bit…

CNC ball end cutter ridges.3dm (889.8 KB)

Hej Lagom. Thanks so much for your time. I think I read 15 times your answer in order to understand it.
It is quite frustrating, I ve have been using RH for 15 years maybe , but never stop to think about continuity on surfaces or curves. Still I manage to get quite complex surfaces although I am sure if i applied a Zebra map I can understand why is important to master the ‘continuity’ aspect.

Regarding your answer:

[first paragraph you wrote]

I understand you rebuild the arched strips in a way where the surfaces is composed by different ones. Where every surface starts and ends (lets say the rials) where the limits of my ‘base’ surfaces edges appear. So I will try by doing this by parts as you show. Still I am trying to figure it out how you decided the arcs of the start and ends of each surface. I am trying to build this on a cnc so I would like to have control of this arcs. What I imagine I can do is to:

  1. Use my 2 intersections with the base surface (rials) and execute sweep2 with the arcs/curves I need to control:
    A. Curve on the bottom of my ‘base’ polysurface. This is a curve coming from a blend (tangency on 2 ends). Degree 3.

B. Top Curve, same principle than the bottom. You can see the intersection points in respect of the rials ( green / red ) are a little bit lower since the lid of my base polysurface has a depression.

Overall strip before applying your technique:

The reason why I do this first is cause I need to extract certain curves in order to reconstruct the lid surface.

What I want is to flow through these rials from the bottom to the ‘lip’ radius of the lid in this specific way and then I need a transition to the flat surface.






I hope this shows how I am imagining to re build my strips with your help.
Again I would like to use the curves I decided on my first (light blue strip).

I think the reason also of that many isocurves on my first attempt is cause now that I explode the rials…they are crazy
messy. I guess the intersection is not that precise in terms on how it understands the curves on the base polysurface.


Lagom this reply its getting long. I came to visit Krakow, but I could not resist stop thinking in this surface I want to CNC.
I saw your reply and went straight ahead inside a coffee to check it. I really appreciate your help.

As soon as I make a new break on my day I will get back to you to discuss the second paragraph and just clarify how I am going to CNC. I will receive help from the CNC operator at my school in Oslo. He has an idea. I think we are going to split it as a box. I will explain soon.

Thanks so much.

Here are more surfaces. It’s always the same principle. See the screenshot. The r 30 mm curves are not in the file. You can extract them from the surface edges.

Still be aware that this is NOT what a ball-cutter would cut. It is hard to describe via a forum without a little trial corner done for real.

I like the formal aesthetics overall, but not that lipped “lid” ; )

CNC ball end cutter ridges.3dm (1021.4 KB)

PS: the surfaces are “rail” surfaces, not that it matters ; )

Thanks Lagom. I am not sure if you read my post. I am trying to approach it in a different way.

Let me know if you can give it a read. Thanks so much

It’s a bit hard to understand, really, with forum still images and text. But I think I can see that the way you position the r 30 mm (or whatever your ball-cutter’s radius is) arcs is wrong, as they aren’t perpendicular.

How is that corner fillet made from four-sided surfaces? Super cool.

Since it’s not a ball corner (radii meet, G1, spherical), but the fillets are G2, you need to establish a star-point in the centre with three G2 curves matched as shown in the attached file, so they intersect in the star point and are identically transformed. Then you build the four surfaces and match each G2 on two sides to the fillets. Then you symmetrically pull the control vertices of each two neighbouring surfaces outwards to achieve G2 on the “unmatched” edge-pairs.

Typical G2 corner.3dm (72.9 KB)

1 Like

Thanks Lagom, I guess this was an answer for @Jonathan_Hutchinson

1 Like

Regarding the amount of points of my rials. Did you re- build it ? I can not see any guides for the sweep in your file .


I made the surfaces as simple as possible so that, when intersecting, the resulting curves to then use as rails are equally as simple as possible