algorithmic modeling for Rhino

Good News Everyone!


User Object V2.01

Example File

Three years ago I released the first offering of Dog Treat, a dog bone corner generator for Grasshopper. It’s saved me (and hopefully a lot of other people) a tremendous amount of time creating them by hand. Dog Treat was far from perfect, however it was good enough to use almost daily.

Three years is a long time. Since 2016 my Gh knowledge has expanded and I’ve seen how dodgy some of the scripting is. With this in mind I started work on a new build. Many things have been tweaked and some things have been rebuilt from the ground up.

Everything has been designed to be leaner and be a general solution to the problem of creating dog bone corners on geometry for quick, efficient and safe CNC fabrication.

Some of these things are:

  • Adding prompts about user geometry to make them aware about open curves, varying curve heights and if their geometry had been altered (mostly removing unnecessary points on curves).
  • Smooth Transfers.
    If you’re in a rush and need to speed through cutting, smooth transfers mean that a lead in geometry is now created alongside the actual dog bone arc. This means the router bit doesn’t have to come to a minute stop at every corner. This is turned on by default.
  • Acute Angle Condition
    If the angle between the two curves adjacent to a dog bone point is acute, previously the dog bone corner was useless. This was because the distance between the end points of the dog bone arc were less than the diameter of the router bit. There are many ways this condition could be addressed. I chose to circumscribe a larger arc based on the original angle between the adjacent curves. While it removes more material from the corner, it minimises tool wear and any potential for material to burn.
  • Single Curve
    A single curve can now be input into Dog Treat. It will be output with both internal and external treatments.

I’ll continue to update Dog Treat as the need arises, it’s become somewhat of a hobby now. Maybe one day it will become part of a Plug-in… once I learn to code it though!

Happy Treating!

Hi Everyone,

Here's a tool I've been working on for the past 4 months or so in my free time. It's a dog bone corner generator, however it's a little different to some of the existing ones. It's designed to be used for large amounts of geometry and as such, it avoids using any curve boolean operations that are computationally taxing. You don't have to split your curves up into internal and external lots either, it works it all out so you can be lazy. I've also incorporated Lunch Box's Object Bake Component for a one click operation that bakes geometry back out to Internal and External profile layers.

Let me know how it goes, will update where necessary.



Change Log

06/11/19 - Version 2.0 SECOND DINNER - Rebuild

29/09/17 - Version 1.3 - Now with smooth corners option, True for smooth default/False for original

18/05/17 - Version 1.2 - Now includes variable angle domain input (defaults at 90°) for angled corners

13/11/16 - slight change to enable acceptance of very large interior curves

Views: 2625

Replies to This Discussion


You know this isn't a dog bone?

Hello Darcy,

Thank you very much for sharing it. I am trying to make it work, but it does not. Am I doing anything wrong? 




Hey Roberto, did you manage to get it to work?


What units and tolerances are you using Tom?

Hi Roberto, it could be a mixture of the units you're working in and your Rhino's Absolute tolerance settings. I'll have a look at making the tool more compatible with non-metric unit systems and different tolerances.


Very interesting plugin!

I'm trying to make a "waffle" structure, but the component loose some curves..

It looks it's in the way it sorts the curves for internal/external curves?


for waffle projects it might be preferable to just extend the slots by the radius of the cutter used to cut the panels as this is not seen when the panels are assembled.

The Bowerbird plugin has this feature.

Try attached script.

Heya great work.  I have found it works on 90 degree corners sweet but not on less than 90 or more than 90, is that correct?  Cheers 

Hi Darcy, 

Great work! Thanks for sharing it.

I ran into some issues so I made a few tweaks to my preference. 

Changes include:

1. Uses inside offset to dispatch curves. More consistent for complex geometry such as waffle curves. 

2. Adds through opening to sharp corners. This makes circles at sharp corners reachable by tool path. 

3. Merges overlapping circles. Keeps the curve clean at narrow openings. 

4. Takes independent fillet radius. 

5. Accepts 0 as minimum angle. 

Download links (attachment didn't work):

Sample file:

User object: 




Hi Ryan,

I'm glad you found the tool useful. I had a look at yours and found some parts interesting.

With regards to:

1. Offset curve is notorious for adding unnecessary computational time to a script as it increases the complexity of the curves it offsets (most of the time). As speed was an important factor for me I chose my option. That being said I don't make many waffle structures.

2. Your through opening inspired me to create my version. As I mention above, a through opening like yours is risky as it leads to potentials for part burning and will blunt your bits faster. I wanted to avoid this so went with mine. I also believe a consistent visual language is nice. I'd suggest rebuilding it without Region Unions as it makes your script very slow. I also found a case where your version splits the curves into multiple smaller closed curves. I'm not sure what that's about but it's probably due to data management.

3. If your having to merge overlapping circles I would say you're using the wrong diameter bit for the job. If you material thickness varies it could also lead to part movement. However if that's all you have it's a good solve.

4. I removed the option for filleting corners. I often needed some to be sharp so just started doing it myself. 

5. I removed all that angle stuff and just have it do it by default. It was always made pretty crappily by myself. It was annoying to use and visually bulky so it went.

Go nuts on my new one, it's more complicated but runs heaps quicker. It give me the Power to Make many things!






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service