← Back to team overview

kicad-developers team mailing list archive

Re: 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.

-- 
Jean-Pierre CHARRAS


Follow ups

References