Is there a setting for sideways nozzle offset or line width

My prints seem to behave as if the centreline of the nozzle follows the edge of the model.

Is there a setting to offset the nozzle to one side by half the nozzle width, so that (say) a circle or square will print to the exact outside size of the STL model? And a hole, the same size as the hole in the model?

If so, where is it, and how do I set it in Lulzbot Cura 3.6.3?

If there isn’t such a setting, could it be a feature request?

I’d be hard pressed to figure out an algorithm that would do what you ask.

Consider printing a donut. On the outside, you are asking for half a nozzle width shift but in what direction? On the hole in the middle, that half a nozzle width shift would be in the opposite direction as the shift on the outside edge.

I believe the only implementation that makes sense is to use the center line of the nozzle. If half a nozzle width is causing problems, then use a smaller nozzle. You can adjust the Line Width in Cura which can help a little bit.

I’m guessing you are printing small detailed objects. I switch to a .2mm nozzle (I have a separate tool head) when I am printing objects like this.

I’m not sure if I understand the question. Since the model will be rendered as the printhead extrudes filament, the filament would always be directly under the nozzle.

You can print an XYZ Calibration Cube (this is a 20 x 20 x 20mm cube) and then measure the cube with calipers to verify size accuracy. 3D printed parts will never be dimensionally flawless – that’s just the nature of printing with melted polymer. But it should be pretty close. If it’s off, then you can adjust the X, Y, or Z axis steps-per-millimeter as needed.

You can also use a setting called “horizontal expansion” in Cura which causes all walls to be printed either fractionally outward (by setting a positive value) or fractionally inward (using a negative value). I use this when printing parts that need to fit together (e.g. a post that needs to fit into a hole … and it fits either too loose or too tight).

Cura 4.x added an extra parameter called “hole horizontal expansion” in addition to the normal “horizontal expansion” … so you can set one value for holes (in the X/Y plane) and a different value for walls that are not holes.

Indeed. that would be what would be needed.

I only asked, because I saw in the Sketchup forum a post saying that there was such a setting in the Cura slicer.

Since I’d never seen it, nor seen reference to it, I thought I’d ask here.

It’s clearly not trivial, and I usually make the adjustment myself when modelling for 3D printing where precise dimensions matter.

And it isn’t trivial to do so!

I’m not sure how hard it would be to have the slicer figure out which are outside perimeters, and which inside (the outsides of holes). Beyond my skill level, anyway.

But I’m sure it’s logically possible, when it simplifies to horizontal loops in a slice.

That would be a very close approximation to what I had in mind. Is it a fixed distance, or a percentage increase/decrease in size? The latter wouldn’t be what I’m looking for, the former would be.

But as far as I can tell, the latest Lulzbot Cura version (which I have) is 3.6.3x, not 4.x.

Horizontal expansion is a fixed distance entered in millimeters. E.g. if you tell it increase by say … 0.2mm … then every wall will be printed that much farther out than where it would otherwise have printed.

Cura LulzBot Edition (LE) is 3.6.x (usually the x is 30, 31, or 32 depending on which OS you are using). Ultimaker Cura is at 4.13.x …

But before you race out to download it, there are a number of hardware add-ons that exist in Cura LE that do not exist in Ultimaker Cura.

The ‘Start’ G-Code you see in Cura LE has a number of special G-Code variables. These are values you see in curly braces {}. The variable names are not a standard. So the variables that exist in Ultimaker Cura are either different … or sometimes missing entirely.

To start a print job, the printer needs to do a bed level, but to get an accurate bed-level, the nozzle needs to be clean. So it needs to heat the head to the soften temperature … which is dependent on the filament. Cura LE pulls that value from the filament profile. It retracts, cools to a “wipe temp” and wipes the nozzle to clean it, then cools to the “probe temp”. The Soften, Wipe, and Probe temp variables do not exist in Ultimaker Cura.

BUT … you can do math inside the curly braces. So if, for example, the print temp was set to 220°C and you wanted to use 180°C as the “soften” temperature, 170°C as the “wipe” temp, and 160°C as the “probe” temp … then you could do things like {print_temp - 40} to soften (because 220 - 40 = 180) etc. etc.

This means you’d need to modify the G-code to get a successful bed probe … you can’t just copy the Cura LE start G-code into the Ultimaker Cura G-code and expect to work … without modifications.

John, I started using Simplify3D a year ago after having used it on the job. It has the exact setting or correction factor that your looking for. Is very useful for obtaining dimension accuracy but also, for objects like threads, timing pulleys, gears with fixed CD, you can also adjust fit and backlash. And you can do this as you set up each print job using your nominal as-modeled stl-objects. I find that an adjustment factor of negative 1 nozzle radius does the job, consistent with what you described. Within Cura the only correction factor I know of is the nozzle correction factor or whatever it’s called (I forget) that controls the as-printed line width as % of nozzle diameter. Unfortunately that setting applies to all lines and paths through-out the print job, not only at external surfaces. I suppose a setting of 50% could be tried. I never went more than 90% as I recall. Good luck.

Many thanks. I’ll try that in a few days.