From 26674ceec33998824ec362a44cb3bb1ccd4a8d4d Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Wed, 30 Apr 2025 01:51:09 +0300 Subject: [PATCH] GenCAD export: fix arcs winding and layers. --- pcbnew/exporters/export_gencad_writer.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pcbnew/exporters/export_gencad_writer.cpp b/pcbnew/exporters/export_gencad_writer.cpp index ad5f86590c..16687f3a80 100644 --- a/pcbnew/exporters/export_gencad_writer.cpp +++ b/pcbnew/exporters/export_gencad_writer.cpp @@ -976,13 +976,20 @@ void GENCAD_EXPORTER::createRoutesSection() } else if( track->Type() == PCB_ARC_T ) { + if( old_layer != track->GetLayer() ) + { + old_layer = track->GetLayer(); + fprintf( m_file, "LAYER %s\n", + genCADLayerName( cu_count, track->GetLayer() ).c_str() ); + } + VECTOR2I start = track->GetStart(); VECTOR2I end = track->GetEnd(); const PCB_ARC* arc = static_cast( track ); - // GenCAD arcs are always drawn counter-clockwise. - if( !arc->IsCCW() ) + // GenCAD arcs are always drawn counter-clockwise (IsCCW works backwards because Y-axis is up in GenCAD). + if( arc->IsCCW() ) std::swap( start, end ); VECTOR2I center = arc->GetCenter();