At 0 deg, I’m already seeing something odd. I expect the smallest (black cut) lines might disappear, because there is not enough room for the declared dot width to make a hole on that- or any line. This would be true for both horizontal and vertical. Lines are disappearing, but inexplicably not the smallest ones.
So, let’s do 45 deg autorotations for 8 passes (hiding the traversal moves for clarity). Now it’s ADDING a bunch of strokes between lines where it should NOT be firing.
But is this REALLY a DWC problem? This is confusing. I went back and- quick answer- the whole 3d slicing implementation is coded wrong.
Let’s say the spot size is 0.025mm, First, let me establish the scale. by making a small 0.025mm tall Fill rectangle off to the left. This isn’t part of the raster at all- just here to scale the BMP graphic where some bars/gaps will fit and some won’t.
OK, DWC turned off, let’s set the LI to half the dot size, which would be “very fine” but a horrible way to engrave because the heat of the prior line will overlap and can melt the surface:
OK, all looks good. Except we know the smallest cut lines will be smaller than the spot size, so they would overcut and merge together in reality. So let’s add a 0.025 DWC. This is the result:
Well, that indicates a fundamental coding problem right there, hard stop. Why are some vertical bars missing at random points? I can guess why right now. The algorithm is only sampling on a 0.025mmx0.025mm square grid, and that’s going to produce errors all over.
What it needs to be doing:
The BMP was actually created from a SVG to begin with. I left it in SVG format and tried my best to match the scale of what I used here. Since it’s SVG solids, this is FILL operation here, with the same LI 0.025 no DWC:
OK, THAT is looking logical. It’s got no sense of beam dia though, so the thin lines are going to be too wide and merge. Thus DWC should shrink down the black bits where the beam is firing, so the outer radius of the dot’s cut fits within the area we told it to cut. Some of the smallest lines should disappear entirely. This would be the correct result- the width is below the spot size, so we can’t fit a spot there without overcutting.
(Still doing as Fill) Do we get what we expect from DWC=0.025? Actually, not exactly. it’s having some effect but not on the right scale
For reasons I can’t explain, let’s do DWC=0.050 and see what it gets (still Fill). OK, interesting. It is indeed skipping the vertical and diag lines it can’t fit a spot in. But the horizontal lines are al wrong, and the coding problem is obvious now: the DWC only tests in the scan direction. It’s not checking whether there’s enough room for a dot in the other direction, so it fails to correct this case, which is a pretty serious glitch
DWC does not work for Fill or 3ds modes. Don’t use it.
If it’s a Fill, just select everything and do “Offset Shapes” inward by half the dot size. That is effectively the correct implementation of DWC.
3Ds mode isn’t working with correct precision. The line interval should not be used to sample points within a line, that’s just wrong. And there’s no reason to even be doing this. It breaks everything for me due to differences in how the parameters need to work for a higher wattage MOPA (long story, but the bottom line is LB is broken here)
Fixes: For Fill mode, DWC should just mean do an inward “Offset Shape” of 1/2 the dot size ahead of time, Delete Original Lines That’s it.
Fixes: for 3DS mode, the line width sampling is just wrong. Any sampling is wrong. All this needs to do is
subtract the current iteration count from the greyscale value and make a copy of the bitmap as a mask for the current iteration
Do a hidden “Trace” operation on each level mask
If DWC is active, do a hidden “Offset” operation, 1/2 dot width Inward, Delete Original Lines, on each level mask
Now just treat as a Fill. The raster line sampling problem is gone.
That’s what I did first! It’s being treated as a 3DS (3d Slice mode) even though it’s just a smooth 50% gray from the conversion. That’s ok, the testing wasn’t looking for how it changes with depth. Just slice this single 50% depth is fine.
The way it rastered across the bitmap was really confusing. Switching to Fill was necessary to understand what went wrong and how to fix it