CADSTAR PCB: Clear arcs from polys before boolean ops (e.g. zone fills)

This commit is contained in:
Roberto Fernandez Bautista 2021-10-08 18:09:06 +01:00
parent 288a94f5aa
commit 16b61e47cd
1 changed files with 5 additions and 1 deletions

View File

@ -2001,6 +2001,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers()
ERROR_LOC::ERROR_INSIDE ); ERROR_LOC::ERROR_INSIDE );
} }
poly.ClearArcs();
rawPolys.BooleanAdd( poly, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE ); rawPolys.BooleanAdd( poly, SHAPE_POLY_SET::PM_STRICTLY_SIMPLE );
} }
@ -2008,6 +2009,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers()
else else
{ {
rawPolys = getPolySetFromCadstarShape( csCopper.Shape, -1 ); rawPolys = getPolySetFromCadstarShape( csCopper.Shape, -1 );
rawPolys.ClearArcs();
rawPolys.Inflate( copperWidth / 2, 32 ); rawPolys.Inflate( copperWidth / 2, 32 );
} }
@ -2043,7 +2045,7 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers()
if( csCopper.Shape.Type == SHAPE_TYPE::OPENSHAPE if( csCopper.Shape.Type == SHAPE_TYPE::OPENSHAPE
|| csCopper.Shape.Type == SHAPE_TYPE::OUTLINE ) || csCopper.Shape.Type == SHAPE_TYPE::OUTLINE )
{ {
std::vector<PCB_SHAPE*> outlineShapes = getShapesFromVertices( csCopper.Shape.Vertices ); std::vector<PCB_SHAPE*> outlineShapes = getShapesFromVertices( csCopper.Shape.Vertices );
@ -2909,6 +2911,8 @@ SHAPE_POLY_SET CADSTAR_PCB_ARCHIVE_LOADER::getPolySetFromCadstarShape( const SHA
delete shape; delete shape;
} }
polySet.ClearArcs();
if( aLineThickness > 0 ) if( aLineThickness > 0 )
polySet.Inflate( aLineThickness / 2, 32, polySet.Inflate( aLineThickness / 2, 32,
SHAPE_POLY_SET::CORNER_STRATEGY::ROUND_ALL_CORNERS ); SHAPE_POLY_SET::CORNER_STRATEGY::ROUND_ALL_CORNERS );