Modeling a keyboard button

Hi Guys,

I am new to rhino and need some help to model a keyboard button as I have shown in the uploaded picture which I made in 3ds max but I am unable to use fillet on upper edge and all four corner in rhino as it deteriorates the geometry.

Thanks in advance.

Hi Cory,

  1. Start with a four-sided truncated pyramid.
  2. Fillet edge the four sloping edges.
  3. Fillet edge the top edge using a smaller radius and chain edges option.
  4. Ditto the bottom edges if you want to.

Then for more detail you could:
5. Put a sphere above the top of the key so it just overlaps and Boolean difference it out of the key to get a finger depression. Use Blend Edge on the junction to smooth it out a little.
6. Create text object curves of the characters on the key in the top view and split the top face with them. Delete the curves.
7. Apply different materials to the body of the key and the characters and render:


Thanks for your response Jeremy.

it worked but why it didn’t work out when I created this shape with polyline and tried the same method?
and How to use chainedges option in fillet. BTW I am using rhino for window.


Hi Cory,

It’s difficult to say why something didn’t work without access to the model. If you upload it here (upload icon in toolbar at top of discourse input panel) I’ll take a look.

Chainedges is an option in the fillet edge command line. Search the Rhino 6 help for fillet edge for details on this and other useful options.


draw 2 continuous curves (no filleted curves) -> RailRevolve -> Zebra that and be amazed :cupid:

Thanks Encephalon.

Hi Jeremy thanks for the help. I have uploaded the file you can check what is going on when i use fillet on corner and upper edges.

Thanksbutton.3dm (447.1 KB)

Hi Cory,

While your unfilleted solid is ok, your filleted one is a bad object:

I made a copy of the unfilleted one and, without changing anything else in your file, was able to use FilletEdge with a radius of 0.5 on the verticals, and 0.1 on the top edges without problem:

I don’t know what made your object go bad (you may recall something you did differently), but if you do get geometry problems it is always worth checking the object details in the Properties panel. You can also quickly check an entire file by choosing Analyze > Diagnostics > Select Bad Objects (or type SelBadObjects on the command line).


Hi Jermey,

Thanks Again.
So is there any command we can use to correct the geometry or we have to correct it manually?

It might have to do with the tolerance of the document in relation to the smaller fillet. If you tighten the tolerance (to let’s say 0.001) the object doesn’t go bad with the 0.1 fillet

1 Like

hey Encephalon,

If i go with this method how am i gonna put that curve on top face as you can see in the shared picture because if i fillet the profile curve for railrevolve it is going to make a hole in the middle .

if you start in the center of your button with the profile curve and you take this as the center of your axis, then even if you take a filleted curve you should not get any hole whatsoever. other than that as written, dont use filleted curves if you want a real quality surface. does that help? by the way the axis has to go perpendicular from your Construction plane, maybe thats where a hole happened?

This is quite misleading. And what does it actually mean “real quality”?

1 Like

misleading sounds rather exaggerated and contextually misplaced, specifically when you chop my words appart maybe seeking for a different meaning? :see_no_evil:

Hi @Gijs,

Yeah, but for me it didn’t go bad at the OP’s tolerance (0.01 from memory).


Hi @encephalon,

How would you deal with the OP’s button which has different slopes on front and back faces (like good ol’ fashioned substantial keys, not modern chiclets)? Could you shear it and preserve curve quality?


I don’t think so, see attached image and file: why would the first be ‘real quality’ and the second not? I can easily argue the opposite

not-fillet-vs-fillet.3dm (2.9 MB)

here it did (in Rhino 6.14, win)

hi @jeremy5 you can add cp´s and model it further for example, shearing should also work.

@Gijs when you use Zebra on both you see that the transition of the fillets are abrupt. for a button it may be not important to have a good surface transition. but my point was actually also to show how easy it is creating a high quality surface with low efforts, which RailRevolve delivers curiously enough.

I saw many discussions on how to create such fillets and after some experimenting i figured that this is the best method for this isolated cases when you have a square shape, unfortunately does not work well on rectangular shapes since it stretches the far sides, but then again it was never designed to do such things.

@encephalon I just wanted to specify ‘real quality’ here, because it is rather subjective. If continuous flow is what you mean with this, then I personally prefer loose loft as in the example below. It’s more flexible, as it allows to make a tilted version without doing cp editing (example file has history enabled)

loose-loft.3dm (536.8 KB)

there are probably many methods to create such surfaces, loose loft yes why not, but you lose the precise control of a profile curve, if thats what one would want of course.