Suggestion for V6 -Emboss fillet command

Yeah, lousy name, but let me explain.

We often have to add fillets to features that are coplanar. This creates an embossment. The problem is that almost always the fillet we need is greater than the height of the embossment. So we have to do a combination of offsetting and using the pipe command a couple times to get the results we need. Here are some dimensions that are typical:

It would be very useful to have a command that allows the user to pick the top surface, pick the base surface, then enter the fillet size. Then the fillets would be added based off of this input.

I’m going to attempt this in Python, but I’m probably going to get stuck trimming it and making it look decent.

I will attach a simple file illustrating this idea.

embossment.3dm (213.0 KB)



1 Like

Hi Dan- I have a script and a GH definition that may help. I’ll dig it up and get back in touch.


Hi Dan,

There’s a test command that may help sometimes, and give a base to improve on. Take a look at testFilletSrfCrv. It was not intended for public consumption, but for me to test some FilletEdge corner creation code. I don’t think it crashes, but no promises.


Thanks Chuck and Pascal. I will try the test command on disposable files for now.

Have a good weekend,


Hi Dan - I dredged up the GH definition - it is a little cumbersome to use compared the to script, which seems to have fallen between the cracks somehow, but I can post it if you think you want to try - it takes as input - a surface, a curve off the surface, and a curve on the surface. The two curves set the edges of the new surface and the new surface is tangent to the input surface along the curve, like so:

In other words, the ‘fillet’ is variable radius, which might be the fly in the ointment for you.

I made it in order to make this thing:

OK, Brian James had a copy of the scripted version, (rvb after all not a python one). I’ll attach it here.
Unzip, then drag and drop for this alias to be added:


The script will load at startup, so it will pretty much work like a command.

You’re prompted for the surface, curve on surface and curve, then you get to set the number of samples, with preview of the samples. I think you may need to split closed input curves into two, as I recall the thing does not close on itself properly.

FilletSrf2Crvs (1).zip (972 Bytes)


1 Like




Hi Chuck,
Thank you for the TestFilletSrfCrv command. I use it often. However I almost always have to rework the result because the result has way to many isocurves than are necessary.
I don’t mean just a few extra - often most of the knots can be removed without any loss of accuracy.

Take the enclosed example based on Dan’s posted example. TestFilletSrfCrv produces a surface with 89 knots. I removed knots and got the knot count down to 22. There was no loss of accuracy. In fact, the less dense surface is significantly more accurate. It seems like TestFilletSrfCrv command could be improved quite easily.

TestFilletSrfCrv.3dm (96.4 KB)

Hi jim,

Yes, it could be improved. I wrote it for a quick way to see where the surface would land, so I just calculated a pile of cross sections and interpolated them. When I have a chance I’ll redo it with a fitting algorithm.

1 Like

Below is how I would create the fillet which Dan needs. This method works with curved surfaces. I don’t know how others are doing it.

Create a pipe with the desired fillet radius around the edge of the raised surface using Pipe.

Offset the base surface upwards by a distance equal to the desired fillet radius using OffsetSrf.

Intersect the pipe and offset surface. The resulting outside curve is the centerline of the fillet. Discard the inner curve.

Pull the curve onto the base surface. The resulting curve is edge of the fillet on the base.

Create a pipe with the desired fillet radius around the fillet centerline curve.

Split the fillet pipe with the upper surface and the fillet base curve.

Discard the portion of the fillet pipe which is not needed for the fillet.

Discard the offset pipe, centerline curve and base curve if not needed for further work.

Example: MesaDC.3dm (386.0 KB)

How many steps! I wonder, what are they but the cad software?
We need to simplify, not complicate the job!

Great guide, but I would prefer that all of this could be done in Rhino 6: too much to ask?

Thanks Pascal. I will give the script a try. I’ve never had the need to go down the Grasshopper road so the script will be my best option.

Love that sink. The drain grooves to the left are very clever.



That’s almost exactly how we do it now, hence the request for an easier method in V6.