How do I perform curvature connection for Brep or surfaces?

(I’m not a native English speaker, so I’m using a translation tool. I apologize for any mistranslations or awkward phrasing…)

I’ve been using Grasshopper for over six years in my work, but I’ve always wondered why there’s no built-in method in Grasshopper to connect surfaces or Breps while maintaining continuity. (The G1 and G2 blend surface components are not included by default.)

Several types of blend surface components exist as plugins, but currently, it is sometimes impossible to create the shapes our customers require without them.

In particular, when asked to create shapes requiring curvature continuity across multiple surfaces or Breps, and if the shapes cannot be created using the plugin’s Blend Surface component, I sometimes work by switching back and forth between CATIA and Grasshopper.

Customers often request to review designs in real time, observing how shapes change instantly as they modify the formula.

When creating shapes, it’s becoming increasingly common that without a blend surface component, it’s impossible to achieve the desired result. Therefore, I would like to see it implemented by default.


This image shows an attempt to create a ribbon-like solid structure on top of the product and smoothly connect it to the product.

The product was created in CATIA, while the other shapes were created in GH. (Rhino modeling tools were not used.)

I was able to create a blend surface from the end of the belt toward the product’s surface.

However, the shapes at the four corners cannot be completely closed.

This is because there is no command to specify continuity for the four edges and their surfaces/Breps.


I have a question regarding components that handle curvature continuity.

Are there any plans to implement a definition similar to CATIA’s “Multi-Section Surface” command in the future?

The CATIA Multi-Section Surface command is a command that allows you to create a surface by specifying a target curve (required) and a guide curve (optional).

Whether G1 or G2, you can output smooth surfaces that connect to multiple surfaces while maintaining continuity.

I dream of being able to output surfaces like this in Grasshopper.

As illustrated below, I want surfaces to be output with this kind of behavior.

Ideally, the component should be able to connect using two surfaces and a guide curve in space.

In this case, the surfaces or Breps supporting the guide curve are not required.

I’m also attaching a conceptual diagram of the ideal component.

I tried creating this component using Python and other languages in the past but gave up.

I’d like to borrow your wisdom if there’s a better solution available now.

Also, if there is a way to smoothly connect the gaps in the attached data, could you please let me know?

TRY_20260302.3dm (11.1 MB)

Thank you in advance.

Egret

Hello,
You can use Continuous Patch in Rhino9 WIP.

3 Likes

You may give it a try with New Patch,


NewPatch.gh (12.1 KB)

4 Likes

@11159 @jessesn

Thank you for your reply!

Actually, I tried that component last week, but there was almost no information available in Japanese, and I was stuck without knowing the correct way to use it.

I’ll try again, thank you!

1 Like

@11159 @jessesn

Thank you for your continued support.

I immediately tried out the Continuous Patch component.

It worked well overall! However, there are areas where a complete G2 connection isn’t secured.

Since it connects smoothly in some places, it doesn’t seem like a simple error.

Could this be due to poor compatibility between the surfaces?

Or is there a solution?

Here is the data↓

TRY_RE_20260302.3dm (16.3 MB)

I forgot to attach the preview image…

Could you please attach the GH file?

Since the data contains confidential information, we will prepare a version with those details removed. Please wait a moment.

This is the minimum amount of data available, but please review it.

TRY_RE_20260302.gh (14.9 KB)

TRY_RE_20260302.3dm (16.3 MB)

日本の方のようなので日本語で書くと、元の形状のアイソカーブの量が非常に多いように見受けられます。


1/1000mmの精度でFitSrfコマンドを使用すると上記のようにアイソカーブが減ります。

またGconコマンドでエッジの連続性を見ると、G0で断面も連続していないようです。


ExtendSrfで面を延長し、連続した線を投影し切りなおすなども基本的な面を綺麗にするという意味で良いかと思います。

一度Rhinoで試してみましたが、現時点の新しいPatchコマンドから、Trimオプションが無くなっているように思われます。
基本のジオメトリを綺麗にして、実行すると結果が良くなる可能性があるかと思われます。

1 Like

For such a regular 4-sided surface, it is recommended to use NetworkSrf, and for your reference.

NetworkSrf Grasshopper Online Document :backhand_index_pointing_left:


NetworkSrf.gh (8.5 MB)

3 Likes

Masakiさん、日本語でのご対応感謝いたします。

また、データ分析の方もありがとうございました。

もしかしたらお察しかもしれませんが、アイソカーブがこれだけ多いのは、元の部品の表面の断面を一定間隔でつないでアントリムサーフェスを作成したことによる結果でした。

Brep上で式を構成するより1枚のサーフェスで作業した方が良いという感覚でしたが、おっしゃる通りこの形状の場合はまず精度を保ちつつ構成要素を簡略化するべきですね。

そうすると製品面とアントリムサーフェスの誤差を確認しながら作業したいのですが、Rhinoのどのコマンドで形状同士の距離解析ができるのかわからず…

今まで、Rhinoに疎いこともありCATIAにわざわざ持って行って測定していましたが(すごい手間でした)、Rhinoにも形状同士の差がどれだけあるか確認するコマンドがあるのでしょうか?

あとは大元のリボン形状から製品に接続するブレンドのうねりも気になっていたので、そこも修正して再度トライしてみます!ありがとうございます。

1 Like

Thank you for suggesting another solution; it’s very helpful.

I’ll try that as well, depending on the situation.

お世話になります。

GH上でまず、アイソカーブが多すぎたサーフェスに対してFit surfaceコンポーネントを使用した後、同じ工程でブレンドサーフェスを作成しました。

見た目はあまり変化はなかったですが、すこしだけ計算が早まったような気がします。

Rhinoにベイクした時の見た目はこちらで、あまり改善しないかと思われました。

しかし、ベイクしたものをまとめて結合すると…

ブレンドサーフェスとContinuous patchの部分にひずみが発生した代わりに、ブレンドの境目はつながりました。

2つの画像を見比べるとゼブラが揺らいでいるのが確認できると思います。同じ視点から撮った画像ですがゼブラがかなり違います…

なぜサーフェスを結合すると境目が合い、patch面がゆらぐのか…これは結合を優先することでサーフェスの属性が自動で変わってしまっているのでしょうか?あまりCADで見たことのない挙動です。

また、接続の属性ですが、グローバルエッジ連続性コマンドというもので測定した結果、例として70番のエッジはG1の数値を見ると折れたままなので、ここはContinuous patchでは連続性を持って塞ぎきれないということなのでしょうね。

今回の試行錯誤で、Continuous patchの動作は、面の綺麗さ・単純さに依存するのかなと思いました。私が作業している製品形状が、そもそもリボン形状の端末をブレンドをするのに適していないのかもしれません。

今回は、GH上で曲率接続サーフェスを作成することが目的でしたので、Continuous patchでやりたいことが試せたので一旦解決とさせていただきます。ありがとうございました。

もしまたより良いブレンド・パッチの方法が見つかれば、このスレッドに戻ってくるかもしれません。

@Egret, like @11159 mentioned, your base surface is way too complex/dense. I would highly recommend watching this tutorial series on primary surfacing by @sgreenawalt

4 Likes

Check out this network surface that takes brep edges to maintain continuity:

NetworkSurfaceEdgeContiuity.gh (19.2 KB)

Good alternative if you want to use rhino 8 instead of wip, for simple surfaces.
The component takes both edge indices and curves as U and V inputs, so you can mix them in a list, for example to use edges as starting curves, and curves as internal curves.

2 Likes

This component:

Standard GH network surface:

Same but with autosort:

NetworkSrf.gh (7.6 MB)

But as mentioned above, the starting brep should be fixed first

3 Likes

Sharing this atrocious thing, just in case someone is wondering about MatchSrf, BlendSrf in grasshopper. Its all there, and, well, personally i do not know how to work with it, but maybe someone will know

MatchSrf.gh (60.8 KB)

2 Likes

Thank you for your reply.

While I’ve been focusing on Grasshopper, I haven’t studied data editing or surface creation in Rhino, so I’ll take this opportunity to learn!

Thank you so much for all these component suggestions!

I really appreciate everyone experimenting with the topic of this thread.

These components might be exactly what I’ve been searching for since starting with Grasshopper…

They’ll surely be a huge help to others facing the same challenges!