Commit 3237ea13 authored by charras's avatar charras

pcbnew PS output: now shows oblong holes with the true shape.

Also, uses kicad/bin in libs.win instead of kicad/winexe
parent dd45a357
......@@ -5,6 +5,11 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2008-Apr-21 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+pcbnew
PS output: now shows oblong holes with the true shape.
2008-Apr-22 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
......
# File: libs.win
#binaries path:
KICAD_BIN = /f/kicad/winexe
KICAD_BIN = /f/kicad/bin
......
......@@ -437,7 +437,7 @@ static void PrintDrillMark( BOARD* Pcb )
/* Draw a drill mark for pads and vias.
* Must be called after all drawings, because it
* redraw the drill mark on a pad or via
* redraw the drill mark on a pad or via, as a negative (i.e. white) shape
*/
{
const int SMALL_DRILL = 150;
......@@ -458,7 +458,7 @@ static void PrintDrillMark( BOARD* Pcb )
diam.x = diam.y = (g_DrillShapeOpt == DRILL_MARK) ? SMALL_DRILL :
g_DesignSettings.m_ViaDrill;
for( pts = Pcb->m_Track; pts != NULL; pts = (TRACK*) pts->Pnext )
for( pts = Pcb->m_Track; pts != NULL; pts = pts->Next() )
{
if( pts->Type() != TYPEVIA )
continue;
......@@ -474,19 +474,27 @@ static void PrintDrillMark( BOARD* Pcb )
Module = Pcb->m_Modules;
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
{
PtPad = (D_PAD*) Module->m_Pads;
for( ; PtPad != NULL; PtPad = (D_PAD*) PtPad->Pnext )
PtPad = Module->m_Pads;
for( ; PtPad != NULL; PtPad = PtPad->Next() )
{
if( PtPad->m_Drill.x == 0 )
continue;
// calcul de la position des trous, selon echelle
// Output hole shapes:
pos = PtPad->m_Pos;
diam.x = diam.y = (g_DrillShapeOpt == DRILL_MARK) ? SMALL_DRILL :
if( PtPad->m_DrillShape == PAD_OVAL )
{
diam = PtPad->m_Drill;
trace_1_pastille_OVALE_POST( pos, diam, PtPad->m_Orient, FILLED );
}
else
{
diam.x = (g_DrillShapeOpt == DRILL_MARK) ? SMALL_DRILL :
PtPad->m_Drill.x;
trace_1_pastille_RONDE_POST( pos, diam.x, FILLED );
}
}
}
fprintf( dest, " 0 setgray\n" );
}
......@@ -575,7 +583,7 @@ void trace_1_pastille_RONDE_POST( wxPoint centre, int diametre, int modetrace )
if( modetrace == FILLED )
{
SetCurrentLineWidthPS(0);
SetCurrentLineWidthPS( 0 );
rayon = diam.x / 2;
if( rayon < 1 )
rayon = 1;
......@@ -590,7 +598,7 @@ void trace_1_pastille_RONDE_POST( wxPoint centre, int diametre, int modetrace )
rayon = 1;
if( rayon < w )
w = rayon;
SetCurrentLineWidthPS(w);
SetCurrentLineWidthPS( w );
fprintf( dest, "newpath %d %d %d 0 360 arc stroke\n",
centre.x, centre.y, rayon );
}
......
......@@ -673,7 +673,7 @@ bool WinEDA_PcbFrame::Genere_Pad_Connexion( wxDC* DC, int layer )
dy += abs( pt_pad->m_DeltaSize.x ) / 2;
}
/* calculate the 4 segment coordintes (starting from the pad centre cX,cY) */
/* calculate the 4 segment coordinates (starting from the pad centre cX,cY) */
sommet[0][0] = 0; sommet[0][1] = -dy;
sommet[1][0] = -dx; sommet[1][1] = 0;
sommet[2][0] = 0; sommet[2][1] = dy;
......@@ -697,10 +697,16 @@ bool WinEDA_PcbFrame::Genere_Pad_Connexion( wxDC* DC, int layer )
/* Test if the segment is allowed */
if( BAD_DRC==m_drc->DrcBlind( pt_track, m_Pcb->m_Track ) )
{
// Drc error, retry with a smaller width
// because some drc errors are due to a track width > filling zone size.
pt_track->m_Width = g_GridRoutingSize;
if( BAD_DRC==m_drc->DrcBlind( pt_track, m_Pcb->m_Track ) )
{
delete pt_track;
continue;
}
}
/* Search for a zone segment */
loctrack = Locate_Zone( m_Pcb->m_Zone, pt_track->m_End, layer );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment