For a cnc machine, lets talk 3 axis mill, to keep it simple, what exactly is required? You need a tool path, you need to know the tool diameter, cutting rate, and a load of other stuff. For 3d printing, many of the fdm machines are basically lightweight 3 axis mills, but you're laying down, instead of taking away, so an stl file is easy to pass into a slicer, to produce the desired object.
It is easy enough to generate cnc tool paths programmatically. You can use an stl file, and sort of scan the surface (raster like) . Plenty of free software exists to do that. If you want a graphics program, any graphics program to drive the machine directly, in some other way, then you need to work with tool paths, directions, profile of tool, material of work-pieces, etc. The actual cad, is trivial in comparison. Laser cutting, water jet, plasma, even edm, is simpler then pushing rotating tools through lumps of metal.