New User - Lots of Questions

Hey All,

New user here, but not new to 3D design. I’ve been in 3D for 20 years now, first in Mechanical Desktop and moving to SolidWorks. Can’t wait to wrap my brain around all of this.

I worked for a CNC shop for years, but on the product development end, not messing with NC programming. I want to get my feet wet as a home hobby.

So 3D creation, design for manufacturing, and good practices for machining are handled, as I’ve also got a decent amount of experience running a Bridgeport manual mill. The struggle is figuring out gcode using SolidWorks CAM, so I’m looking for some basics to get going.

I built a couple of basic programs, but I’m seeing some hiccups. I see the router make a few moves at the beginning and end of the program that aren’t in the program simulation. For example, in SolidWorks I built a table surfacing program where the cutter will start at one corner and face cut a 30 x 30 square. I noted I have to jog the machine to 15, 15 from 0,0, (using the front left corner as 0,0,) to get it to run the program in the correct position without crashing into the machine extents. Once there I hit reset zero in UGS with the Z all the way up to test run the program with the router off with no cutter. From there I can send it, but I get an error at the front of the program, which I think is because I may have a tool change command in the file which I understand may be causing the hiccup since we don’t have a tool changer. If I hit play again it will run the program.

This is where it gets interesting. It will rapid to the start of the program, the front right corner, 15,-15 away from 0,0 as the part is orientated in SolidWorks, but it plunges the router down to what appears to be the level of the cut before it starts moving. Once there it will lift the cutter up to the retract height, then plunge it back to the cut depth and run the program. This tells me if I were to actually run the program with a cutter, it would bury it from 0,0, rapid traverse to 15,-,15, retract, then plunge it back in and begin the program. Can’t have that, I was thinking it would keep the cutter up until it got to the beginning of the cutter path and then plunge it, so I’m super confused.

So I’m pretty certain I didn’t apply these parameters in SolidWorks CAM. I went over the clearance / retract heights when making the program, and I don’t think that was something I told it to do. I would have expected the cutter to stay up while it traversed to the beginning of the path, then plunge and go.

I feel like it’s doing some things I’m not asking it to do. I backed up and wrote a simple program to cut a straight line left to right at a constant depth. But UGS won’t even run that program as it finds an error with the code & won’t let me hit the play button again in UGS to override it.

Two things, one of which I’m certain of. I have no idea how to write gcode for cutter paths other than the screwing around I’ve been doing with this, so that’s probably 99.999% of my problem. But I’m also wondering if I’m post processing the gcode in the proper format. Knowing there’s different languages for all brands of CNC machines, I’m post processing the path to an .NC file from SolidWorks CAM in GRBL format. I’ve not found really concrete info on what the Longboard likes to read and how to save .NC files to that config. There’s so much information available that I feel like everywhere I look is causing me to ADD on the internet and bounce around on a million pages without finding anything that really leads me in the right direction.

Sorry for the long first post, but basically I need help getting my program out of SolidWorks and into the LongBoard from UGS correctly, and I need some of y’all to point me in the direction of how to get the machine to do what I’m telling it to do without potentially hurling broken cutters across my garage because I crashed the machine. The goal is to make sure the business end of my cutters never touch anything other than the part I’m cutting when it’s spinning 10k+ RPM.


Welcome to the crew. I think there is a M6 and G28 command in the first lines of your code. Have no experience with Solidwork and how to setup the postprocessor there, but in Autodesk’s products you can turn off the use of M6 and G28. M6 should cause the halt to change the tool, G28 is a homing command which is senseless amd dangerous since were not homing the LM at startup.
For Fusion/Inventor, there were discussions in the forum about the use of the right grbl - postprocessor, but cant remember if there were for Solidworks too. Maybe someone who is using Solidworks could state on this.

As quick solution, try to remove the M6-line and G28 command from the .nc file.

1 Like

@DangerDog Welcome to the group, Danny.

I did some searching and these guys seem to have developed a post processor for grbl controllers for

There is a form to fill out and they will email you the free post. I got to them from the SolidWorks forum and from what I read, their post works.

I would suggest that you try running air with it and see how it looks.

1 Like

Thanks fellas for the replies, please keep em coming!

I’ll definitely entertain a 3rd party CAM solution if it makes my life easier. Awesome part about doing it on SolidWorks is I can create stock templates for stuff I’ll be doing on repeat, with a cutter path already written, and if I change the part dimensions, it’ll automatically update the cutter path so I don’t have to regenerate it. So if I can keep it all in SolidWorks, that will save me a ton of time. So my ultimate goal is to see if I can tailor SolidWorks CAM to output the gcode correctly with all of the available options you can tweak in there.

So I made a lot of progress, and I’m stoked overall. Table indicates within .0015 - .002 after the cut, with a high spot remaining that I’ve been seeing at the front right corner about .0025 up from the center of the table. Not bad to be within a sheet of paper’s thickness on a big square of MDF made of 5 different pieces. Made a .020 deep cut, then took a .005 finish pass and repeated that pass to clean it up.

As suspected, and thanks to Jannik for the confirmation, the M6 tool change command was causing the error in my program up front. I need to figure out how to turn off the use of multiple tools in SolidWorks CAM to eliminate that code from the program, but for now I’ve got it set to open the .NC file immediately once I save it so I always remove that command and resave.

So I created this path as a facing operation, noting a few things I didn’t like. I think because it’s a facing operation and I didn’t specify multiple depths or add stock to the part in SolidWorks, the cutter had to be vertically positioned at the depth of the cut before running the program in order to make the actual cut at the correct depth. So I had to touch off on the material, start the router, jog the Z down .020, then hit play. The cutter would then jog the Z up to what you’re about to think is going to start sounding repetitive in the next paragraph, 1.500 away from the motor carrier plate before rapid traversing to the start of the path and then starting the cut.

I noticed also when I ran tests on the path with the Z up and no cutter that when I hit play that the Z would always first jog to the same height no matter where I initially started the Z at in my tests. Run the test with the Z starting all the way down? Z retracts to 1.500 away from the motor carrier plate before rapid traversing to the start of the path, then shifts back to all the way down for the actual cut. Run the test with the Z all the way up? Z shifts down to 1.500 away from the motor carrier plate before rapid traversing to the start of the path, then shifts back to all the way up for the actual cut. Run the test with the Z 2.968 down from the top? Z retracts to 1.500 away from the motor carrier plate before rapid traversing to the start of the path, then shifts back to 2.968 down for the actual cut. So that part of the operation when I hit play is not actually part of the path I wrote in SolidWorks I don’t think, as no matter where I begin my tool vertically, it retracts to the same 1.500 away from the motor carrier plate for rapid traverse to the start of the path, then returns it to the elevation I started the cutter at. So my guess is this is some sort of static “zero” position for the Z axis in the Longboard. Can anyone shed some light on this? I see this being potentially dangerous if I have a taller workpiece in the machine and that Z position isn’t enough to clear the actual part. Ultimately I want to be able to have control over this instead of trying to have to always account for it in my cutter path and tool / workholding setup.

Lastly, because I wrote it as a facing operation, it basically ran it like it was running the cutter off the edge of a face before jogging up and heading the other way. This left me with scallops along the Y edges of the path in the finished cut. To remedy, I simply finished the path and then jogged the machine along the edges of the pocket to cut them “manually”, which worked, but I shouldn’t ultimately have to do. So I should have designed the path instead as a pocket since that’s what it really is, so the cutter would outline the pocket first and then remove material from the center. No biggie, I’ll save this path for now and redesign as a pocket later since I’ll be repeatedly using it.

So, my question now… Do you guys check your tables for flatness frequently, and is MDF known to move with changes in temp / humidity? Trying to figure out how often I should keep an eye on this and if it’s going to creep on me. I’m out for the next few days, so I plan on checking it when I come back to see if it moves. I live about 15 minutes from the coast, so humidity is a bit of a concern, though temp fluctuation here isn’t super drastic.

Anyway, another long post, but I’m excited to be getting a grip on this thing. This whole process has been surprisingly smooth without any challenges that aren’t a direct result of my own ignorance when it comes to programming. Excited for the next steps now that I have a pretty flat table. :smiley: !

Have a couple videos I’d love to add, but I guess you can’t upload those here. Might have to link them via Dropbox or something…


@DangerDog You pretty much lost me somewhere in all that, Danny. :grinning:

However, I can address your question about MDF. MDF will swell with humidity, but “stock” it is pretty dimensionally stable. The problem is that the first thing we do after installing it as a spoilboard is mill off the nice, compressed surface that helps make it stable. There is no way around this, except if you want to seal it again after each surfacing. One youtuber that I follow does just that. He seals it with shellac each time. I live with it. When I say that it “swells”, it’s very relative. How much variation in the total dimension of your spoilboard are you prepared to accept? If your projects mean that you are milling large pieces, you may need to be more picky than if you are milling 6" squares? If you are cutting all the way through your pieces, you can live with more variation than you can if you are milling pockets or pieces that must mate perfectly.

Since you are concerned about it, I would suggest that you test how much your spoilboard moves over some preset period of time. Surface it, then wait. Then mark it up with pencil lines so that you can see where the bit hits and mill off whatever you think is acceptable for variation. Let’s say you can live with .001". Set your toolpath to take off .001" and see if there are any pencil lines remaining. If there are not, you might conclude that, in your environment, the MDF is solid enough over that time frame.

All that said, remember, too, that not all MDF is created equal. The quality varies greatly from the stuff that the big box stores typically sell to the high end stuff used in commercial shops.

1 Like

Thats what it sounds to me: The “static” zero is the machine zero (G53), usually set after homing the cnc. Since there are no limit/homing switches and we’re not homing the LM, the G53 is usually set to the point the LM is at start up. I guessed there could be a G28 command in the first lines of your code to jog to the “static” zero, but it could be also caused by a command like “G53 Z0” in the first lines.
If there is, there should also be a G54 command after this to switch back to the workpiece coordinate system. Anyway, you should remove the G28 or G53 line in the code to be fine… or find the corresponding post processor option called something like “G28/G53/safe retract” to switch it off permanently.

1 Like

Awesome, thanks again fellas! Sorry for being wordy, I tend to write novels so I don’t leave out key details.

Appreciate the input on the MDF Grant. Would you happen to know where would I go to find higher quality stuff?

I’ll try looking for that stuff in the code, and more importantly, see if I can turn it off permanently as mentioned in SolidWorks CAM.

Thanks again! Can’t wait to do more!

@DangerDog That’s a tough question, Danny. Locally, we buy from 3 commercial suppliers. Most often, we use a brand name - Rangerboard. There are others in the same class. Rangerboard is much higher quality than the big box product. It’s also more expensive. :grinning:

I guess you need to look at benefits vs costs, assuming that you can find the better product locally. If your spoilboard is not moving more than you can live with, spending on better quality MDF or jumping through hoops to get it may well not be worth it. I would bet that most of the members here are using big box MDF and having no issues with it. I’m one of them. I don’t use the pricey stuff for my spoilboard. I keep it for picture frames as I get a much better finish off the mill than with the cheaper product.

1 Like