Actually, the answer to the question in my topic title is, yes, there is an easier way, and that's actually how I started down this road.
Let's say you want to design a cam with curved flanks, and you have the following parameters:
the radius (or diameter) of the base circle;
the radius (or diameter) of the nose;
the maximum lift that the cam should exert;
the angle of duration during which the cam should exert lift.
With these parameters, you can generate the following diagram using any decent 2d CAD program that knows how to create tangent circles:
In this diagram, the heavy red line represents the desired cam; the green circle represents the base circle; the blue lines represent the angle of duration; the magenta circle represents the nose radius; and the cyan circles represent the cut that needs to be made using a boring bar to achieve the curved flanks - what I will call the "flank circles."
The issue here is for the curved flanks to transition smoothly into both the base circle and the nose radius. In order to achieve this perfect transition, the flank circles have to be tangent to both the base circle and the nose radius. As I said, with a 2d CAD program, this is trivial to achieve, and one can then take a measurement of the resulting flank circles to determine the radius needed on the boring bar to achieve this cut.
The problem is, every time you change your mind about any of the 4 parameters listed above, you have to redraw the diagram in the CAD program, and again take the measurement to find the new radius needed for the flank circle to cut the cam with the new parameters. Yes, not that big a deal ... but I wanted to automate the process.
It turns out that the 3d CAD program I use (FreeCAD) has a nifty system that lets you set up a spreadsheet of values, give any of those values a specific name, and then use those values to control the constraints in a sketch:
One can use these parameters to set various constraints and dimensions in a sketch (the parameters taken from the spreadsheet show up as orange dimensions) such that it will generate the desired cam:
And of course, one can extrude the sketch to produce a model of the cam:
It is like magic - change a parameter in the spreadsheet, and instantly the cam changes shape accordingly. Voila!
Except for one small problem - FreeCAD is doing essentially the same thing that the 2d CAD program is doing; it is generating the curved flanks as an arc of a circle (my so-called "flank circle," shown as a large blue circle in the sketch above) that is tangent to the base circle and the nose circle. What it doesn't automatically do is tell me what the radius of that flank circle turns out to be. You can see it in the sketch above as a red dimension, but here's the thing - to get that, I have to first constrain this circle to match the flanks, then remove that constraint, then constrain the radius without actually changing it, which finally gives me the red dimension shown. Why such an involved process? Because you can't have competing constraints - either the circle is constrained to be tangent (without showing the radius), or it is constrained to a given radius (which then will no longer automatically update when you change the parameters).
Okay, most of that last paragraph is probably as clear as mud, but I don't know how to describe it more clearly without walking someone through the process in FreeCAD. If there is interest, I could make a video, but I don't know how many people would actually find it useful ...
There may be a way to get this dimension from the 2d drawings that FreeCAD can generate from the automatically generated cam - but it is not obvious, because the large blue circle for which I want the radius is a "construction" circle that doesn't actually show up either in the displayed model or in the 2d drawings. (There may be another way to get at this - I'm still experimenting with it.)
I kept thinking there must be a way to calculate the radius of the flank circle - a simple calculation that takes into account the various parameters above and does whatever it is that the CAD programs are doing in the background to figure out the doubly-tangent circle. So ... I attempted to work out the math. If you are particularly masochistic, I have included a .pdf file that shows the calculations - but I warn you that they are not simple. I am guessing there IS a much simpler way to figure this out than I came up with, but I don't know what it is. If you know it, I sure do want to hear it!
Nonetheless, I did finally achieve the goal - as nasty as the calculations turned out to be, I finally wound up with something that could be coded into an Excel spreadsheet to generate a solution. I could not attach an Excel spreadsheet directly in this forum, but I could compress it into a .zip file and attach that. The spreadsheet lets you enter the parameters in the top left; it grinds through the calculations below that in a nanosecond or two; and it shows two possible solutions for the center and radius of a circle that is tangent to both the base circle and the nose circle. Why two? Because you could have a tangent circle on the "inside" of the base & nose circles. But the solution you (or at least, I) really want is the larger circle - this is, at last, the radius that needs to be set on the boring bar in order to cut the desired cam with the desired parameters.
Having read this, are you as exhausted as I am after spending way, way, way too much time trying to work this out???
Let's say you want to design a cam with curved flanks, and you have the following parameters:
the radius (or diameter) of the base circle;
the radius (or diameter) of the nose;
the maximum lift that the cam should exert;
the angle of duration during which the cam should exert lift.
With these parameters, you can generate the following diagram using any decent 2d CAD program that knows how to create tangent circles:

In this diagram, the heavy red line represents the desired cam; the green circle represents the base circle; the blue lines represent the angle of duration; the magenta circle represents the nose radius; and the cyan circles represent the cut that needs to be made using a boring bar to achieve the curved flanks - what I will call the "flank circles."
The issue here is for the curved flanks to transition smoothly into both the base circle and the nose radius. In order to achieve this perfect transition, the flank circles have to be tangent to both the base circle and the nose radius. As I said, with a 2d CAD program, this is trivial to achieve, and one can then take a measurement of the resulting flank circles to determine the radius needed on the boring bar to achieve this cut.
The problem is, every time you change your mind about any of the 4 parameters listed above, you have to redraw the diagram in the CAD program, and again take the measurement to find the new radius needed for the flank circle to cut the cam with the new parameters. Yes, not that big a deal ... but I wanted to automate the process.
It turns out that the 3d CAD program I use (FreeCAD) has a nifty system that lets you set up a spreadsheet of values, give any of those values a specific name, and then use those values to control the constraints in a sketch:

One can use these parameters to set various constraints and dimensions in a sketch (the parameters taken from the spreadsheet show up as orange dimensions) such that it will generate the desired cam:

And of course, one can extrude the sketch to produce a model of the cam:

It is like magic - change a parameter in the spreadsheet, and instantly the cam changes shape accordingly. Voila!
Except for one small problem - FreeCAD is doing essentially the same thing that the 2d CAD program is doing; it is generating the curved flanks as an arc of a circle (my so-called "flank circle," shown as a large blue circle in the sketch above) that is tangent to the base circle and the nose circle. What it doesn't automatically do is tell me what the radius of that flank circle turns out to be. You can see it in the sketch above as a red dimension, but here's the thing - to get that, I have to first constrain this circle to match the flanks, then remove that constraint, then constrain the radius without actually changing it, which finally gives me the red dimension shown. Why such an involved process? Because you can't have competing constraints - either the circle is constrained to be tangent (without showing the radius), or it is constrained to a given radius (which then will no longer automatically update when you change the parameters).
Okay, most of that last paragraph is probably as clear as mud, but I don't know how to describe it more clearly without walking someone through the process in FreeCAD. If there is interest, I could make a video, but I don't know how many people would actually find it useful ...
There may be a way to get this dimension from the 2d drawings that FreeCAD can generate from the automatically generated cam - but it is not obvious, because the large blue circle for which I want the radius is a "construction" circle that doesn't actually show up either in the displayed model or in the 2d drawings. (There may be another way to get at this - I'm still experimenting with it.)
I kept thinking there must be a way to calculate the radius of the flank circle - a simple calculation that takes into account the various parameters above and does whatever it is that the CAD programs are doing in the background to figure out the doubly-tangent circle. So ... I attempted to work out the math. If you are particularly masochistic, I have included a .pdf file that shows the calculations - but I warn you that they are not simple. I am guessing there IS a much simpler way to figure this out than I came up with, but I don't know what it is. If you know it, I sure do want to hear it!
Nonetheless, I did finally achieve the goal - as nasty as the calculations turned out to be, I finally wound up with something that could be coded into an Excel spreadsheet to generate a solution. I could not attach an Excel spreadsheet directly in this forum, but I could compress it into a .zip file and attach that. The spreadsheet lets you enter the parameters in the top left; it grinds through the calculations below that in a nanosecond or two; and it shows two possible solutions for the center and radius of a circle that is tangent to both the base circle and the nose circle. Why two? Because you could have a tangent circle on the "inside" of the base & nose circles. But the solution you (or at least, I) really want is the larger circle - this is, at last, the radius that needs to be set on the boring bar in order to cut the desired cam with the desired parameters.
Having read this, are you as exhausted as I am after spending way, way, way too much time trying to work this out???