← Back to team overview

kicad-developers team mailing list archive

Re: Geometry ongoing work

 

On 7/26/2016 9:29 AM, Nick Østergaard wrote:
> 2016-07-26 14:58 GMT+02:00 Wayne Stambaugh <stambaughw@xxxxxxxxx>:
>> On 7/26/2016 7:20 AM, Nick Østergaard wrote:
>>> 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.
>>
>> I suggested using the boost unit testing framework to Alejandro.  The
>> problem with using python unit testing is that not everything in Pcbnew
>> is swigged so you wouldn't be able to test that code unless there is
>> someway to compile and run C++ test code from the python unit test
>> framework.  If this can be done, then boost unit test wouldn't be necessary.
>>
>> While I'm not 100% convinced that the boost unit test frameworks is the
>> way to go, it seems to compare well to the other C++ test frameworks.
>> The benefit is it does not add yet another dependency and allows us to
>> use C++ code to write tests.  I do not have any experience in this area
>> so if someone as experience using the different c++ unit test
>> frameworks, feel free to comment.
>>
>>>
>>> Will your work eventually lead to use for example arcs on copper
>>> layers, which is not supported by the DRC?
>>
>> It should allow for this but AFAIK we still cannot generate gerbers with
>> arcs.
> 
> Why not?

Don't know.  Maybe because we don't have DRC support for arcs yet.  All
arcs and circles (except pads) on copper layers are generated as a
series of line segments rather than arcs.  Someone please correct me if
I am wrong about this.

> 
> The gerber spec has: 4.5  Circular Interpolation (G02/G03) and (G74/G75)
> 
> I might be misinterpreting the spec, but I see that as it supports
> _circular_ arcs. Which is what we have in KiCad.
> 
>>
>>>
>>> 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
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>
>> _______________________________________________
>> 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


Follow ups

References