Loading pcbnew/specctra.cpp +50 −23 Original line number Original line Diff line number Diff line Loading @@ -774,7 +774,7 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) { { DSN_T tok = nextTok(); DSN_T tok = nextTok(); if( tok==T_SYMBOL || tok==T_STRING ) if( isSymbol(tok) ) { { growth->name = lexer->CurText(); growth->name = lexer->CurText(); tok = nextTok(); tok = nextTok(); Loading @@ -789,7 +789,6 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) expecting( T_LEFT ); expecting( T_LEFT ); tok = nextTok(); tok = nextTok(); switch( tok ) switch( tok ) { { case T_sequence_number: case T_sequence_number: Loading @@ -814,24 +813,32 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) break; break; case T_rect: case T_rect: growth->rectangle = new RECTANGLE( growth ); if( growth->shape ) doRECTANGLE( growth->rectangle ); unexpected( tok ); growth->shape = new RECTANGLE( growth ); doRECTANGLE( (RECTANGLE*) growth->shape ); break; break; case T_circle: case T_circle: growth->circle = new CIRCLE( growth ); if( growth->shape ) doCIRCLE( growth->circle ); unexpected( tok ); growth->shape = new CIRCLE( growth ); doCIRCLE( (CIRCLE*) growth->shape ); break; break; case T_path: case T_path: case T_polygon: case T_polygon: growth->path = new PATH( growth, tok ); if( growth->shape ) doPATH( growth->path ); unexpected( tok ); growth->shape = new PATH( growth, tok ); doPATH( (PATH*) growth->shape ); break; break; case T_qarc: case T_qarc: growth->qarc = new QARC( growth ); if( growth->shape ) doQARC( growth->qarc ); unexpected( tok ); growth->shape = new QARC( growth ); doQARC( (QARC*) growth->shape ); break; break; case T_window: case T_window: Loading Loading @@ -3700,6 +3707,7 @@ void PARSER::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IOErro if( !via_rotate_first ) if( !via_rotate_first ) out->Print( nestLevel, "(via_rotate_first off)\n" ); out->Print( nestLevel, "(via_rotate_first off)\n" ); if( case_sensitive ) out->Print( nestLevel, "(case_sensitive %s)\n", case_sensitive ? "on" : "off" ); out->Print( nestLevel, "(case_sensitive %s)\n", case_sensitive ? "on" : "off" ); } } Loading Loading @@ -3736,19 +3744,26 @@ void PLACE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) out->Print( 0, " %.6g", rotation ); out->Print( 0, " %.6g", rotation ); } } out->Print( 0, " " ); const char* space = " "; // one space, as c string. if( mirror != T_NONE ) if( mirror != T_NONE ) out->Print( 0, "(mirror %s)", LEXER::GetTokenText( mirror ) ); { out->Print( 0, "%s(mirror %s)", space, LEXER::GetTokenText( mirror ) ); space = ""; } if( status != T_NONE ) if( status != T_NONE ) out->Print( 0, "(status %s)", LEXER::GetTokenText( status ) ); { out->Print( 0, "%s(status %s)", space, LEXER::GetTokenText( status ) ); space = ""; } if( logical_part.size() ) if( logical_part.size() ) { { quote = out->GetQuoteChar( logical_part.c_str() ); quote = out->GetQuoteChar( logical_part.c_str() ); out->Print( 0, "(logical_part %s%s%s)", out->Print( 0, "%s(logical_part %s%s%s)", space, quote, logical_part.c_str(), quote ); quote, logical_part.c_str(), quote ); space = ""; } } if( useMultiLine ) if( useMultiLine ) Loading Loading @@ -3789,13 +3804,16 @@ void PLACE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) else else { { if( lock_type != T_NONE ) if( lock_type != T_NONE ) out->Print( 0, "(lock_type %s)", { out->Print( 0, "%s(lock_type %s)", space, LEXER::GetTokenText(lock_type) ); LEXER::GetTokenText(lock_type) ); space = ""; } if( part_number.size() ) if( part_number.size() ) { { const char* quote = out->GetQuoteChar( part_number.c_str() ); const char* quote = out->GetQuoteChar( part_number.c_str() ); out->Print( 0, "(PN %s%s%s)", out->Print( 0, "%s(PN %s%s%s)", space, quote, part_number.c_str(), quote ); quote, part_number.c_str(), quote ); } } } } Loading Loading @@ -3824,6 +3842,11 @@ int main( int argc, char** argv ) SPECCTRA_DB db; SPECCTRA_DB db; bool failed = false; bool failed = false; if( argc == 2 ) { filename = CONV_FROM_UTF8( argv[1] ); } try try { { db.LoadPCB( filename ); db.LoadPCB( filename ); Loading @@ -3831,18 +3854,22 @@ int main( int argc, char** argv ) } } catch( IOError ioe ) catch( IOError ioe ) { { printf( "%s\n", CONV_TO_UTF8(ioe.errorText) ); fprintf( stderr, "%s\n", CONV_TO_UTF8(ioe.errorText) ); failed = true; failed = true; } } if( !failed ) if( !failed ) printf("loaded OK\n"); fprintf( stderr, "loaded OK\n" ); // export what we read in, making this test program basically a beautifier // export what we read in, making this test program basically a beautifier // db.ExportSESSION( wxT("/tmp/export.ses") ); // db.ExportSESSION( wxT("/tmp/export.ses") ); db.ExportPCB( wxT("/tmp/export.dsn") ); // db.ExportPCB( wxT("/tmp/export.dsn") ); DSN::PCB* pcb = db.GetPCB(); // hose the beautified DSN file to stdout. db.SetFILE( stdout ); pcb->Format( &db, 0 ); } } #endif #endif Loading pcbnew/specctra.h +45 −31 Original line number Original line Diff line number Diff line Loading @@ -939,12 +939,14 @@ protected: WINDOWS windows; WINDOWS windows; //----- only one of these is used, like a union ----- /* <shape_descriptor >::= PATH* path; ///< used for both path and polygon [<rectangle_descriptor> | RECTANGLE* rectangle; <circle_descriptor> | CIRCLE* circle; <polygon_descriptor> | QARC* qarc; <path_descriptor> | //--------------------------------------------------- <qarc_descriptor> ] */ ELEM* shape; public: public: Loading @@ -958,11 +960,7 @@ public: { { rules = 0; rules = 0; place_rules = 0; place_rules = 0; shape = 0; path = 0; rectangle = 0; circle = 0; qarc = 0; sequence_number = -1; sequence_number = -1; } } Loading @@ -971,11 +969,22 @@ public: { { delete rules; delete rules; delete place_rules; delete place_rules; delete shape; } delete path; void SetShape( ELEM* aShape ) delete rectangle; { delete circle; delete shape; delete qarc; shape = aShape; if( aShape ) { wxASSERT(aShape->Type()==T_rect || aShape->Type()==T_circle || aShape->Type()==T_qarc || aShape->Type()==T_path || aShape->Type()==T_polygon); aShape->SetParent( this ); } } } void Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) void Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) Loading @@ -991,18 +1000,8 @@ public: if( sequence_number != -1 ) if( sequence_number != -1 ) out->Print( nestLevel+1, "(sequence_number %d)\n", sequence_number ); out->Print( nestLevel+1, "(sequence_number %d)\n", sequence_number ); // these are mutually exclusive if( shape ) if( rectangle ) shape->Format( out, nestLevel+1 ); rectangle->Format( out, nestLevel+1 ); else if( path ) path->Format( out, nestLevel+1 ); else if( circle ) circle->Format( out, nestLevel+1 ); else if( qarc ) qarc->Format( out, nestLevel+1 ); if( rules ) if( rules ) rules->Format( out, nestLevel+1 ); rules->Format( out, nestLevel+1 ); Loading Loading @@ -2296,8 +2295,18 @@ public: // the quotes unconditional on this one. // the quotes unconditional on this one. const char* newline = nestLevel ? "\n" : ""; const char* newline = nestLevel ? "\n" : ""; #if 0 return out->Print( nestLevel, "\"%s\"-\"%s\"%s", return out->Print( nestLevel, "\"%s\"-\"%s\"%s", component_id.c_str(), pin_id.c_str(), newline ); component_id.c_str(), pin_id.c_str(), newline ); #else const char* cquote = out->GetQuoteChar( component_id.c_str() ); const char* pquote = out->GetQuoteChar( pin_id.c_str() ); return out->Print( nestLevel, "%s%s%s-%s%s%s%s", cquote, component_id.c_str(), cquote, pquote, pin_id.c_str(), pquote, newline ); #endif } } }; }; typedef std::vector<PIN_REF> PIN_REFS; typedef std::vector<PIN_REF> PIN_REFS; Loading Loading @@ -3588,7 +3597,6 @@ public: */ */ static PCB* MakePCB(); static PCB* MakePCB(); /** /** * Function SetPCB * Function SetPCB * deletes any existing PCB and replaces it with the given one. * deletes any existing PCB and replaces it with the given one. Loading @@ -3598,6 +3606,12 @@ public: delete pcb; delete pcb; pcb = aPcb; pcb = aPcb; } } PCB* GetPCB() { return pcb; } void SetFILE( FILE* aFile ) { fp = aFile; } /** /** * Function SetSESSION * Function SetSESSION Loading pcbnew/specctra_export.cpp +29 −10 Original line number Original line Diff line number Diff line Loading @@ -269,11 +269,8 @@ IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule ) KEEPOUT* keepout = new KEEPOUT(image, T_keepout); KEEPOUT* keepout = new KEEPOUT(image, T_keepout); image->keepouts.push_back( keepout ); image->keepouts.push_back( keepout ); WINDOW* window = new WINDOW(keepout); CIRCLE* circle = new CIRCLE(keepout); keepout->windows.push_back( window ); keepout->SetShape( circle ); CIRCLE* circle = new CIRCLE(window); window->SetShape( circle ); circle->SetDiameter( scale(pad->m_Drill.x) ); circle->SetDiameter( scale(pad->m_Drill.x) ); circle->SetVertex( POINT( mapPt( pad->m_Pos0 ) ) ); circle->SetVertex( POINT( mapPt( pad->m_Pos0 ) ) ); Loading Loading @@ -801,7 +798,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) COPPER_PLANE* plane = new COPPER_PLANE( pcb->structure ); COPPER_PLANE* plane = new COPPER_PLANE( pcb->structure ); PATH* polygon = new PATH( plane, T_polygon ); PATH* polygon = new PATH( plane, T_polygon ); plane->path = polygon; plane->SetShape( polygon ); plane->name = CONV_TO_UTF8( item->m_Netname ); plane->name = CONV_TO_UTF8( item->m_Netname ); polygon->layer_id = CONV_TO_UTF8( layerName ); polygon->layer_id = CONV_TO_UTF8( layerName ); Loading Loading @@ -869,7 +866,10 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) place->SetRotation( module->m_Orient/10.0 ); place->SetRotation( module->m_Orient/10.0 ); place->SetVertex( mapPt( module->m_Pos ) ); place->SetVertex( mapPt( module->m_Pos ) ); place->component_id = CONV_TO_UTF8( module->GetReference() ); place->component_id = CONV_TO_UTF8( module->GetReference() ); /* not supported by freerouting.com yet. place->part_number = CONV_TO_UTF8( module->GetValue() ); place->part_number = CONV_TO_UTF8( module->GetValue() ); */ // module is flipped from bottom side, set side to T_back // module is flipped from bottom side, set side to T_back if( module->flag ) if( module->flag ) Loading Loading @@ -908,6 +908,9 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) { { EQUIPOT* kinet = (EQUIPOT*) items[i]; EQUIPOT* kinet = (EQUIPOT*) items[i]; if( kinet->GetNet() == 0 ) continue; NET* net = new NET( network ); NET* net = new NET( network ); network->nets.push_back( net ); network->nets.push_back( net ); Loading @@ -933,6 +936,22 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) } } //-----<create the wires from tracks>----------------------------------- { // export all of them for now, later we'll decide what controls we need // on this. static KICAD_T scanTRACKs[] = { TYPETRACK, TYPEVIA, EOT }; items.Collect( aBoard, scanTRACKs ); for( int i=0; i<items.GetCount(); ++i ) { TRACK* torv = (TRACK*) items[i]; // torv == track or via } } //-----<restore MODULEs>------------------------------------------------ //-----<restore MODULEs>------------------------------------------------ // DSN Images (=Kicad MODULES and pads) must be presented from the // DSN Images (=Kicad MODULES and pads) must be presented from the Loading Loading
pcbnew/specctra.cpp +50 −23 Original line number Original line Diff line number Diff line Loading @@ -774,7 +774,7 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) { { DSN_T tok = nextTok(); DSN_T tok = nextTok(); if( tok==T_SYMBOL || tok==T_STRING ) if( isSymbol(tok) ) { { growth->name = lexer->CurText(); growth->name = lexer->CurText(); tok = nextTok(); tok = nextTok(); Loading @@ -789,7 +789,6 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) expecting( T_LEFT ); expecting( T_LEFT ); tok = nextTok(); tok = nextTok(); switch( tok ) switch( tok ) { { case T_sequence_number: case T_sequence_number: Loading @@ -814,24 +813,32 @@ void SPECCTRA_DB::doKEEPOUT( KEEPOUT* growth ) throw( IOError ) break; break; case T_rect: case T_rect: growth->rectangle = new RECTANGLE( growth ); if( growth->shape ) doRECTANGLE( growth->rectangle ); unexpected( tok ); growth->shape = new RECTANGLE( growth ); doRECTANGLE( (RECTANGLE*) growth->shape ); break; break; case T_circle: case T_circle: growth->circle = new CIRCLE( growth ); if( growth->shape ) doCIRCLE( growth->circle ); unexpected( tok ); growth->shape = new CIRCLE( growth ); doCIRCLE( (CIRCLE*) growth->shape ); break; break; case T_path: case T_path: case T_polygon: case T_polygon: growth->path = new PATH( growth, tok ); if( growth->shape ) doPATH( growth->path ); unexpected( tok ); growth->shape = new PATH( growth, tok ); doPATH( (PATH*) growth->shape ); break; break; case T_qarc: case T_qarc: growth->qarc = new QARC( growth ); if( growth->shape ) doQARC( growth->qarc ); unexpected( tok ); growth->shape = new QARC( growth ); doQARC( (QARC*) growth->shape ); break; break; case T_window: case T_window: Loading Loading @@ -3700,6 +3707,7 @@ void PARSER::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IOErro if( !via_rotate_first ) if( !via_rotate_first ) out->Print( nestLevel, "(via_rotate_first off)\n" ); out->Print( nestLevel, "(via_rotate_first off)\n" ); if( case_sensitive ) out->Print( nestLevel, "(case_sensitive %s)\n", case_sensitive ? "on" : "off" ); out->Print( nestLevel, "(case_sensitive %s)\n", case_sensitive ? "on" : "off" ); } } Loading Loading @@ -3736,19 +3744,26 @@ void PLACE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) out->Print( 0, " %.6g", rotation ); out->Print( 0, " %.6g", rotation ); } } out->Print( 0, " " ); const char* space = " "; // one space, as c string. if( mirror != T_NONE ) if( mirror != T_NONE ) out->Print( 0, "(mirror %s)", LEXER::GetTokenText( mirror ) ); { out->Print( 0, "%s(mirror %s)", space, LEXER::GetTokenText( mirror ) ); space = ""; } if( status != T_NONE ) if( status != T_NONE ) out->Print( 0, "(status %s)", LEXER::GetTokenText( status ) ); { out->Print( 0, "%s(status %s)", space, LEXER::GetTokenText( status ) ); space = ""; } if( logical_part.size() ) if( logical_part.size() ) { { quote = out->GetQuoteChar( logical_part.c_str() ); quote = out->GetQuoteChar( logical_part.c_str() ); out->Print( 0, "(logical_part %s%s%s)", out->Print( 0, "%s(logical_part %s%s%s)", space, quote, logical_part.c_str(), quote ); quote, logical_part.c_str(), quote ); space = ""; } } if( useMultiLine ) if( useMultiLine ) Loading Loading @@ -3789,13 +3804,16 @@ void PLACE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) else else { { if( lock_type != T_NONE ) if( lock_type != T_NONE ) out->Print( 0, "(lock_type %s)", { out->Print( 0, "%s(lock_type %s)", space, LEXER::GetTokenText(lock_type) ); LEXER::GetTokenText(lock_type) ); space = ""; } if( part_number.size() ) if( part_number.size() ) { { const char* quote = out->GetQuoteChar( part_number.c_str() ); const char* quote = out->GetQuoteChar( part_number.c_str() ); out->Print( 0, "(PN %s%s%s)", out->Print( 0, "%s(PN %s%s%s)", space, quote, part_number.c_str(), quote ); quote, part_number.c_str(), quote ); } } } } Loading Loading @@ -3824,6 +3842,11 @@ int main( int argc, char** argv ) SPECCTRA_DB db; SPECCTRA_DB db; bool failed = false; bool failed = false; if( argc == 2 ) { filename = CONV_FROM_UTF8( argv[1] ); } try try { { db.LoadPCB( filename ); db.LoadPCB( filename ); Loading @@ -3831,18 +3854,22 @@ int main( int argc, char** argv ) } } catch( IOError ioe ) catch( IOError ioe ) { { printf( "%s\n", CONV_TO_UTF8(ioe.errorText) ); fprintf( stderr, "%s\n", CONV_TO_UTF8(ioe.errorText) ); failed = true; failed = true; } } if( !failed ) if( !failed ) printf("loaded OK\n"); fprintf( stderr, "loaded OK\n" ); // export what we read in, making this test program basically a beautifier // export what we read in, making this test program basically a beautifier // db.ExportSESSION( wxT("/tmp/export.ses") ); // db.ExportSESSION( wxT("/tmp/export.ses") ); db.ExportPCB( wxT("/tmp/export.dsn") ); // db.ExportPCB( wxT("/tmp/export.dsn") ); DSN::PCB* pcb = db.GetPCB(); // hose the beautified DSN file to stdout. db.SetFILE( stdout ); pcb->Format( &db, 0 ); } } #endif #endif Loading
pcbnew/specctra.h +45 −31 Original line number Original line Diff line number Diff line Loading @@ -939,12 +939,14 @@ protected: WINDOWS windows; WINDOWS windows; //----- only one of these is used, like a union ----- /* <shape_descriptor >::= PATH* path; ///< used for both path and polygon [<rectangle_descriptor> | RECTANGLE* rectangle; <circle_descriptor> | CIRCLE* circle; <polygon_descriptor> | QARC* qarc; <path_descriptor> | //--------------------------------------------------- <qarc_descriptor> ] */ ELEM* shape; public: public: Loading @@ -958,11 +960,7 @@ public: { { rules = 0; rules = 0; place_rules = 0; place_rules = 0; shape = 0; path = 0; rectangle = 0; circle = 0; qarc = 0; sequence_number = -1; sequence_number = -1; } } Loading @@ -971,11 +969,22 @@ public: { { delete rules; delete rules; delete place_rules; delete place_rules; delete shape; } delete path; void SetShape( ELEM* aShape ) delete rectangle; { delete circle; delete shape; delete qarc; shape = aShape; if( aShape ) { wxASSERT(aShape->Type()==T_rect || aShape->Type()==T_circle || aShape->Type()==T_qarc || aShape->Type()==T_path || aShape->Type()==T_polygon); aShape->SetParent( this ); } } } void Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) void Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IOError ) Loading @@ -991,18 +1000,8 @@ public: if( sequence_number != -1 ) if( sequence_number != -1 ) out->Print( nestLevel+1, "(sequence_number %d)\n", sequence_number ); out->Print( nestLevel+1, "(sequence_number %d)\n", sequence_number ); // these are mutually exclusive if( shape ) if( rectangle ) shape->Format( out, nestLevel+1 ); rectangle->Format( out, nestLevel+1 ); else if( path ) path->Format( out, nestLevel+1 ); else if( circle ) circle->Format( out, nestLevel+1 ); else if( qarc ) qarc->Format( out, nestLevel+1 ); if( rules ) if( rules ) rules->Format( out, nestLevel+1 ); rules->Format( out, nestLevel+1 ); Loading Loading @@ -2296,8 +2295,18 @@ public: // the quotes unconditional on this one. // the quotes unconditional on this one. const char* newline = nestLevel ? "\n" : ""; const char* newline = nestLevel ? "\n" : ""; #if 0 return out->Print( nestLevel, "\"%s\"-\"%s\"%s", return out->Print( nestLevel, "\"%s\"-\"%s\"%s", component_id.c_str(), pin_id.c_str(), newline ); component_id.c_str(), pin_id.c_str(), newline ); #else const char* cquote = out->GetQuoteChar( component_id.c_str() ); const char* pquote = out->GetQuoteChar( pin_id.c_str() ); return out->Print( nestLevel, "%s%s%s-%s%s%s%s", cquote, component_id.c_str(), cquote, pquote, pin_id.c_str(), pquote, newline ); #endif } } }; }; typedef std::vector<PIN_REF> PIN_REFS; typedef std::vector<PIN_REF> PIN_REFS; Loading Loading @@ -3588,7 +3597,6 @@ public: */ */ static PCB* MakePCB(); static PCB* MakePCB(); /** /** * Function SetPCB * Function SetPCB * deletes any existing PCB and replaces it with the given one. * deletes any existing PCB and replaces it with the given one. Loading @@ -3598,6 +3606,12 @@ public: delete pcb; delete pcb; pcb = aPcb; pcb = aPcb; } } PCB* GetPCB() { return pcb; } void SetFILE( FILE* aFile ) { fp = aFile; } /** /** * Function SetSESSION * Function SetSESSION Loading
pcbnew/specctra_export.cpp +29 −10 Original line number Original line Diff line number Diff line Loading @@ -269,11 +269,8 @@ IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule ) KEEPOUT* keepout = new KEEPOUT(image, T_keepout); KEEPOUT* keepout = new KEEPOUT(image, T_keepout); image->keepouts.push_back( keepout ); image->keepouts.push_back( keepout ); WINDOW* window = new WINDOW(keepout); CIRCLE* circle = new CIRCLE(keepout); keepout->windows.push_back( window ); keepout->SetShape( circle ); CIRCLE* circle = new CIRCLE(window); window->SetShape( circle ); circle->SetDiameter( scale(pad->m_Drill.x) ); circle->SetDiameter( scale(pad->m_Drill.x) ); circle->SetVertex( POINT( mapPt( pad->m_Pos0 ) ) ); circle->SetVertex( POINT( mapPt( pad->m_Pos0 ) ) ); Loading Loading @@ -801,7 +798,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) COPPER_PLANE* plane = new COPPER_PLANE( pcb->structure ); COPPER_PLANE* plane = new COPPER_PLANE( pcb->structure ); PATH* polygon = new PATH( plane, T_polygon ); PATH* polygon = new PATH( plane, T_polygon ); plane->path = polygon; plane->SetShape( polygon ); plane->name = CONV_TO_UTF8( item->m_Netname ); plane->name = CONV_TO_UTF8( item->m_Netname ); polygon->layer_id = CONV_TO_UTF8( layerName ); polygon->layer_id = CONV_TO_UTF8( layerName ); Loading Loading @@ -869,7 +866,10 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) place->SetRotation( module->m_Orient/10.0 ); place->SetRotation( module->m_Orient/10.0 ); place->SetVertex( mapPt( module->m_Pos ) ); place->SetVertex( mapPt( module->m_Pos ) ); place->component_id = CONV_TO_UTF8( module->GetReference() ); place->component_id = CONV_TO_UTF8( module->GetReference() ); /* not supported by freerouting.com yet. place->part_number = CONV_TO_UTF8( module->GetValue() ); place->part_number = CONV_TO_UTF8( module->GetValue() ); */ // module is flipped from bottom side, set side to T_back // module is flipped from bottom side, set side to T_back if( module->flag ) if( module->flag ) Loading Loading @@ -908,6 +908,9 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) { { EQUIPOT* kinet = (EQUIPOT*) items[i]; EQUIPOT* kinet = (EQUIPOT*) items[i]; if( kinet->GetNet() == 0 ) continue; NET* net = new NET( network ); NET* net = new NET( network ); network->nets.push_back( net ); network->nets.push_back( net ); Loading @@ -933,6 +936,22 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard ) } } //-----<create the wires from tracks>----------------------------------- { // export all of them for now, later we'll decide what controls we need // on this. static KICAD_T scanTRACKs[] = { TYPETRACK, TYPEVIA, EOT }; items.Collect( aBoard, scanTRACKs ); for( int i=0; i<items.GetCount(); ++i ) { TRACK* torv = (TRACK*) items[i]; // torv == track or via } } //-----<restore MODULEs>------------------------------------------------ //-----<restore MODULEs>------------------------------------------------ // DSN Images (=Kicad MODULES and pads) must be presented from the // DSN Images (=Kicad MODULES and pads) must be presented from the Loading