-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Thermal reliefs for pads in filled areas not supported? #18
Comments
I also tried with I just noticed that some area inside a trace (I had a small triangle inside a trace where the trace passed by a pad and connected to it using two angled small traces from both sides) wasn't milled away either. More generally, if you have a trace that forms a loop (I tried a simple rectangle), the milling path only passes on the outside, the inside of the trace isn't milled, resulting in a filled rectangle, instead of only a small trace on the border of the rectangle. This is probably also what happens with the thermal reliefs, I suspect. |
Unfortunately one of the biggest limitations of pcb2gcode is its inability to handle this kind of situations: a "hole" inside a bigger area. This applies to multiple cases, like this for example As you can see the central part of the pink area has just been ignored. Currently I'm working on the tile feature (issue #16) but after it I'll try to implement this. |
I've done some work on this and it mostly works now. Can you test it? Pull the changes from my repo, compile and run it. |
Woah, awesome! I'll try to find some time for a test run this weekend! |
I've moved it in a new 'dev' branch, here |
I ran your dev branch on my original design, as well as the testcase above, which seems to work nicely (judging from visual inspection of the generated gcode using http://fablabamersfoort.nl/gcodevisualizer/). I'm not sure when I will be able to actually test the gcode on my mill. I did notice another problem with the outline while testing the above testcase, but that seems unrelated to internal gaps, so I'll open a separate issue for that. |
I just tried milling my design yesterday, which worked well enough. Here's the result: Some traces are a bit small, probably because I slightly underestimated the
and no back.ngc would be generated. Here is my full design to reproduce: https://gist.github.com/matthijskooijman/2c0e7fb0c1fe2d4c88f7 I could reproduce this using the simple testcase from my first post as well, but that needs a bigger offset:
Another think I just noticed, is that, with
Looking at the resulting gcode, there are indeed two cutoffs missing: I can't quite figure out what's special about these two. The gaps are just under 0.5mm wide, so When trying to reproduce this with the simple testcase from the first post, things get a bit weirder. With With Looking at the gerber file, the gaps are 0.5mm wide, so an offset of 0.2mm (meaning tool width of 0.4mm) should be able to handle that? I couldn't see if adding If I increase the offset further, to 0.3mm, it starts dropping gaps:
I'm not sure why this drops just 2 of the four, since they should be identical (and, AFAICS, all of them should be too small?). Further increasing the offset lets pcb2gocde drop all four of them:
I did these last tests with both segments.gbr and polygons.gbr from my testcase, resulting in identical gcode in all cases. |
Thanks for the complete report. Unfortunately I've noticed that the current implementation of surface.cpp doesn't behaves well with internal cutoffs and I'm afraid this is the best we can do without rewriting the whole core. |
With commit 70ba491 I've pushed the experimental algorithm for "internal toolpaths", able to detect and process thermal pads. The new algorithm is disabled by default and can be enabled with |
Fixed, see v1.3.0 |
I tried using a ground plane, using thermal reliefs for the pads inside the plane. However, it seems that pcb2gcode completely ignores these termal reliefs and pads, and just keeps the full ground plane around the pad. I haven't dug into the gerber files to see how these thermal reliefs mare specified exactly, but I'm attaching a small testcase here.
Here's an image of the board (as output by pcb2gcode, so it seems that the thermal reliefs are properly read by pcb2gcode):
The test files are here: https://gist.github.com/matthijskooijman/6ec1c7f5a11d462127bf
noname.kicad_pcb
is the original board file made in KiCad.polygons.gbr
andsegments.gbr
are the Gerber files generated by KiCad (with the filled zone set to "polygon" and "segment" fill mode respectively).front.ngc
is the G-code generated by pcb2gcode, identical for both Gerber files. Themillproject
file used is also included.I'm using pcb2gcode 1.2.2, locally compiled.
If this is indeed not supported, adding support would be great. If I just missed a setting somewhere to make it work, that would be even better :-)
The text was updated successfully, but these errors were encountered: