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
4ef16f53
Commit
4ef16f53
authored
Mar 30, 2009
by
charras
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pcbnew: added BOM generator (in postprocess menu)
parent
534a64b4
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
208 additions
and
15 deletions
+208
-15
CHANGELOG.txt
CHANGELOG.txt
+6
-1
id.h
include/id.h
+1
-1
wxPcbStruct.h
include/wxPcbStruct.h
+14
-1
treeprj_frame.cpp
kicad/treeprj_frame.cpp
+3
-0
CMakeLists.txt
pcbnew/CMakeLists.txt
+1
-0
build_BOM_from_board.cpp
pcbnew/build_BOM_from_board.cpp
+153
-0
edit.cpp
pcbnew/edit.cpp
+11
-1
files.cpp
pcbnew/files.cpp
+0
-4
makefile.include
pcbnew/makefile.include
+1
-0
menubarpcb.cpp
pcbnew/menubarpcb.cpp
+6
-0
pcbframe.cpp
pcbnew/pcbframe.cpp
+2
-1
xchgmod.cpp
pcbnew/xchgmod.cpp
+10
-6
No files found.
CHANGELOG.txt
View file @
4ef16f53
...
...
@@ -4,7 +4,12 @@ KiCad ChangeLog 2009
Please add newer entries at the top, list the date and your name with
email address.
2009-mar-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
2009-mar-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++pcbnew:
added BOM generator (in postprocess menu)
2009-mar-28 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++All
code cleanup in project_config.cpp.
...
...
include/id.h
View file @
4ef16f53
...
...
@@ -737,7 +737,7 @@ enum main_id {
ID_MENU_PCB_SHOW_3D_FRAME
,
ID_PCB_USER_GRID_SETUP
,
ID_PCB_DISPLAY_FOOTPRINT_DOC
,
ID_PCB
UNUSED2
,
ID_PCB
_GEN_BOM_FILE_FROM_BOARD
,
ID_PCBUNUSED3
,
ID_PCBUNUSED4
,
ID_PCBUNUSED5
,
...
...
include/wxPcbStruct.h
View file @
4ef16f53
...
...
@@ -422,7 +422,20 @@ public:
bool
SavePcbFile
(
const
wxString
&
FileName
);
int
SavePcbFormatAscii
(
FILE
*
File
);
bool
WriteGeneralDescrPcb
(
FILE
*
File
);
bool
RecreateCmpFileFromBoard
();
/**
* Function RecreateBOMFileFromBoard
* Recreates a .cmp file from the current loaded board
* this is the same as created by cvpcb.
* can be used if this file is lost
*/
void
RecreateCmpFileFromBoard
(
wxCommandEvent
&
aEvent
);
/**
* Function RecreateBOMFileFromBoard
* Creates a BOM file from the current loaded board
*/
void
RecreateBOMFileFromBoard
(
wxCommandEvent
&
aEvent
);
void
ExportToGenCAD
(
wxCommandEvent
&
event
);
...
...
kicad/treeprj_frame.cpp
View file @
4ef16f53
...
...
@@ -42,10 +42,13 @@ const wxChar* s_AllowedExtensionsToList[] =
wxT
(
"^.*
\\
.net$"
),
wxT
(
"^.*
\\
.txt$"
),
wxT
(
"^.*
\\
.pho$"
),
wxT
(
"^.*
\\
.gbr$"
),
wxT
(
"^.*
\\
.odt$"
),
wxT
(
"^.*
\\
.sxw$"
),
wxT
(
"^.*
\\
.htm$"
),
wxT
(
"^.*
\\
.html$"
),
wxT
(
"^.*
\\
.rpt$"
),
wxT
(
"^.*
\\
.csv$"
),
NULL
// end of list
};
...
...
pcbnew/CMakeLists.txt
View file @
4ef16f53
...
...
@@ -15,6 +15,7 @@ set(PCBNEW_SRCS
block.cpp
block_module_editor.cpp
board.cpp
build_BOM_from_board.cpp
class_board_item.cpp
class_drawsegment.cpp
class_edge_mod.cpp
...
...
pcbnew/build_BOM_from_board.cpp
0 → 100644
View file @
4ef16f53
/* build_BOM_from_board.cpp */
#include "fctsys.h"
#include "common.h"
#include "confirm.h"
#include "kicad_string.h"
#include "gestfich.h"
#include "pcbnew.h"
#include <wx/listimpl.cpp>
/* creates a BOM list rom board
The format is:
"Id";"Designator";"Package";"Number";"Designation";"Supplier and ref";
1;"P1";"DB25FC";1;"DB25FEMELLE";;;
2;"U9";"PGA120";1;"4003APG120";;;
3;"JP1";"pin_array_8x2";1;"CONN_8X2";;;
4;"RR1";"r_pack9";1;"9x1K";;;
5;"X1";"HC-18UH";1;"8MHz";;;
6;"U8";"24dip300";1;"EP600";;;
7;"U5";"32dip600";1;"628128";;;
8;"C2,C3";"C1";2;"47pF";;;
9;"U1";"20dip300";1;"74LS245";;;
10;"U3";"20dip300";1;"74LS541";;;
11;"U2";"20dip300";1;"74LS688";;;
12;"C1,C4,C5,C6";"CP6";4;"47uF";;;
*/
wxString
NetBomExtBuffer
(
wxT
(
".csv"
)
);
// BOM file extension
class
cmp
{
public
:
wxString
m_Ref
;
wxString
m_Val
;
wxString
m_Pkg
;
int
m_Id
;
int
m_CmpCount
;
};
WX_DECLARE_LIST
(
cmp
,
CmpList
);
WX_DEFINE_LIST
(
CmpList
);
void
WinEDA_PcbFrame
::
RecreateBOMFileFromBoard
(
wxCommandEvent
&
aEvent
)
{
wxString
FullFileName
,
mask
;
FILE
*
FichBom
;
MODULE
*
Module
=
GetBoard
()
->
m_Modules
;
wxString
msg
;
if
(
Module
==
NULL
)
{
DisplayError
(
this
,
_
(
"No Modules!"
)
);
return
;
}
/* Set the file extension: */
FullFileName
=
GetScreen
()
->
m_FileName
;
ChangeFileNameExt
(
FullFileName
,
NetBomExtBuffer
);
mask
=
wxT
(
"*"
)
+
NetBomExtBuffer
;
FullFileName
=
EDA_FileSelector
(
_
(
"Bom files:"
),
wxEmptyString
,
/* Chemin par defaut */
FullFileName
,
/* nom fichier par defaut */
NetBomExtBuffer
,
/* extension par defaut */
mask
,
/* Masque d'affichage */
this
,
wxFD_SAVE
,
FALSE
);
if
(
FullFileName
.
IsEmpty
()
)
return
;
FichBom
=
wxFopen
(
FullFileName
,
wxT
(
"wt"
)
);
if
(
FichBom
==
NULL
)
{
msg
=
_
(
"Unable to create file "
)
+
FullFileName
;
DisplayError
(
this
,
msg
);
return
;
}
// Write header:
msg
=
wxT
(
"
\"
"
);
msg
<<
_
(
"Id"
)
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
_
(
"Designator"
)
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
_
(
"Package"
)
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
_
(
"Number"
)
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
_
(
"Designation"
)
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
_
(
"Supplier and ref"
)
<<
wxT
(
"
\"
;
\n
"
);
fprintf
(
FichBom
,
CONV_TO_UTF8
(
msg
)
);
// Build list
CmpList
list
;
cmp
*
comp
=
NULL
;
CmpList
::
iterator
iter
;
int
i
=
1
;
for
(
;
Module
!=
NULL
;
Module
=
Module
->
Next
()
)
{
bool
valExist
=
false
;
if
(
comp
!=
NULL
)
{
for
(
iter
=
list
.
begin
();
iter
!=
list
.
end
();
iter
++
)
{
cmp
*
current
=
*
iter
;
if
(
(
current
->
m_Val
==
Module
->
m_Value
->
m_Text
)
&&
(
current
->
m_Pkg
==
Module
->
m_LibRef
)
)
{
current
->
m_Ref
.
Append
(
wxT
(
", "
),
1
);
current
->
m_Ref
.
Append
(
Module
->
m_Reference
->
m_Text
);
comp
->
m_CmpCount
++
;
valExist
=
true
;
break
;
}
}
}
if
(
!
valExist
||
(
comp
==
NULL
)
)
{
comp
=
new
cmp
();
comp
->
m_Id
=
i
++
;
comp
->
m_Val
=
Module
->
m_Value
->
m_Text
;
comp
->
m_Ref
=
Module
->
m_Reference
->
m_Text
;
comp
->
m_Pkg
=
Module
->
m_LibRef
;
comp
->
m_CmpCount
=
1
;
list
.
Append
(
comp
);
}
}
// Print list
for
(
iter
=
list
.
begin
();
iter
!=
list
.
end
();
iter
++
)
{
cmp
*
current
=
*
iter
;
msg
.
Empty
();
msg
<<
current
->
m_Id
<<
wxT
(
";
\"
"
);
msg
<<
current
->
m_Ref
<<
wxT
(
"
\"
;
\"
"
);
msg
<<
current
->
m_Pkg
<<
wxT
(
"
\"
;"
);
msg
<<
current
->
m_CmpCount
<<
wxT
(
";
\"
"
);
msg
<<
current
->
m_Val
<<
wxT
(
"
\"
;;;
\n
"
);
fprintf
(
FichBom
,
CONV_TO_UTF8
(
msg
)
);
list
.
DeleteObject
(
current
);
delete
(
current
);
}
fclose
(
FichBom
);
}
pcbnew/edit.cpp
View file @
4ef16f53
...
...
@@ -459,8 +459,14 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
DrawPanel
->
MouseToCursorSchema
();
if
(
GetCurItem
()
==
NULL
)
break
;
Delete_Zone_Fill
(
&
dc
,
(
SEGZONE
*
)
GetCurItem
()
);
{
SEGZONE
*
zsegm
=
(
SEGZONE
*
)
GetCurItem
();
int
netcode
=
zsegm
->
GetNet
();
Delete_Zone_Fill
(
&
dc
,
zsegm
);
SetCurItem
(
NULL
);
test_1_net_connexion
(
NULL
,
netcode
);
GetScreen
()
->
SetModify
();
}
break
;
case
ID_POPUP_PCB_EDIT_ZONE_PARAMS
:
...
...
@@ -483,8 +489,12 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
case
ID_POPUP_PCB_DELETE_ZONE_CONTAINER
:
case
ID_POPUP_PCB_DELETE_ZONE_CUTOUT
:
DrawPanel
->
MouseToCursorSchema
();
{
int
netcode
=
((
ZONE_CONTAINER
*
)
GetCurItem
())
->
GetNet
();
Delete_Zone_Contour
(
&
dc
,
(
ZONE_CONTAINER
*
)
GetCurItem
()
);
SetCurItem
(
NULL
);
test_1_net_connexion
(
NULL
,
netcode
);
}
break
;
case
ID_POPUP_PCB_DELETE_ZONE_CORNER
:
...
...
pcbnew/files.cpp
View file @
4ef16f53
...
...
@@ -120,10 +120,6 @@ void WinEDA_PcbFrame::Files_io( wxCommandEvent& event )
SavePcbFile
(
wxEmptyString
);
break
;
case
ID_PCB_GEN_CMP_FILE
:
RecreateCmpFileFromBoard
();
break
;
default
:
DisplayError
(
this
,
wxT
(
"File_io Internal Error"
)
);
break
;
}
...
...
pcbnew/makefile.include
View file @
4ef16f53
...
...
@@ -24,6 +24,7 @@ SPECCTRA_TOOLS = specctra.o specctra_export.o dsn.o specctra_import.o
OBJECTS
=
$(TARGET)
.o
\
$(ZONE_FILES)
\
$(SPECCTRA_TOOLS)
\
build_BOM_from_board.o
\
print_board_functions.o
\
dialog_freeroute_exchange.o
\
modedit_undo_redo.o
\
...
...
pcbnew/menubarpcb.cpp
View file @
4ef16f53
...
...
@@ -263,6 +263,12 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
item
->
SetBitmap
(
save_cmpstuff_xpm
);
postprocess_menu
->
Append
(
item
);
item
=
new
wxMenuItem
(
postprocess_menu
,
ID_PCB_GEN_BOM_FILE_FROM_BOARD
,
_
(
"Create &BOM File"
),
_
(
"Recreate .csv file for CvPcb"
)
);
item
->
SetBitmap
(
tools_xpm
);
postprocess_menu
->
Append
(
item
);
//////////////////////////
// Menu d'outils divers //
//////////////////////////
...
...
pcbnew/pcbframe.cpp
View file @
4ef16f53
...
...
@@ -104,7 +104,8 @@ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame )
// menu Postprocess
EVT_MENU
(
ID_PCB_GEN_POS_MODULES_FILE
,
WinEDA_PcbFrame
::
GenModulesPosition
)
EVT_MENU
(
ID_PCB_GEN_DRILL_FILE
,
WinEDA_PcbFrame
::
InstallDrillFrame
)
EVT_MENU
(
ID_PCB_GEN_CMP_FILE
,
WinEDA_PcbFrame
::
Files_io
)
EVT_MENU
(
ID_PCB_GEN_CMP_FILE
,
WinEDA_PcbFrame
::
RecreateCmpFileFromBoard
)
EVT_MENU
(
ID_PCB_GEN_BOM_FILE_FROM_BOARD
,
WinEDA_PcbFrame
::
RecreateBOMFileFromBoard
)
// menu Miscellaneous
EVT_MENU
(
ID_MENU_LIST_NETS
,
WinEDA_PcbFrame
::
Liste_Equipot
)
...
...
pcbnew/xchgmod.cpp
View file @
4ef16f53
...
...
@@ -601,8 +601,14 @@ void WinEDA_ExchangeModuleFrame::Sel_NewMod_By_Liste( wxCommandEvent& event )
/***************************************************/
bool
WinEDA_PcbFrame
::
RecreateCmpFileFromBoard
(
)
void
WinEDA_PcbFrame
::
RecreateCmpFileFromBoard
(
wxCommandEvent
&
aEvent
)
/***************************************************/
/**
* Function RecreateBOMFileFromBoard
* Recreates a .cmp file from the current loaded board
* this is the same as created by cvpcb.
* can be used if this file is lost
*/
{
wxString
FullFileNameCmp
,
mask
;
FILE
*
FichCmp
;
...
...
@@ -613,7 +619,7 @@ bool WinEDA_PcbFrame::RecreateCmpFileFromBoard()
if
(
Module
==
NULL
)
{
DisplayError
(
this
,
_
(
"No Modules!"
)
);
return
FALSE
;
return
;
}
/* Calcul nom fichier CMP par changement de l'extension du nom netliste */
...
...
@@ -631,7 +637,7 @@ bool WinEDA_PcbFrame::RecreateCmpFileFromBoard()
FALSE
);
if
(
FullFileNameCmp
.
IsEmpty
()
)
return
FALSE
;
return
;
FichCmp
=
wxFopen
(
FullFileNameCmp
,
wxT
(
"wt"
)
);
...
...
@@ -639,7 +645,7 @@ bool WinEDA_PcbFrame::RecreateCmpFileFromBoard()
{
msg
=
_
(
"Unable to create file "
)
+
FullFileNameCmp
;
DisplayError
(
this
,
msg
);
return
FALSE
;
return
;
}
fgets
(
Line
,
sizeof
(
Line
),
FichCmp
);
...
...
@@ -662,6 +668,4 @@ bool WinEDA_PcbFrame::RecreateCmpFileFromBoard()
fprintf
(
FichCmp
,
"
\n
EndListe
\n
"
);
fclose
(
FichCmp
);
return
TRUE
;
}
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