gEDA footprint import: fix arcs/circles.
This commit is contained in:
parent
241375f41c
commit
dbd3895104
|
@ -498,8 +498,6 @@ FOOTPRINT* GPCB_FPL_CACHE::parseFOOTPRINT( LINE_READER* aLineReader )
|
||||||
VECTOR2I centre( parseInt( parameters[2], conv_unit ),
|
VECTOR2I centre( parseInt( parameters[2], conv_unit ),
|
||||||
parseInt( parameters[3], conv_unit ) );
|
parseInt( parameters[3], conv_unit ) );
|
||||||
|
|
||||||
shape->SetCenter( centre );
|
|
||||||
|
|
||||||
// Pcbnew start angles are inverted and 180 degrees from Geda PCB angles.
|
// Pcbnew start angles are inverted and 180 degrees from Geda PCB angles.
|
||||||
EDA_ANGLE start_angle( (int) parseInt( parameters[6], -10.0 ), TENTHS_OF_A_DEGREE_T );
|
EDA_ANGLE start_angle( (int) parseInt( parameters[6], -10.0 ), TENTHS_OF_A_DEGREE_T );
|
||||||
start_angle += ANGLE_180;
|
start_angle += ANGLE_180;
|
||||||
|
@ -509,15 +507,22 @@ FOOTPRINT* GPCB_FPL_CACHE::parseFOOTPRINT( LINE_READER* aLineReader )
|
||||||
|
|
||||||
// Geda PCB does not support circles.
|
// Geda PCB does not support circles.
|
||||||
if( sweep_angle == -ANGLE_360 )
|
if( sweep_angle == -ANGLE_360 )
|
||||||
|
{
|
||||||
shape->SetShape( SHAPE_T::CIRCLE );
|
shape->SetShape( SHAPE_T::CIRCLE );
|
||||||
|
shape->SetCenter( centre );
|
||||||
|
shape->SetEnd( centre + VECTOR2I( radius, 0 ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// Calculate start point coordinate of arc
|
// Calculate start point coordinate of arc
|
||||||
VECTOR2I arcStart( radius, 0 );
|
VECTOR2I arcStart( radius, 0 );
|
||||||
RotatePoint( arcStart, -start_angle );
|
RotatePoint( arcStart, -start_angle );
|
||||||
|
shape->SetCenter( centre );
|
||||||
shape->SetStart( arcStart + centre );
|
shape->SetStart( arcStart + centre );
|
||||||
|
|
||||||
// Angle value is clockwise in gpcb and Pcbnew.
|
// Angle value is clockwise in gpcb and Pcbnew.
|
||||||
shape->SetArcAngleAndEnd( sweep_angle );
|
shape->SetArcAngleAndEnd( sweep_angle, true );
|
||||||
|
}
|
||||||
|
|
||||||
shape->SetStroke( STROKE_PARAMS( parseInt( parameters[8], conv_unit ),
|
shape->SetStroke( STROKE_PARAMS( parseInt( parameters[8], conv_unit ),
|
||||||
PLOT_DASH_TYPE::SOLID ) );
|
PLOT_DASH_TYPE::SOLID ) );
|
||||||
|
|
Loading…
Reference in New Issue