kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #11953
Re: various patches
----- Original Message -----
> From: jp charras <jp.charras@xxxxxxxxxx>
> To: Cirilo Bernardo <cirilo_bernardo@xxxxxxxxx>; "kicad-developers@xxxxxxxxxxxxxxxxxxx" <kicad-developers@xxxxxxxxxxxxxxxxxxx>
> Cc:
> Sent: Friday, January 3, 2014 6:53 PM
> Subject: Re: [Kicad-developers] various patches
>
> Le 02/01/2014 22:33, Cirilo Bernardo a écrit :
>> ----- Original Message -----
>>
>>> From: jp charras <jp.charras@xxxxxxxxxx>
>>> To: kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Cc:
>>> Sent: Thursday, January 2, 2014 8:29 PM
>>> Subject: Re: [Kicad-developers] various patches
>>>
>>> Le 02/01/2014 04:27, Cirilo Bernardo a écrit :
>>>> Hi folks,
>>>>
>>>> I have put two sets of patches onto github for anyone to review
> or apply.
>>>>
>>>> The (bzr) patches:
>>>> export_idf3.patch : Adds basic IDF3 export (board and cutouts /
> holes
>>> only)
>>>>
>>>> export_vrml.patch : Improved VRML export; includes more
> realistic
>>> coloring scheme, zone fills, improved eye candy. This patch is better
> than the
>>> patch I previously posted here; this patch fixes a number of bugs,
> eliminates a
>>> redundant class, and provides features such as the zone fills and
> silver pads.
>>>>
>>>> URL: https://github.com/cbernardo/kicad-patches
>>>>
>>>> The patches are against Rev 4598.
>>>>
>>>> I would appreciate any comments on the patches. Personally I
> would like to
>>> see the patches incorporated with the bzr source. The vrml patch
> includes a
>>> major rewrite of export_vrml.cpp and I'm confident users will find
> the
>>> results to their liking.
>>>>
>>>> - Cirilo
>>>
>>> I committed the IDF patch
>>>
>>> vrml patch needs to be tested.
>>>
>>> Thanks.
>>>
>>> --
>>> Jean-Pierre CHARRAS
>>>
>>
>>
>> Thanks Jean-Pierre,
>>
>> What kind of testing is required for the VRML patch? I'm happy to do
> whatever I can.
>>
>> I tested the VRML export on 3 boards which I designed, some test boards to
> ensure certain features are tested such as oval pad at angles different from 0,
> 90, and on all the boards in the demo directory. Almost everything is OK except
> for a few erratic issues with rendering some features, but so far I can find no
> big problems. The erratic features I noticed so far include:
>>
>> 1. On the pic_programmer demo board, some of the resistor silkscreen
> outlines have a cone at the end rather than being flat.
>>
>> 2. On one of my own boards, the silk outline of a connector has a line
> forming a triangle rather than a rectangle; all other of the same connectors on
> the board have the outline rendered correctly. I suspect this is related to (1)
>>
>> 3. On the video demo board some of the thru holes and pads are rendered
> strangely - the track extends two points into the pad and the pad has a
> 'V' shape cutout on either side of the track.
>>
>> I have been looking into these issues and will spend more time trying to
> create a simple board which replicates the problems. In general the erratic
> features are not very obvious and will not harm the appearance. The resulting
> files load into the whitedune viewer and Blender.
>>
>> - Cirilo
>>
>>
>
> In fact it needs 2 changes in vrml_board to be compiled on mingw (I
> exactly use TDM-GCC-32, with differs slightly from mingw 4.7, and uses
> gcc 4.8.1)
>
> 1 - in void SetGLError( GLenum errno ), errno collides a define in some
> mingw header. So change all occurrences of errno to something like error_id
>
> 2 - the callback functions like:
> void vrml_tess_begin( GLenum cmd, void* user_data )
> are incorrectly defined.
>
> they must use the CALLBACK type modifier
> (see for instance 3d_basic_functions.cpp):
> static void CALLBACK vrml_tess_begin( GLenum cmd, void* user_data )
>
> I included fctsys.h to define CALLBACK (defined in a mingw include file)
> #include <fctsys.h>
>
> I changed them to:
>
> #ifndef CALLBACK
> #define CALLBACK // On linux, CALLBACK is not used, and not defined
> #endif
>
> #define GLCALLBACK(x) (( void (CALLBACK*)() )&(x))
>
> static void CALLBACK vrml_tess_begin( GLenum cmd, void* user_data )
> {
> VRML_LAYER* lp = (VRML_LAYER*) user_data;
>
> lp->glStart( cmd );
> }
>
> and later for each callback function:
> // set up the tesselator callbacks
> gluTessCallback( tess, GLU_TESS_BEGIN_DATA, GLCALLBACK(vrml_tess_begin) );
>
>
> After that, all works fine for me.
>
> I suggest you to add holes defined by the board outlines.
> If you are using:
> BOARD::GetBoardPolygonOutlines() returns the external outline polygon,
> and a separate list of holes (polygons)
> (see 3d_draw.cpp)
>
>
Thanks for all your comments Jean-Pierre.
I have made the changes to vrml_board as requested.
The board cutouts were meant to be rendered but I overlooked it while testing and did not realize there were bugs. I fixed the bugs and the cutouts now render. I also fixed another bug (PCB text not rendered) I found while checking the VRML output against what I expected from my test board.
The latest patch has been pushed to github and is against Rev. 4601 I could not get any later revision to build (latest attempted: 4608).
I will try to set up MinGW as well so I can test in that environment as well.
Cheers,
Cirilo
Follow ups
References