I'm having trouble wrapping my head around your code. Can you contact me to discuss making custom shapes for import?
Thanks for the interest - it's been a long while since I was fiddling with this. Even at the time it was a hack based on someone else's hack...It's been on my list for a while to do something with this, like turning it into an svg-generating web-app...but life has been busy.
Basic usage, for example, from the README:
$ python conj-oval-gear.py
Import into what? These scripts generate DXF, which is an Autocad file format. A pretty old/well-supported file format by most modeling packages. I also used a java package called kabeja (google it) to convert those files to svg. Something like:
$ java -jar launcher.jar -nogui -pipeline svg ncgear2.dxf ncgear2.svg
Heart shaped? Hm...well, from what I remember without look at the code, the basic premise is to create a first shape and then create it's inverse plus a radius for the opposing gear. I'd start with the equations for a heart-shaped gear, some good ones (courtesy google): http://mathworld.wolfram.com/HeartCurve.html. Then the conjugate should be using the existing code, I believe...
I've been pretty strapped for time since I threw this together...and stuff looks like it'll stay that way for the next few months at least. Unfortunately I don't have the time to get into this again, but the code's there for you, if you're inclined. If you end up doing something with the code, please let me know.