Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
57c19271
Commit
57c19271
authored
Feb 05, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more amazing free software
parent
68e942b2
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
79 additions
and
332 deletions
+79
-332
change_log.txt
change_log.txt
+8
-0
basepcbframe.cpp
pcbnew/basepcbframe.cpp
+3
-3
class_module.cpp
pcbnew/class_module.cpp
+0
-148
specctra.cpp
pcbnew/specctra.cpp
+0
-1
specctra_export.cpp
pcbnew/specctra_export.cpp
+68
-180
No files found.
change_log.txt
View file @
57c19271
...
...
@@ -5,6 +5,14 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
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>
================================================================================
+pcbnew
...
...
pcbnew/basepcbframe.cpp
View file @
57c19271
...
...
@@ -263,7 +263,7 @@ void WinEDA_BasePcbFrame::ProcessItemSelection( wxCommandEvent& event )
BOARD_ITEM
*
item
=
(
*
m_Collector
)[
itemNdx
];
DrawPanel
->
m_AbortRequest
=
false
;
#if
defined (DEBUG) && 0
#if
0 && defined (DEBUG)
item->Show( 0, std::cout );
#endif
...
...
@@ -282,7 +282,7 @@ void WinEDA_BasePcbFrame::SetCurItem( BOARD_ITEM* aItem )
{
aItem
->
Display_Infos
(
this
);
#if defined(DEBUG)
#if
0 &&
defined(DEBUG)
aItem->Show( 0, std::cout );
#endif
...
...
@@ -294,7 +294,7 @@ void WinEDA_BasePcbFrame::SetCurItem( BOARD_ITEM* aItem )
//MsgPanel->EraseMsgBox();
m_Pcb
->
Display_Infos
(
this
);
// show the BOARD stuff
#if defined(DEBUG)
#if
0 &&
defined(DEBUG)
std::cout << "SetCurItem(NULL)\n";
#endif
...
...
pcbnew/class_module.cpp
View file @
57c19271
...
...
@@ -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�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
{
char
statusTxt
[
8
];
...
...
pcbnew/specctra.cpp
View file @
57c19271
...
...
@@ -3480,7 +3480,6 @@ PCB* SPECCTRA_DB::MakePCB()
pcb
->
structure
->
rules
=
new
RULE
(
pcb
->
structure
,
T_rule
);
pcb
->
placement
=
new
PLACEMENT
(
pcb
);
//pcb->placement->flip_style = T_mirror_first;
pcb
->
library
=
new
LIBRARY
(
pcb
);
...
...
pcbnew/specctra_export.cpp
View file @
57c19271
...
...
@@ -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
* 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
)
{
PADSTACKS
&
padstacks
=
pcb
->
library
->
padstacks
;
...
...
@@ -391,18 +356,23 @@ IMAGE* SPECCTRA_DB::makeIMAGE( MODULE* aModule )
PADSTACK
*
SPECCTRA_DB
::
makeVia
(
const
SEGVIA
*
aVia
)
{
CIRCLE
*
circle
;
SHAPE
*
shape
;
double
dsnDiameter
;
char
name
[
48
];
PADSTACK
*
padstack
=
new
PADSTACK
(
pcb
->
library
);
SHAPE
*
shape
=
new
SHAPE
(
padstack
);
switch
(
aVia
->
Shape
()
)
{
case
VIA_THROUGH
:
shape
=
new
SHAPE
(
padstack
);
padstack
->
Append
(
shape
);
// @todo: handle the aVia->Shape() differently for each type of via: MICROVIA, etc.
CIRCLE
*
circle
=
new
CIRCLE
(
shape
);
circle
=
new
CIRCLE
(
shape
);
shape
->
SetShape
(
circle
);
double
dsnDiameter
=
scale
(
aVia
->
m_Width
);
dsnDiameter
=
scale
(
aVia
->
m_Width
);
circle
->
SetDiameter
(
dsnDiameter
);
circle
->
SetLayerId
(
"signal"
);
...
...
@@ -410,6 +380,37 @@ PADSTACK* SPECCTRA_DB::makeVia( const SEGVIA* aVia )
snprintf
(
name
,
sizeof
(
name
),
"Via_%.6g_mil"
,
dsnDiameter
);
name
[
sizeof
(
name
)
-
1
]
=
0
;
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
;
}
...
...
@@ -586,70 +587,12 @@ void SPECCTRA_DB::makePADSTACKs( BOARD* aBoard, TYPE_COLLECTOR& aPads )
{
SHAPE
*
shape
;
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
shape
=
new
SHAPE
(
padstack
);
padstack
->
Append
(
shape
);
path
=
makePath
(
POINT
(
-
dr
,
0.0
),
POINT
(
dr
,
0.0
),
layerName
);
shape
->
SetShape
(
path
);
path
->
aperture_width
=
2.0
*
radius
;
#endif
++
coppers
;
}
}
...
...
@@ -666,70 +609,12 @@ void SPECCTRA_DB::makePADSTACKs( BOARD* aBoard, TYPE_COLLECTOR& aPads )
{
SHAPE
*
shape
;
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
shape
=
new
SHAPE
(
padstack
);
padstack
->
Append
(
shape
);
path
=
makePath
(
POINT
(
0.0
,
-
dr
),
POINT
(
0.0
,
dr
),
layerName
);
shape
->
SetShape
(
path
);
path
->
aperture_width
=
2.0
*
radius
;
#endif
++
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
// 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
->
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.
}
}
...
...
@@ -914,7 +807,6 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
}
else
{
#if 1
PATH
*
path
=
new
PATH
(
boundary
);
boundary
->
paths
.
push_back
(
path
);
...
...
@@ -925,17 +817,6 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
// otherwise it will.
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
);
...
...
@@ -1091,9 +972,17 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
// module is flipped from bottom side, set side to T_back
if
(
module
->
flag
)
{
int
angle
=
1800
-
module
->
m_Orient
;
NORMALIZE_ANGLE_POS
(
angle
);
place
->
SetRotation
(
angle
/
10.0
);
place
->
side
=
T_back
;
}
}
}
//-----<create the nets>------------------------------------------------
...
...
@@ -1200,7 +1089,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
wiring
->
wires
.
push_back
(
wire
);
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
pcbLayer
=
kicadLayer2pcb
[
kiLayer
];
...
...
@@ -1251,7 +1140,7 @@ void SPECCTRA_DB::FromBOARD( BOARD* aBoard )
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment