How does sharing designs work?

I’m just getting started, and don’t really understand the process of sharing designs. On the GitHub pages people link to, there are several different file formats (.nc, .stl, .dxf, etc) What’s the difference between these? If I want to share a project with someone else, what file format do they expect me to use?

1 Like

CAD (computer aided design) software is where you draw or model your design digitally. There are ALOT of options here. Examples are: Fusion 360, AutoCAD, MaslowCreate etc. CAM (computer aided manufacturing) is software that allows you to take your digital design and generate machine code that a CNC (computer numerical control) machine can use to create your design in the real world. Lots of options here too. Examples are: Fusion360, AutoCAD, MaslowCreate, makercam, JScut. Some software have CAD and CAM integrated into one package. Here is a cool graphic on workflow from

There are so many different types of software and hardware out there; not everyone uses the same tool set, so there are different files. *.nc files are gcode and can be read by GroundControl (GC can read other gcode file extensions too); this is the output of your CAM software. *.stl files are most often used in 3D printing; it is a 3D modeling file. *.dxf is a standard drawing format that pretty much any CAD software can open; easily shared between different CAD software.

Do have any thoughts on what software you want to use? This article discusses some (probably sponsored) software you may want to consider.


There are three different classes of files.

  1. 2D drawings (.svg, .dxf, .pdf)

    Pretty much anything thats a vector based format will work. pixel based
    formats do not work well

  2. 3d drawings

    Here there is more variety.

    result based. These hold the resulting shape, frequently as a set of
    .stl is a common one

    parametric. These hold a series of instructions to create the shape. This
    has the advantage that you can change the size of something and the result
    .step is a common one

Whatever drawing you create with whatever method, then gets put through a CAM
step (Computer Aided Machining). At this step you define things like the size of
bit that you are going to use, where zero is on the resulting work, how many
passes to take in what order and direction, etc. Part of this step looks at what
g-code features your machine can use and makes sure to only use those features.

The result of the CAM step is g-code that is setup for one particular machine
type. G-code files can be .nc, .gc, .gcode, etc. There is no official standard.

since the g-code is very specific to the machine options, it’s usually not the
best type of file to share. If someone has an identical machine, they can use
your file, but if they want to use a different bit, change how deep to cut in
each pass, or how fast to move, the g-code doesn’t help them. In addition, there
are features in g-code that can be used to mess up your machine (see for examples of this in 3d printing)

so it’s usual to share your projects in whatever format your CAD software
supports, people may ask you to try and export it in a different format, but the
drawing format that your CAD understands is generally the best.

David Lang

1 Like

Thank you for your replies! That all makes sense; it’s really helpful to have it all summarized in such an organized way.

1 Like

@shopcats, I encourage you to read about MaslowCreate in Bar’s release announcement.

Sharing designs isn’t as easy as it could be and I’m working on a solution. It’s still very much a work in progress, but when Create is finished you will be able to share designs with a link like this:

Note that you can edit any of the height, thickness…etc parameters on the left. Soon there will be a “download gcode” button over there which will give you a file that is ready to cut.


Cool! That does seem a lot more streamline.

1 Like

Somewhere else I’m working on getting “notes” embedded in a native CAD file. This would allow the design to be shared with information and instructions. It would allow for revision notes as well. It is important to understand the purpose behind a design. It is important to the sharing of the file.

IE. - this is a door stop, I had a lot of 1/2 scrap plywood so I made this to us it up, I used a 1/4 flat end mill. It took 7 minutes to run. Everyone I know got a doorstop for Xmass.

If you are trying to use the same file and 3/4 mdf and 1/8 end mill you may have to make adjustments.

One aspect missing in this discussion is Validating the Gcode once generated in a gcode viewer like Camotics.

I recently fielded a problem where the user switched the units of measure to inches. It was set to 4mm when they made the switch. This made the safety retract heigh 4 inches on a machine that only had 3 inches of Z travel.

Looking at the Gcode in a viewer it was obvious what was causing the Z to crash.

I hope this helps

Thank you


This is amazing. There are a lot of people and companies who can build machines but I think one of the biggest hurdles to CNC adoption is the complexity of the workflow, especially when multiple people are involved. Moreover, without a more consistent workflow it is not nearly easy enough to share repeatable designs that casual users can just download and run. @bar Thanks for taking on this monumental challenge.



wouldn’t you need to share the github file instead?

David Lang

This sounds like an amazing concept! I really hope it comes into fruition!

1 Like