more amazing free software
This commit is contained in:
parent
68e942b2f4
commit
57c1927121
|
@ -5,6 +5,14 @@ Started 2007-June-11
|
||||||
Please add newer entries at the top, list the date and your name with
|
Please add newer entries at the top, list the date and your name with
|
||||||
email address.
|
email address.
|
||||||
|
|
||||||
|
2008-Feb-4 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
|
================================================================================
|
||||||
|
+pcbnew
|
||||||
|
specctra_export.cpp now supports blind/buried/microvias. Changed (fixed?) how
|
||||||
|
modules are displayed on back of board. Needs testing with various angles
|
||||||
|
of rotation.
|
||||||
|
|
||||||
|
|
||||||
2008-Feb-3 UPDATE Dick Hollenbeck <dick@softplc.com>
|
2008-Feb-3 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||||
================================================================================
|
================================================================================
|
||||||
+pcbnew
|
+pcbnew
|
||||||
|
|
|
@ -263,7 +263,7 @@ void WinEDA_BasePcbFrame::ProcessItemSelection( wxCommandEvent& event )
|
||||||
BOARD_ITEM* item = (*m_Collector)[itemNdx];
|
BOARD_ITEM* item = (*m_Collector)[itemNdx];
|
||||||
DrawPanel->m_AbortRequest = false;
|
DrawPanel->m_AbortRequest = false;
|
||||||
|
|
||||||
#if defined (DEBUG) && 0
|
#if 0 && defined (DEBUG)
|
||||||
item->Show( 0, std::cout );
|
item->Show( 0, std::cout );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -282,7 +282,7 @@ void WinEDA_BasePcbFrame::SetCurItem( BOARD_ITEM* aItem )
|
||||||
{
|
{
|
||||||
aItem->Display_Infos( this );
|
aItem->Display_Infos( this );
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if 0 && defined(DEBUG)
|
||||||
aItem->Show( 0, std::cout );
|
aItem->Show( 0, std::cout );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -294,7 +294,7 @@ void WinEDA_BasePcbFrame::SetCurItem( BOARD_ITEM* aItem )
|
||||||
//MsgPanel->EraseMsgBox();
|
//MsgPanel->EraseMsgBox();
|
||||||
m_Pcb->Display_Infos( this ); // show the BOARD stuff
|
m_Pcb->Display_Infos( this ); // show the BOARD stuff
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if 0 && defined(DEBUG)
|
||||||
std::cout << "SetCurItem(NULL)\n";
|
std::cout << "SetCurItem(NULL)\n";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -345,154 +345,6 @@ void MODULE::DrawEdgesOnly( WinEDA_DrawPanel* panel, wxDC* DC,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*************************************/
|
|
||||||
int MODULE::WriteDescr( FILE* File )
|
|
||||||
/*************************************/
|
|
||||||
|
|
||||||
/* Sauvegarde de la description d'un MODULE
|
|
||||||
*/
|
|
||||||
{
|
|
||||||
char StringStat[20];
|
|
||||||
TEXTE_MODULE* PtText;
|
|
||||||
EDGE_MODULE* PtEdge;
|
|
||||||
D_PAD* ptpad;
|
|
||||||
EDA_BaseStruct* PtStruct;
|
|
||||||
int ii, NbLigne = 0;
|
|
||||||
wxString msg;
|
|
||||||
|
|
||||||
if( GetState( DELETED ) )
|
|
||||||
return NbLigne;
|
|
||||||
|
|
||||||
/* Generation du fichier module: */
|
|
||||||
fprintf( File, "$MODULE %s\n", CONV_TO_UTF8( m_LibRef ) );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
/* Generation des coord et caracteristiques */
|
|
||||||
memset( StringStat, 0, sizeof(StringStat) );
|
|
||||||
if( IsLocked() )
|
|
||||||
StringStat[0] = 'F';
|
|
||||||
else
|
|
||||||
StringStat[0] = '~';
|
|
||||||
|
|
||||||
if( m_ModuleStatus & MODULE_is_PLACED )
|
|
||||||
StringStat[1] = 'P';
|
|
||||||
else
|
|
||||||
StringStat[1] = '~';
|
|
||||||
|
|
||||||
fprintf( File, "Po %d %d %d %d %8.8lX %8.8lX %s\n",
|
|
||||||
m_Pos.x, m_Pos.y,
|
|
||||||
m_Orient, m_Layer, m_LastEdit_Time,
|
|
||||||
m_TimeStamp, StringStat );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
fprintf( File, "Li %s\n", CONV_TO_UTF8( m_LibRef ) );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
if( !m_Doc.IsEmpty() )
|
|
||||||
{
|
|
||||||
fprintf( File, "Cd %s\n", CONV_TO_UTF8( m_Doc ) );
|
|
||||||
NbLigne++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !m_KeyWord.IsEmpty() )
|
|
||||||
{
|
|
||||||
fprintf( File, "Kw %s\n", CONV_TO_UTF8( m_KeyWord ) );
|
|
||||||
NbLigne++;
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf( File, "Sc %8.8lX\n", m_TimeStamp );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
fprintf( File, "Op %X %X 0\n", m_CntRot90, m_CntRot180 );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
/* Attributs du module */
|
|
||||||
if( m_Attributs != MOD_DEFAULT )
|
|
||||||
{
|
|
||||||
fprintf( File, "At " );
|
|
||||||
if( m_Attributs & MOD_CMS )
|
|
||||||
fprintf( File, "SMD " );
|
|
||||||
if( m_Attributs & MOD_VIRTUAL )
|
|
||||||
fprintf( File, "VIRTUAL " );
|
|
||||||
fprintf( File, "\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Texte Reference du module */
|
|
||||||
fprintf( File, "T%d %d %d %d %d %d %d %c %c %d \"%.16s\"\n",
|
|
||||||
m_Reference->m_Type,
|
|
||||||
m_Reference->m_Pos0.x, m_Reference->m_Pos0.y,
|
|
||||||
m_Reference->m_Size.y, m_Reference->m_Size.x,
|
|
||||||
m_Reference->m_Orient + m_Orient, m_Reference->m_Width,
|
|
||||||
m_Reference->m_Miroir ? 'N' : 'M', m_Reference->m_NoShow ? 'I' : 'V',
|
|
||||||
m_Reference->GetLayer(),
|
|
||||||
CONV_TO_UTF8( m_Reference->m_Text ) );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
/* Texte Value du module */
|
|
||||||
fprintf( File, "T%d %d %d %d %d %d %d %c %c %d \"%.16s\"\n",
|
|
||||||
m_Value->m_Type,
|
|
||||||
m_Value->m_Pos0.x, m_Value->m_Pos0.y,
|
|
||||||
m_Value->m_Size.y, m_Value->m_Size.x,
|
|
||||||
m_Value->m_Orient + m_Orient, m_Value->m_Width,
|
|
||||||
m_Value->m_Miroir ? 'N' : 'M', m_Value->m_NoShow ? 'I' : 'V',
|
|
||||||
m_Value->GetLayer(),
|
|
||||||
CONV_TO_UTF8( m_Value->m_Text ) );
|
|
||||||
NbLigne++;
|
|
||||||
|
|
||||||
/* Generation des elements Drawing modules */
|
|
||||||
PtStruct = m_Drawings;
|
|
||||||
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
|
|
||||||
{
|
|
||||||
switch( PtStruct->Type() )
|
|
||||||
{
|
|
||||||
case TYPETEXTEMODULE:
|
|
||||||
PtText = ( (TEXTE_MODULE*) PtStruct );
|
|
||||||
fprintf( File, "T%d %d %d %d %d %d %d %c %c %d \"%s\"\n",
|
|
||||||
PtText->m_Type,
|
|
||||||
PtText->m_Pos0.x, PtText->m_Pos0.y,
|
|
||||||
PtText->m_Size.y, PtText->m_Size.x,
|
|
||||||
PtText->m_Orient + m_Orient, PtText->m_Width,
|
|
||||||
PtText->m_Miroir ? 'N' : 'M',
|
|
||||||
PtText->m_NoShow ? 'I' : 'V',
|
|
||||||
PtText->GetLayer(), CONV_TO_UTF8( PtText->m_Text ) );
|
|
||||||
NbLigne++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case TYPEEDGEMODULE:
|
|
||||||
PtEdge = (EDGE_MODULE*) PtStruct;
|
|
||||||
PtEdge->WriteDescr( File );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
msg.Printf( wxT( "Type (%d) Draw Module inconnu" ),
|
|
||||||
PtStruct->Type() );
|
|
||||||
DisplayError( NULL, msg );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fin switch gestion des Items draw */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Generation de la liste des pads */
|
|
||||||
ptpad = m_Pads;
|
|
||||||
for( ; ptpad != NULL; ptpad = (D_PAD*) ptpad->Pnext )
|
|
||||||
{
|
|
||||||
ii = ptpad->WriteDescr( File );
|
|
||||||
NbLigne += ii;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Generation des informations de trac<61>3D */
|
|
||||||
Write_3D_Descr( File );
|
|
||||||
|
|
||||||
/* Fin de description: */
|
|
||||||
fprintf( File, "$EndMODULE %s\n", CONV_TO_UTF8( m_LibRef ) );
|
|
||||||
NbLigne++;
|
|
||||||
return NbLigne;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
bool MODULE::Save( FILE* aFile ) const
|
bool MODULE::Save( FILE* aFile ) const
|
||||||
{
|
{
|
||||||
char statusTxt[8];
|
char statusTxt[8];
|
||||||
|
|
|
@ -3480,7 +3480,6 @@ PCB* SPECCTRA_DB::MakePCB()
|
||||||
pcb->structure->rules = new RULE( pcb->structure, T_rule );
|
pcb->structure->rules = new RULE( pcb->structure, T_rule );
|
||||||
|
|
||||||
pcb->placement = new PLACEMENT( pcb );
|
pcb->placement = new PLACEMENT( pcb );
|
||||||
//pcb->placement->flip_style = T_mirror_first;
|
|
||||||
|
|
||||||
pcb->library = new LIBRARY( pcb );
|
pcb->library = new LIBRARY( pcb );
|
||||||
|
|
||||||
|
|
|
@ -282,26 +282,6 @@ static int Pad_list_Sort_by_Shapes( const void* refptr, const void* objptr )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
static int Track_list_Sort_by_Netcode( const void* o1, const void* o2 )
|
|
||||||
{
|
|
||||||
TRACK* t1 = *(TRACK**) o1;
|
|
||||||
TRACK* t2 = *(TRACK**) o2;
|
|
||||||
int diff;
|
|
||||||
|
|
||||||
if( (diff = t1->GetNet() - t2->GetNet()) )
|
|
||||||
return diff;
|
|
||||||
if( (diff = t1->m_Width - t2->m_Width) )
|
|
||||||
return diff;
|
|
||||||
if( (diff = t1->GetLayer() - t2->GetLayer()) )
|
|
||||||
return diff;
|
|
||||||
|
|
||||||
return diff; // zero here
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function makePath
|
* Function makePath
|
||||||
* creates a PATH element with a single straight line, a pair of vertices.
|
* creates a PATH element with a single straight line, a pair of vertices.
|
||||||
|
@ -317,21 +297,6 @@ static PATH* makePath( const POINT& aStart, const POINT& aEnd, const std::string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
static QARC* makeArc( const POINT& aStart, const POINT& aEnd,
|
|
||||||
const POINT& aCenter, const std::string& aLayerName )
|
|
||||||
{
|
|
||||||
QARC* qarc = new QARC(0);
|
|
||||||
|
|
||||||
qarc->SetStart( aStart );
|
|
||||||
qarc->SetEnd( aEnd );
|
|
||||||
qarc->SetCenter( aCenter );
|
|
||||||
qarc->SetLayerId( aLayerName.c_str() );
|
|
||||||
return qarc;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule )
|
IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule )
|
||||||
{
|
{
|
||||||
PADSTACKS& padstacks = pcb->library->padstacks;
|
PADSTACKS& padstacks = pcb->library->padstacks;
|
||||||
|
@ -391,18 +356,23 @@ IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule )
|
||||||
|
|
||||||
PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
|
PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
|
||||||
{
|
{
|
||||||
|
CIRCLE* circle;
|
||||||
|
SHAPE* shape;
|
||||||
|
double dsnDiameter;
|
||||||
char name[48];
|
char name[48];
|
||||||
|
|
||||||
PADSTACK* padstack = new PADSTACK( pcb->library );
|
PADSTACK* padstack = new PADSTACK( pcb->library );
|
||||||
|
|
||||||
SHAPE* shape = new SHAPE( padstack );
|
switch( aVia->Shape() )
|
||||||
|
{
|
||||||
|
case VIA_THROUGH:
|
||||||
|
shape = new SHAPE( padstack );
|
||||||
padstack->Append( shape );
|
padstack->Append( shape );
|
||||||
|
|
||||||
// @todo: handle the aVia->Shape() differently for each type of via: MICROVIA, etc.
|
circle = new CIRCLE( shape );
|
||||||
|
|
||||||
CIRCLE* circle = new CIRCLE( shape );
|
|
||||||
shape->SetShape( circle );
|
shape->SetShape( circle );
|
||||||
|
|
||||||
double dsnDiameter = scale( aVia->m_Width );
|
dsnDiameter = scale( aVia->m_Width );
|
||||||
circle->SetDiameter( dsnDiameter );
|
circle->SetDiameter( dsnDiameter );
|
||||||
|
|
||||||
circle->SetLayerId( "signal" );
|
circle->SetLayerId( "signal" );
|
||||||
|
@ -410,6 +380,37 @@ PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
|
||||||
snprintf( name, sizeof(name), "Via_%.6g_mil", dsnDiameter );
|
snprintf( name, sizeof(name), "Via_%.6g_mil", dsnDiameter );
|
||||||
name[ sizeof(name)-1 ] = 0;
|
name[ sizeof(name)-1 ] = 0;
|
||||||
padstack->SetPadstackId( name );
|
padstack->SetPadstackId( name );
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIA_BLIND_BURIED:
|
||||||
|
case VIA_MICROVIA:
|
||||||
|
int topLayer;
|
||||||
|
int botLayer;
|
||||||
|
aVia->ReturnLayerPair( &topLayer, &botLayer );
|
||||||
|
topLayer = kicadLayer2pcb[topLayer];
|
||||||
|
botLayer = kicadLayer2pcb[botLayer];
|
||||||
|
if( topLayer > botLayer )
|
||||||
|
EXCHG( topLayer, botLayer );
|
||||||
|
|
||||||
|
dsnDiameter = scale( aVia->m_Width );
|
||||||
|
|
||||||
|
for( int layer=topLayer; layer<=botLayer; ++layer )
|
||||||
|
{
|
||||||
|
shape = new SHAPE( padstack );
|
||||||
|
padstack->Append( shape );
|
||||||
|
|
||||||
|
circle = new CIRCLE( shape );
|
||||||
|
shape->SetShape( circle );
|
||||||
|
|
||||||
|
circle->SetDiameter( dsnDiameter );
|
||||||
|
circle->SetLayerId( layerIds[layer].c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf( name, sizeof(name), "Via[%d-%d]_%.6g_mil", topLayer, botLayer, dsnDiameter );
|
||||||
|
name[ sizeof(name)-1 ] = 0;
|
||||||
|
padstack->SetPadstackId( name );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return padstack;
|
return padstack;
|
||||||
}
|
}
|
||||||
|
@ -586,70 +587,12 @@ void SPECCTRA_DB::makePADSTACKs( BOARD* aBoard, TYPE_COLLECTOR& aPads )
|
||||||
{
|
{
|
||||||
SHAPE* shape;
|
SHAPE* shape;
|
||||||
PATH* path;
|
PATH* path;
|
||||||
#if 0
|
|
||||||
// each oval is 2 lines and 4 (quarter circle) qarcs
|
|
||||||
QARC* qarc;
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
path = makePath(
|
|
||||||
POINT( -dr, -radius ), // aStart
|
|
||||||
POINT( dr, -radius ), // aEnd
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( path );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( dr, -radius), // aStart
|
|
||||||
POINT( dr, 0.0 ), // aEnd
|
|
||||||
POINT( dr, 0.0 ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( dr, 0.0), // aStart
|
|
||||||
POINT( dr, radius), // aEnd
|
|
||||||
POINT( dr, 0.0 ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
path = makePath(
|
|
||||||
POINT( dr, radius ), // aStart
|
|
||||||
POINT( -dr, radius ), // aEnd
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( path );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( -dr, radius), // aStart
|
|
||||||
POINT( -dr, 0.0), // aEnd
|
|
||||||
POINT( -dr, 0.0 ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( -dr, 0.0), // aStart
|
|
||||||
POINT( -dr, -radius), // aEnd
|
|
||||||
POINT( -dr, 0.0 ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
#else
|
|
||||||
// see http://www.freerouting.net/usren/viewtopic.php?f=3&t=317#p408
|
// see http://www.freerouting.net/usren/viewtopic.php?f=3&t=317#p408
|
||||||
shape = new SHAPE( padstack );
|
shape = new SHAPE( padstack );
|
||||||
padstack->Append( shape );
|
padstack->Append( shape );
|
||||||
path = makePath( POINT(-dr, 0.0), POINT(dr, 0.0), layerName );
|
path = makePath( POINT(-dr, 0.0), POINT(dr, 0.0), layerName );
|
||||||
shape->SetShape( path );
|
shape->SetShape( path );
|
||||||
path->aperture_width = 2.0 * radius;
|
path->aperture_width = 2.0 * radius;
|
||||||
#endif
|
|
||||||
|
|
||||||
++coppers;
|
++coppers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -666,70 +609,12 @@ void SPECCTRA_DB::makePADSTACKs( BOARD* aBoard, TYPE_COLLECTOR& aPads )
|
||||||
{
|
{
|
||||||
SHAPE* shape;
|
SHAPE* shape;
|
||||||
PATH* path;
|
PATH* path;
|
||||||
#if 0
|
|
||||||
// each oval is 2 lines and 2 qarcs
|
|
||||||
QARC* qarc;
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
path = makePath(
|
|
||||||
POINT( -radius, -dr ), // aStart
|
|
||||||
POINT( -radius, dr ), // aEnd
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( path );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( -radius, dr ), // aStart
|
|
||||||
POINT( 0.0, dy ), // aEnd
|
|
||||||
POINT( 0.0, dr ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( 0.0, dy ), // aStart
|
|
||||||
POINT( radius, dr), // aEnd
|
|
||||||
POINT( 0.0, dr ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
path = makePath(
|
|
||||||
POINT( radius, dr ), // aStart
|
|
||||||
POINT( radius, -dr ), // aEnd
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( path );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( radius, -dr ), // aStart
|
|
||||||
POINT( 0.0, -dy ), // aEnd
|
|
||||||
POINT( 0.0, -dr ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
|
|
||||||
shape = new SHAPE( padstack );
|
|
||||||
padstack->Append( shape );
|
|
||||||
qarc = makeArc(
|
|
||||||
POINT( 0.0, -dy ), // aStart
|
|
||||||
POINT( -radius, -dr ), // aEnd
|
|
||||||
POINT( 0.0, -dr ), // aCenter
|
|
||||||
layerName );
|
|
||||||
shape->SetShape( qarc );
|
|
||||||
#else
|
|
||||||
// see http://www.freerouting.net/usren/viewtopic.php?f=3&t=317#p408
|
// see http://www.freerouting.net/usren/viewtopic.php?f=3&t=317#p408
|
||||||
shape = new SHAPE( padstack );
|
shape = new SHAPE( padstack );
|
||||||
padstack->Append( shape );
|
padstack->Append( shape );
|
||||||
path = makePath( POINT(0.0, -dr), POINT(0.0, dr), layerName );
|
path = makePath( POINT(0.0, -dr), POINT(0.0, dr), layerName );
|
||||||
shape->SetShape( path );
|
shape->SetShape( path );
|
||||||
path->aperture_width = 2.0 * radius;
|
path->aperture_width = 2.0 * radius;
|
||||||
#endif
|
|
||||||
|
|
||||||
++coppers;
|
++coppers;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -811,6 +696,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//pcb->placement->flip_style = T_rotate_first;
|
||||||
|
|
||||||
// Since none of these statements cause any immediate output, the order
|
// Since none of these statements cause any immediate output, the order
|
||||||
// of them is somewhat flexible. The outputting to disk is done at the
|
// of them is somewhat flexible. The outputting to disk is done at the
|
||||||
|
@ -844,6 +730,13 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
|
|
||||||
layer->name = layerIds.back();
|
layer->name = layerIds.back();
|
||||||
|
|
||||||
|
layer->properties.push_back( PROPERTY() );
|
||||||
|
PROPERTY* property = &layer->properties.back();
|
||||||
|
property->name = "index";
|
||||||
|
char temp[32];
|
||||||
|
sprintf( temp, "%d", pcbNdx );
|
||||||
|
property->value = temp;
|
||||||
|
|
||||||
// layer->type = @todo need this, the export would be better.
|
// layer->type = @todo need this, the export would be better.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -914,7 +807,6 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
PATH* path = new PATH( boundary );
|
PATH* path = new PATH( boundary );
|
||||||
boundary->paths.push_back( path );
|
boundary->paths.push_back( path );
|
||||||
|
|
||||||
|
@ -925,17 +817,6 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
// otherwise it will.
|
// otherwise it will.
|
||||||
path->points.push_back( ppairs[i].start );
|
path->points.push_back( ppairs[i].start );
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
for( unsigned i=0; i<ppairs.size(); ++i )
|
|
||||||
{
|
|
||||||
PATH* path = new PATH( boundary );
|
|
||||||
boundary->paths.push_back( path );
|
|
||||||
|
|
||||||
path->layer_id = "pcb";
|
|
||||||
path->points.push_back( ppairs[i].start );
|
|
||||||
path->points.push_back( ppairs[i].end );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pcb->structure->SetBOUNDARY( boundary );
|
pcb->structure->SetBOUNDARY( boundary );
|
||||||
|
@ -1091,9 +972,17 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
|
|
||||||
// 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 )
|
||||||
|
{
|
||||||
|
int angle = 1800 - module->m_Orient;
|
||||||
|
|
||||||
|
NORMALIZE_ANGLE_POS(angle);
|
||||||
|
|
||||||
|
place->SetRotation( angle/10.0 );
|
||||||
|
|
||||||
place->side = T_back;
|
place->side = T_back;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//-----<create the nets>------------------------------------------------
|
//-----<create the nets>------------------------------------------------
|
||||||
|
@ -1200,7 +1089,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
wiring->wires.push_back( wire );
|
wiring->wires.push_back( wire );
|
||||||
wire->net_id = netname;
|
wire->net_id = netname;
|
||||||
|
|
||||||
wire->wire_type = T_protect; // @todo, this should be configurable
|
wire->wire_type = T_normal; // @todo, this should be configurable
|
||||||
|
|
||||||
int kiLayer = track->GetLayer();
|
int kiLayer = track->GetLayer();
|
||||||
int pcbLayer = kicadLayer2pcb[kiLayer];
|
int pcbLayer = kicadLayer2pcb[kiLayer];
|
||||||
|
@ -1251,7 +1140,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
|
|
||||||
dsnVia->net_id = CONV_TO_UTF8( equipot->m_Netname );
|
dsnVia->net_id = CONV_TO_UTF8( equipot->m_Netname );
|
||||||
|
|
||||||
dsnVia->via_type = T_protect; // @todo, this should be configurable
|
dsnVia->via_type = T_normal; // @todo, this should be configurable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,4 +1180,3 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
|
||||||
|
|
||||||
|
|
||||||
} // namespace DSN
|
} // namespace DSN
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue