@ -1225,37 +1225,42 @@ void EAGLE_PLUGIN::packageWire( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EWIRE         w (  aTree  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    PCB_LAYER_ID  layer  =  kicad_layer (  w . layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsNon CopperLayer (  layer  )  )      // only valid non-copper wires, skip copper package wire s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsCopperLayer (  layer  )  )   // skip copper "package.circle" s
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxPoint  start (  kicad_x (  w . x1  ) ,  kicad_y (  w . y1  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxPoint  end (    kicad_x (  w . x2  ) ,  kicad_y (  w . y2  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        int      width  =  kicad (  w . width  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // FIXME: the cap attribute is ignored because kicad can't create lines
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        //        with flat ends.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        EDGE_MODULE *  dwg ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        if (  ! w . curve  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg  =  new  EDGE_MODULE (  aModule ,  S_SEGMENT  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxLogMessage (  wxString : : Format (  " Line on copper layer in package %s ( %f, %f ) ( %f, %f ) \n  Moving to drawings layer " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( ) ,   w . x1  ,   w . y1  ,   w . x2  ,   w . y2   )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Dwgs_User ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg - > SetStart0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg - > SetEnd0 (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        else  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg  =  new  EDGE_MODULE (  aModule ,  S_ARC  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            wxPoint  center  =  ConvertArcCenter (  start ,  end ,  * w . curve  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxPoint  start (  kicad_x (  w . x1  ) ,  kicad_y (  w . y1  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxPoint  end (    kicad_x (  w . x2  ) ,  kicad_y (  w . y2  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    int      width  =  kicad (  w . width  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg - > SetStart0 (  center  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg - > SetEnd0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            dwg - > SetAngle (  * w . curve  *  - 10.0  ) ;  // KiCad rotates the other way
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    // FIXME: the cap attribute is ignored because kicad can't create lines
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    //        with flat ends.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EDGE_MODULE *  dwg ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  ! w . curve  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg  =  new  EDGE_MODULE (  aModule ,  S_SEGMENT  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetWidth (  width  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetStart0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetEnd0 (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    else  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg  =  new  EDGE_MODULE (  aModule ,  S_ARC  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxPoint  center  =  ConvertArcCenter (  start ,  end ,  * w . curve  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        aModule - > GraphicalItemsList ( ) . PushBack (  dwg  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetStart0 (  center  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetEnd0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetAngle (  * w . curve  *  - 10.0  ) ;  // KiCad rotates the other way
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetWidth (  width  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetDrawCoord ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    aModule - > GraphicalItemsList ( ) . PushBack (  dwg  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -1352,6 +1357,12 @@ void EAGLE_PLUGIN::packageText( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    ETEXT         t (  aTree  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    PCB_LAYER_ID  layer  =  kicad_layer (  t . layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsCopperLayer (  layer  )  )   // skip copper "package.circle"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxLogMessage (  wxString : : Format (  " Unsupported text on copper layer in package %s  \n  Moving to drawings layer. " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Dwgs_User ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  layer  = =  UNDEFINED_LAYER  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Cmts_User ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -1458,31 +1469,40 @@ void EAGLE_PLUGIN::packageRectangle( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    ERECT         r (  aTree  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    PCB_LAYER_ID  layer  =  kicad_layer (  r . layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsNonCopperLayer (  layer  )  )   // skip copper "package.rectangle"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    // Rectangles are not supported yet in footprints as they are not editable.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxLogMessage (  wxString : : Format (  " Unsupported rectangle in package %s ( %f, %f ) ( %f, %f ) " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( ) ,   r . x1  ,   r . y1  ,   r . x2  ,   r . y2   )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    return ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsCopperLayer (  layer  )  )   // skip copper "package.circle"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        EDGE_MODULE *  dwg  =  new  EDGE_MODULE (  aModule ,  S_POLYGON  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        aModule - > GraphicalItemsList ( ) . PushBack (  dwg  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxLogMessage (  wxString : : Format (  " Unsupported rectangle on copper layer in package %s  \n  Moving to drawings layer. " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Dwgs_User ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetWidth (  0   ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EDGE_MODULE *  dwg  =  new  EDGE_MODULE (  aModule ,  S_POLYGON   ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    aModule - > GraphicalItemsList ( ) . PushBack (  dwg   ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetTimeStamp (  EagleTimeStamp (  aTree  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetWidth (  0  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < wxPoint >  pts  ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetTimeStamp (  EagleTimeStamp (  aTree  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxPoint  start (  wxPoint (  kicad_x (  r . x1  ) ,  kicad_y (  r . y1  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxPoint  end (    wxPoint (  kicad_x (  r . x1  ) ,  kicad_y (  r . y2  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    std : : vector < wxPoint >  pts ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        pts . push_back (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        pts . push_back (  wxPoint (  kicad_x (  r . x2  ) ,  kicad_y (  r . y1  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        pts . push_back (  wxPoint (  kicad_x (  r . x2  ) ,  kicad_y (  r . y2  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        pts . push_back (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxPoint  start (  wxPoint (  kicad_x (  r . x1  ) ,  kicad_y (  r . y1  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxPoint  end (    wxPoint (  kicad_x (  r . x1  ) ,  kicad_y (  r . y2  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetPolyPoints (  pts  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    pts . push_back (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    pts . push_back (  wxPoint (  kicad_x (  r . x2  ) ,  kicad_y (  r . y1  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    pts . push_back (  wxPoint (  kicad_x (  r . x2  ) ,  kicad_y (  r . y2  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    pts . push_back (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetPolyPoints (  pts  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetStart0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetEnd0 (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetStart0 (  start  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetEnd0 (  end  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -1491,54 +1511,46 @@ void EAGLE_PLUGIN::packagePolygon( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EPOLYGON     p (  aTree  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    PCB_LAYER_ID     layer  =  kicad_layer (  p . layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsNon CopperLayer (  layer  )  )   // skip copper "package.re ctang le"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsCopperLayer (  layer  )  )   // skip copper "package.ci rcle"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        EDGE_MODULE *  dwg  =  new  EDGE_MODULE (  aModule ,  S_POLYGON  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        aModule - > GraphicalItemsList ( ) . PushBack (  dwg  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxLogMessage (  wxString : : Format (  " Unsupported polygon on copper layer in package %s  \n  Moving to drawings layer. " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Dwgs_User ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetWidth (  0  ) ;      // it's filled, no need for boundary width
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EDGE_MODULE *  dwg  =  new  EDGE_MODULE (  aModule ,  S_POLYGON  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    aModule - > GraphicalItemsList ( ) . PushBack (  dwg  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        /*
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        switch (  layer  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        case  Eco1_User :     layer  =  F_SilkS ;  break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        case  Eco2_User :     layer  =  B_SilkS ;   break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetWidth (  0  ) ;      // it's filled, no need for boundary width
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // all MODULE templates (created from eagle packages) are on front layer
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // until cloned.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        case  Cmts_User :  layer  =  F_SilkS ;  break ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetTimeStamp (  EagleTimeStamp (  aTree  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetLayer (  layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    std : : vector < wxPoint >  pts ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    // TODO: I think there's no way to know a priori the number of children in wxXmlNode :()
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    // pts.reserve( aTree.size() );
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetTimeStamp (  EagleTimeStamp (  aTree  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    // Get the first vertex and iterate
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    wxXmlNode *  vertex  =  aTree - > GetChildren ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        std : : vector < wxPoint >  pts ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // TODO: I think there's no way to know a priori the number of children in wxXmlNode :()
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // pts.reserve( aTree.size() );
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    while (  vertex  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        if (  vertex - > GetName ( )  ! =  " vertex "  )      // skip <xmlattr> node
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            continue ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        // Get the first vertex and iterate
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxXmlNode *  vertex  =  aTree - > GetChildren ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        EVERTEX  v (  vertex  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        while (  vertex  )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if (  vertex - > GetName ( )  ! =  " vertex "  )      // skip <xmlattr> node
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                continue ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        pts . push_back (  wxPoint (  kicad_x (  v . x  ) ,  kicad_y (  v . y  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            EVERTEX  v (  vertex  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            pts . push_back (  wxPoint (  kicad_x (  v . x  ) ,  kicad_y (  v . y  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        vertex  =  vertex - > GetNext ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            vertex  =  vertex - > GetNext ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetPolyPoints (  pts  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetPolyPoints (  pts  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetStart0 (  * pts . begin ( )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetEnd0 (  pts . back ( )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    dwg - > SetDrawCoord ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetStart0 (  * pts . begin ( )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        dwg - > SetEnd0 (  pts . back ( )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -1546,6 +1558,13 @@ void EAGLE_PLUGIN::packageCircle( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    ECIRCLE          e (  aTree  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    PCB_LAYER_ID     layer  =  kicad_layer (  e . layer  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    if (  IsCopperLayer (  layer  )  )   // skip copper "package.circle"s
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        wxLogMessage (  wxString : : Format (  " Unsupported circle on copper layer in package %s  \n  Moving to drawings layer. " ,  aModule - > GetFPID ( ) . GetLibItemName ( ) . c_str ( )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        layer  =  Dwgs_User ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    EDGE_MODULE *     gr  =  new  EDGE_MODULE (  aModule ,  S_CIRCLE  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    aModule - > GraphicalItemsList ( ) . PushBack (  gr  ) ;  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -1568,6 +1587,9 @@ void EAGLE_PLUGIN::packageCircle( MODULE* aModule, wxXmlNode* aTree ) const 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    gr - > SetStart0 (  wxPoint (  kicad_x (  e . x  ) ,  kicad_y (  e . y  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    gr - > SetEnd0 (  wxPoint (  kicad_x (  e . x  +  e . radius  ) ,  kicad_y (  e . y  )  )  ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					    gr - > SetDrawCoord ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}