Hi Sketchucation,
You guys helped me quite a bit last year, and after several revisions my CNC code is more or less fully functional. I never really had an interest in publishing it as it was for my own use, but if other people could benefit from it, it wouldn't be a bad idea. (It's months of work on my part and around 3,000 lines of code, including extensive unit testing.) I don't use GitHub and have just been using my Google Drive as basic version control.
The basic function of the plugin is to convert a Sketchup Group or ComponentInstance into "gcode" necessary to cut out the piece with a CNC machine. It will work with any Group or ComponentInstance that has a single flat base and I have covered all types of intersections I can think of.
Here's a gallery of the plugin in action (note that the lines are drawing the produced gcode after it has already been exported):
http://imgur.com/a/cL56t
Here's a zip to the current version:
https://drive.google.com/file/d/0B22HAM7WzR-RWHluTTF5ekozdFk/edit?usp=sharing
Here's a sample of the exported gcode:
(Generated with Grays42_GPath)
(---------- HEADER ----------)
G90 (Absolute distance)
G40 (Tool Radius Compensation Off)
G20 (Inches)
G17 (All curves are in X-Y plane)
G94 (Inches per minute feed mode)
M03 (Motor on)
(---------- WORKPIECE 1 ----------)
(---------- WORKPIECE NAME; G1 ----------)
(Group x-y bounds; [6.000",4.000"],[8.000",6.000"])
(Group height; 1.000")
(Group base z; 0.000")
(--- WORKPIECE 1, PATH STACK 0 ---)
G00 X8.0940 Y6.0000 Z2.0000 F50.0000
G00 X8.0940 Y6.0000 Z0.5000
(--- WP 1, STACK 0, z0.350" -> z0.350" ---)
G01 X8.0940 Y6.0000 Z0.3500 F6.0000
G01 X8.0940 Y4.0000 Z0.3500 F30.0000
G02 X8.0000 Y3.9060 Z0.3500 I-0.0940 J-0.0000
G01 X6.0000 Y3.9060 Z0.3500
G02 X5.9060 Y4.0000 Z0.3500 I0.0000 J0.0940
G01 X5.9060 Y6.0000 Z0.3500
G02 X6.0000 Y6.0940 Z0.3500 I0.0940 J-0.0000
G01 X8.0000 Y6.0940 Z0.3500
G02 X8.0940 Y6.0000 Z0.3500 I0.0000 J-0.0940
(--- WP 1, STACK 0, z0.350" -> z0.200" ---)
G01 X8.0940 Y6.0000 Z0.3500 F6.0000
G01 X8.0940 Y4.0000 Z0.3151 F30.0000
G02 X8.0000 Y3.9060 Z0.3125 I-0.0940 J-0.0000
G01 X6.0000 Y3.9060 Z0.2776
G02 X5.9060 Y4.0000 Z0.2750 I0.0000 J0.0940
G01 X5.9060 Y6.0000 Z0.2401
G02 X6.0000 Y6.0940 Z0.2375 I0.0940 J-0.0000
G01 X8.0000 Y6.0940 Z0.2026
G02 X8.0940 Y6.0000 Z0.2000 I0.0000 J-0.0940
(--- WP 1, STACK 0, z0.200" -> z0.050" ---)
G01 X8.0940 Y6.0000 Z0.2000 F6.0000
G01 X8.0940 Y4.0000 Z0.1651 F30.0000
G02 X8.0000 Y3.9060 Z0.1625 I-0.0940 J-0.0000
G01 X6.0000 Y3.9060 Z0.1276
G02 X5.9060 Y4.0000 Z0.1250 I0.0000 J0.0940
G01 X5.9060 Y6.0000 Z0.0901
G02 X6.0000 Y6.0940 Z0.0875 I0.0940 J-0.0000
G01 X8.0000 Y6.0940 Z0.0526
G02 X8.0940 Y6.0000 Z0.0500 I0.0000 J-0.0940
(--- WP 1, STACK 0, z0.050" -> z0.050" ---)
G01 X8.0940 Y6.0000 Z0.0500 F6.0000
G01 X8.0940 Y4.0000 Z0.0500 F30.0000
G02 X8.0000 Y3.9060 Z0.0500 I-0.0940 J-0.0000
G01 X6.0000 Y3.9060 Z0.0500
G02 X5.9060 Y4.0000 Z0.0500 I0.0000 J0.0940
G01 X5.9060 Y6.0000 Z0.0500
G02 X6.0000 Y6.0940 Z0.0500 I0.0940 J-0.0000
G01 X8.0000 Y6.0940 Z0.0500
G02 X8.0940 Y6.0000 Z0.0500 I0.0000 J-0.0940
G00 X8.0940 Y6.0000 Z2.0000 F50.0000
(WORKPIECE 1 REPORT;)
(Workpiece feed distance; 38.3273 inches.)
(Workpiece seek distance; 13.5754 inches.)
(FINAL CLEANUP)
(FINAL WORK RUN REPORT;)
(Total feed distance; 38.3273 inches.)
(Total seek distance; 13.5754 inches.)
I'm posting while on lunch, so I'll follow up a bit later this evening. My question is, if I did want to go about publishing it, is there anything I need to alter in the code? Could someone who is experienced with writing and publishing plugins please take a look and offer me advice or recommendations?
As I said, I'm fine with how it works for now--it does exactly what I want it to do for my own use. This is just for anyone else who would find benefit from my work.
Thanks,
Brandon