Software in the Machine Shop

Who am I?

I’ve had an odd career path. I’ve done a lot of things Professionally – CNC Machining, CBRN in the USAF, Firefighting, Police, Emergency Management, Computer Programming, Web Design, Photography / Videography, Computer Networking, technical support. For fun: Search and Rescue, Teaching Gardening Classes, A Psychology Bachelors Degree, Hunting, Fishing, Interning at a Vet and an animal disease laboratory, working in a lab for several years studying traumatic brain injury and another building video games to study psychological phenomenon.

One thing is always in common – I always end up being the IT guy, with the exception of when I worked in IT departments. I’ve whipped up a lot of random computer software through the years to solve whatever problem that no existing solution would, and I’ve spent literally thousands of hours researching software requirements for various proposals.

What is this for?

Somewhere along the way, I fell in love – hard – with machining. Enough that I’m working towards a mechanical engineering degree to keep getting deeper into manufacturing. I’m a little ashamed to admit how many hours I’ve sat and watched videos, listened to podcasts, reading articles, etc. I am frequently surprised to see shops struggling with IT. I make excuses to sneak into as many shops as I can, and there are frequent common issues that they all struggle to address:

  1. Is our CAD/CAM system doing what is supposed to do?
    Why does our post skip an M404 if you use two different 5 axis toolpaths in a row? How do we back up our files? How do we get a good work flow between the engineer’s CAD to the shop floor’s CAM to QC?
  2. We have __________ process and the whole thing’s a pain point.
    There is often some solution to the process for some other industry or application. You can generate g-code from excel for parametrized programming if you don’t have macro enabled, quote a job, or build a bill of materials automatically. A TESA height will fill out your inspection report for you. A few pieces of freeware will dramatically shorten common shop tasks.
  3. We need custom software to do __________.
    I well and truly believe any machinist that is smart enough to use Mastercam, or Fusion or Solidworks or AutoCAD is more than capable of writing that software themselves.  I’ll walk through the steps to roll your own calculators, estimators, generators, etc.
  4. We need to automate __________.
    Yeah, you really do. How do you get your wire EDM to pick up part’s origins automatically on a repeat job? How do you get your Fanuc Robot with Haas integration to load more than one part in more than once vise at a time with custom cycles? How can I get to 24 hour lights out without risking a ton of wrecked tooling and scrapped parts?
  5. We have to work around __________.
    How do you write one program that will build a whole part family parametrically? How do you rotate points around on a five-axis rotary that doesn’t have dynamic work offsets? With and without knowing the center of rotation? With or without moving anything in CAD? How do you tram in an angle plate in the mill without a calculator or level?
  6. We have to improve ___________.
    How do you build systems? How do you address quality issues with software?
  7. These computers suck.
    How do I keep my network secure? How do I fix this dog-slow computer? Is Realview messed up in SolidWorks again? What video card do I need for this?
  8. This software sucks.
    I paid $XX k for this software and it can’t even chain this contour!
  9. This control sucks
    Why did they move this feature!? Why are we still using a floppy drive? Why does it overwrite my changes?

I’ll be blogging about all of these topics and more. I’m not sure where it will lead, but hopefully it will help somebody with some obscure problem!

Intersectionality, or What Should I Program?

I’m currently looking for a programming project that directly relates to machining. I’ve got a slew of ideas floating around, and calculators are done to death. I’d like to have a few sample programs, that I haven’t already directly sold to clients, available as freeware here.

My short and near future plans have me staying where I’m at, employment wise, but my long term plans involve starting a manufacturing / automation engineering firm and helping shops push through problem areas and produce parts at better margins. A great deal of that will look like improved tooling, high density fixturing, co-bots, pallet loaders, etc. I’m sure much of it will look like ERP software, workflows and systems.

But, at the end of the day, I haven’t had a job yet that I didn’t write some sort of custom software to automate some task. I’ve got an inventory management system, bill of materials generator and some slick (if I say so myself) inspection room management software that generates reports from SPC data, input data and CMM data and stores it on a centralized server.

Machine shops are unique and face a lot of unique challenges, there’s not often a one-size-fits-all solution that applies. I’d like to position myself in that space. Sometimes that looks like custom post-processors for CAM packages, sometimes it leans more towards highly complex software.

One project will automatically organize NC files from a Haas mill backup and look for duplicates / high probability matches. I’m looking to streamline a process in the shop, and I’ve got a lot of historic NC code to dig through, so that’s probably coming sooner than later.

The other, and I’ve been kicking this one around for a couple years now, is a G Code extender / compiler that adds some conversational ability to G-Code. I’ve got the bones of it rolling, currently called Converse2 (the original was a console application and the switches got out of hand as I worked through what the issues were). Basically, there are three tabs in the current version – Load, Post Processor and Help. The post processor contains machine definitions, configuration options and g-code aliases, and is where much of the flexibility will come from.

Right now, to compile an NC file, you drag and drop into the Load panel. The app reads your NC file from top to bottom and does nothing – for most lines. When a line contains an ‘@’ however, the program evaluates the command and performs the appropriate function. The end goal is to take something like this:

(Variables)
@var TopofStock = 0.
@var Depth = 1.
@var ProgrammerName = Bob Smith
@var ProgramNumber = 3
@var Name = Neat Program
@circ[MyCircle,0,0,0,2.,45]
@endmill[1,.5,46,5000]
@drill[2,.201,10,2500]
@endmill[3,2.,45,4500]
@tapr[4,20,250]

(Program)
@start
@face[abs,TopofStock,3,MyCircle]
@cont[abs,Depth,1,mycircle]
@peck[abs,TopofStock-1.,2,MyCircle]
@tap[abs,TopofStock-.8,4,MyCircle]
@end

…and end up with a complete NC file that faces the top of your stock, cuts a contour around the object “mycircle” as it is defined in the code, peck drill in with a .201 drill and tap a 1/4-20 at the center of the circle.

I’m not looking to replace MasterCam or anything, just add some conversational abilities to G-Code, and maybe knock out at Notepad++ plugin to help out.

If you need some custom software in your machine shop, feel free to email me at garren@gkingdesign.com and I’d love to discuss how I can help you.

Hello world!

Ah yes, the “Hello World” post. 

Previously, the website that was here was dedicated almost entirely to web design. In a previous life I was a full-stack web developer at Kaskaskia College in Centralia, Illinois. I started my own freelance company, Garren King Design, and tried my hand at that for a while. I still, from time to time, produce websites – but the nature of the internet has fundamentally changed in a way that I believe that 95% of clients are best served by one of the various DIY platforms out there. I still support any clients remaining, so don’t worry about that! 

Instead, I now offer primarily custom software and CNC programming along with other services in that space. There will be more to come on that front.

I also have a variety of products in the photography industry that I’m hoping to bring to market, a few of which are fairly exciting. One is a electronic gadget that I think will make file management at events with multiple photographers easier and more bullet proof. The rest are lightweight, anodized aluminum lighting gear designed for weddings and events of similar scope that fill various niches. I’ve lost count of the weddings I’ve shot along with my wife (mustloveadventures.com), and I’ve historically been the guy hauling the gear around!

Finally, I’m seeking a mechanical engineering degree to add to my Psychology BA, and Computer Networking AA. I’ve fallen in love with manufacturing after chancing into machining and I can’t get enough of it.