specctra_export to handle Edge Cuts graphics in modules
This commit is contained in:
parent
a9fbce5c72
commit
9191f28aeb
|
@ -767,36 +767,29 @@ PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
|
||||||
|
|
||||||
void SPECCTRA_DB::fillBOUNDARY( BOARD* aBoard, BOUNDARY* boundary ) throw( IO_ERROR )
|
void SPECCTRA_DB::fillBOUNDARY( BOARD* aBoard, BOUNDARY* boundary ) throw( IO_ERROR )
|
||||||
{
|
{
|
||||||
TYPE_COLLECTOR items;
|
TYPE_COLLECTOR items;
|
||||||
|
|
||||||
// get all the DRAWSEGMENTS into 'items', then look for layer == EDGE_N,
|
// get all the DRAWSEGMENTS into 'items', then look for layer == EDGE_N,
|
||||||
// and those segments comprise the board's perimeter.
|
// and those segments comprise the board's perimeter.
|
||||||
|
|
||||||
static const KICAD_T scanDRAWSEGMENTS[] = { PCB_LINE_T, EOT };
|
static const KICAD_T scan_graphics[] = { PCB_LINE_T, PCB_MODULE_EDGE_T, EOT };
|
||||||
|
|
||||||
items.Collect( aBoard, scanDRAWSEGMENTS );
|
items.Collect( aBoard, scan_graphics );
|
||||||
|
|
||||||
bool haveEdges = false;
|
|
||||||
|
|
||||||
for( int i=0; i<items.GetCount(); )
|
for( int i=0; i<items.GetCount(); )
|
||||||
{
|
{
|
||||||
DRAWSEGMENT* item = (DRAWSEGMENT*) items[i];
|
if( items[i]->GetLayer() != EDGE_N )
|
||||||
|
|
||||||
wxASSERT( item->Type() == PCB_LINE_T );
|
|
||||||
|
|
||||||
if( item->GetLayer() != EDGE_N )
|
|
||||||
{
|
{
|
||||||
items.Remove( i );
|
items.Remove( i );
|
||||||
}
|
}
|
||||||
else
|
else // remove graphics not on EDGE_N layer
|
||||||
{
|
{
|
||||||
haveEdges = true;
|
|
||||||
++i;
|
++i;
|
||||||
D( item->Show( 0, std::cout );)
|
D( item->Show( 0, std::cout );)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( haveEdges )
|
if( items.GetCount() )
|
||||||
{
|
{
|
||||||
PATH* path = new PATH( boundary );
|
PATH* path = new PATH( boundary );
|
||||||
boundary->paths.push_back( path );
|
boundary->paths.push_back( path );
|
||||||
|
|
Loading…
Reference in New Issue