← Back to team overview

kicad-developers team mailing list archive

Re: Geometry ongoing work

 

Welcome.

I have found a pcb file on my computer, I am not sure of its origin,
that has a buggy rendering both in legacy and GAL in different, but
similar ways. Maybe you should include this in your testing and
development.

About unittests, there is already some stuff in the qa folder using
python... but this is mostly a proof of concept. Nothing is really
tested at the moment, except for file loading more or less. I would
personally like to see some more testing, although I am not sure that
the boost test module is the best for this either.

Will your work eventually lead to use for example arcs on copper
layers, which is not supported by the DRC?

Nick

2016-07-15 12:25 GMT+02:00 Alejandro Garcia Montoro
<alejandro.garciamontoro@xxxxxxxxx>:
> Hi!
>
> I've been working on some geometry code on this branch:
> https://code.launchpad.net/~alejandro-garciamontoro/kicad/kicad-polygon-refactor
>
> This is still an ongoing work. You can consider this as a new developer
> getting used to the code, waiting for Wayne and Javier to review the code
> and decide if I finally join the team :) By the way, for the guys that were
> not at the CERN hackaton: I am Alejandro García, a Computer Science and
> Mathematics student from Granada, Spain; the idea is to work on KiCAD
> full-time once I finish my studies; that is, since September 19th.
>
> So far, the following has been done:
>
> CPolyLine refactoring, thouroughly tested in the tests directory.
>
> CPolyLine::Chamfer method has been refactored into
> SHAPE_POLY_SET::ChamferPolygon method. The main behaviour of the old method
> has been maintained, returning a completely new POLYGON object; if you think
> it should modify the original polygon instead of returning a copy of a new
> one, let me know. This was done this way just to preserve the way CPolyLine
> did its job. Furthermore, a sanity check was introduced into the old
> CPolyLine method: due to rounding errors, two corners with the exact same
> coordinates could be added, and the CPolyLine::RemoveNullSegments was not
> able to remove them (this is a bug that should be studied if we continue to
> use CPolyLine code; as this is not the idea, I just fixed the errors in the
> new ChamferPolygon method to be able to test my refactoring).
> CPolyLine::Fillet method has been refactored into
> SHAPE_POLY_SET::FilletPolygon method. The same previous comments apply here.
> The AppendBezier methods have not been moved to SHAPE_POLY_SET yes. As I
> think Michele is working on a SHAPE_ARC class, I though it's better to wait
> for that code to be ready.
>
> The collision between a SHAPE_POLY_SET object and a point has been
> implemented and tested: the main behaviour is managed from the Contains
> method, that has been fixed to support holes, and that is implemented with
> the new containsSingle private method.
> Some more simple methods have been implemented in the SHAPE_POLY_SET class:
> HasHoles method, which was declared but not defined and PointOnEdge, which
> is basically a loop over the SHAPE_LINE_CHAIN::PointOnEdge method.
> A tests folder has been added to the project directory structure (the main
> CMakeFile.txt was also modified in order to handle this new directory).  As
> a new developer in the project I missed there were some kind of standard
> test suite in KiCAD to be used; hopefully, Michele showed to me at CERN how
> he was doing his tests (thank you!), so this is based on his files. I think
> we should make sure that in the not so distant future we add some standard
> test suite to the project; maybe not this one, as I think you wanna get rid
> of Boost library and these tests are based on Boost Test; anyway, I think
> this could be a good idea for the project.
> The tests folder I added contains the following new files:
>
> CMakeLists.txt: it creates a new MyTests executable inside the tests
> directory.
> module.cpp: Defines the Boost test module.
> fixtures.h: Defines common data for the tests to check the methods.
> chamfer_fillet_test.cpp: Defines unity tests to check the CPolyLine ->
> SHAPE_POLY_SET refactor did not change the previous behaviour.
> collision_test.cpp: Defines unity tests to check the implementation of the
> methods HasHoles, PointOnEdge, Contains and Collide works well.
>
> Wayne, please, review these code changes and let me know if there is
> anything wrong or something I can improve for the future work :)
>
> Looking forward to hear from you, guys!
>
> Regards,
> Alejandro
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>

Attachment: buggy-zone-fill-rendering.kicad_pcb
Description: Binary data


Follow ups

References