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
b33fa0cc
Commit
b33fa0cc
authored
Mar 03, 2014
by
Martin Janitschke
Committed by
Wayne Stambaugh
Mar 03, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pcbnew: add option to merge non-plated through holes to drill file. (fixes lp:1133330)
parent
36813fe8
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
160 additions
and
40 deletions
+160
-40
dialog_gendrill.cpp
pcbnew/dialogs/dialog_gendrill.cpp
+23
-28
dialog_gendrill.h
pcbnew/dialogs/dialog_gendrill.h
+24
-4
dialog_gendrill_base.cpp
pcbnew/dialogs/dialog_gendrill_base.cpp
+4
-1
dialog_gendrill_base.fbp
pcbnew/dialogs/dialog_gendrill_base.fbp
+91
-1
dialog_gendrill_base.h
pcbnew/dialogs/dialog_gendrill_base.h
+2
-1
gen_drill_report_files.cpp
pcbnew/exporters/gen_drill_report_files.cpp
+1
-1
gendrill_Excellon_writer.cpp
pcbnew/exporters/gendrill_Excellon_writer.cpp
+9
-2
gendrill_Excellon_writer.h
pcbnew/exporters/gendrill_Excellon_writer.h
+6
-2
No files found.
pcbnew/dialogs/dialog_gendrill.cpp
View file @
b33fa0cc
...
@@ -47,6 +47,7 @@
...
@@ -47,6 +47,7 @@
#define PrecisionKey wxT( "DrilltPrecisionOpt" )
#define PrecisionKey wxT( "DrilltPrecisionOpt" )
#define MirrorKey wxT( "DrillMirrorYOpt" )
#define MirrorKey wxT( "DrillMirrorYOpt" )
#define MinimalHeaderKey wxT( "DrillMinHeader" )
#define MinimalHeaderKey wxT( "DrillMinHeader" )
#define MergePTHNPTHKey wxT( "DrillMergePTHNPTH" )
#define UnitDrillInchKey wxT( "DrillUnit" )
#define UnitDrillInchKey wxT( "DrillUnit" )
#define DrillOriginIsAuxAxisKey wxT( "DrillAuxAxis" )
#define DrillOriginIsAuxAxisKey wxT( "DrillAuxAxis" )
#define DrillMapFileTypeKey wxT( "DrillMapFileType" )
#define DrillMapFileTypeKey wxT( "DrillMapFileType" )
...
@@ -68,7 +69,6 @@ void PCB_EDIT_FRAME::InstallDrillFrame( wxCommandEvent& event )
...
@@ -68,7 +69,6 @@ void PCB_EDIT_FRAME::InstallDrillFrame( wxCommandEvent& event )
}
}
DIALOG_GENDRILL
::
DIALOG_GENDRILL
(
PCB_EDIT_FRAME
*
parent
)
:
DIALOG_GENDRILL
::
DIALOG_GENDRILL
(
PCB_EDIT_FRAME
*
parent
)
:
DIALOG_GENDRILL_BASE
(
parent
)
DIALOG_GENDRILL_BASE
(
parent
)
{
{
...
@@ -88,6 +88,7 @@ int DIALOG_GENDRILL::m_UnitDrillIsInch = true;
...
@@ -88,6 +88,7 @@ int DIALOG_GENDRILL::m_UnitDrillIsInch = true;
int
DIALOG_GENDRILL
::
m_ZerosFormat
=
EXCELLON_WRITER
::
DECIMAL_FORMAT
;
int
DIALOG_GENDRILL
::
m_ZerosFormat
=
EXCELLON_WRITER
::
DECIMAL_FORMAT
;
bool
DIALOG_GENDRILL
::
m_MinimalHeader
=
false
;
bool
DIALOG_GENDRILL
::
m_MinimalHeader
=
false
;
bool
DIALOG_GENDRILL
::
m_Mirror
=
false
;
bool
DIALOG_GENDRILL
::
m_Mirror
=
false
;
bool
DIALOG_GENDRILL
::
m_Merge_PTH_NPTH
=
false
;
bool
DIALOG_GENDRILL
::
m_DrillOriginIsAuxAxis
=
false
;
bool
DIALOG_GENDRILL
::
m_DrillOriginIsAuxAxis
=
false
;
int
DIALOG_GENDRILL
::
m_mapFileType
=
1
;
int
DIALOG_GENDRILL
::
m_mapFileType
=
1
;
...
@@ -102,6 +103,7 @@ void DIALOG_GENDRILL::initDialog()
...
@@ -102,6 +103,7 @@ void DIALOG_GENDRILL::initDialog()
{
{
m_config
->
Read
(
ZerosFormatKey
,
&
m_ZerosFormat
);
m_config
->
Read
(
ZerosFormatKey
,
&
m_ZerosFormat
);
m_config
->
Read
(
MirrorKey
,
&
m_Mirror
);
m_config
->
Read
(
MirrorKey
,
&
m_Mirror
);
m_config
->
Read
(
MergePTHNPTHKey
,
&
m_Merge_PTH_NPTH
);
m_config
->
Read
(
MinimalHeaderKey
,
&
m_MinimalHeader
);
m_config
->
Read
(
MinimalHeaderKey
,
&
m_MinimalHeader
);
m_config
->
Read
(
UnitDrillInchKey
,
&
m_UnitDrillIsInch
);
m_config
->
Read
(
UnitDrillInchKey
,
&
m_UnitDrillIsInch
);
m_config
->
Read
(
DrillOriginIsAuxAxisKey
,
&
m_DrillOriginIsAuxAxis
);
m_config
->
Read
(
DrillOriginIsAuxAxisKey
,
&
m_DrillOriginIsAuxAxis
);
...
@@ -124,6 +126,7 @@ void DIALOG_GENDRILL::InitDisplayParams()
...
@@ -124,6 +126,7 @@ void DIALOG_GENDRILL::InitDisplayParams()
m_Choice_Drill_Offset
->
SetSelection
(
1
);
m_Choice_Drill_Offset
->
SetSelection
(
1
);
m_Check_Mirror
->
SetValue
(
m_Mirror
);
m_Check_Mirror
->
SetValue
(
m_Mirror
);
m_Check_Merge_PTH_NPTH
->
SetValue
(
m_Merge_PTH_NPTH
);
m_Choice_Drill_Map
->
SetSelection
(
m_mapFileType
);
m_Choice_Drill_Map
->
SetSelection
(
m_mapFileType
);
m_ViaDrillValue
->
SetLabel
(
_
(
"Use Netclasses values"
)
);
m_ViaDrillValue
->
SetLabel
(
_
(
"Use Netclasses values"
)
);
m_MicroViaDrillValue
->
SetLabel
(
_
(
"Use Netclasses values"
)
);
m_MicroViaDrillValue
->
SetLabel
(
_
(
"Use Netclasses values"
)
);
...
@@ -213,6 +216,7 @@ void DIALOG_GENDRILL::UpdateConfig()
...
@@ -213,6 +216,7 @@ void DIALOG_GENDRILL::UpdateConfig()
m_config
->
Write
(
ZerosFormatKey
,
m_ZerosFormat
);
m_config
->
Write
(
ZerosFormatKey
,
m_ZerosFormat
);
m_config
->
Write
(
MirrorKey
,
m_Mirror
);
m_config
->
Write
(
MirrorKey
,
m_Mirror
);
m_config
->
Write
(
MinimalHeaderKey
,
m_MinimalHeader
);
m_config
->
Write
(
MinimalHeaderKey
,
m_MinimalHeader
);
m_config
->
Write
(
MergePTHNPTHKey
,
m_Merge_PTH_NPTH
);
m_config
->
Write
(
UnitDrillInchKey
,
m_UnitDrillIsInch
);
m_config
->
Write
(
UnitDrillInchKey
,
m_UnitDrillIsInch
);
m_config
->
Write
(
DrillOriginIsAuxAxisKey
,
m_DrillOriginIsAuxAxis
);
m_config
->
Write
(
DrillOriginIsAuxAxisKey
,
m_DrillOriginIsAuxAxis
);
m_config
->
Write
(
DrillMapFileTypeKey
,
m_mapFileType
);
m_config
->
Write
(
DrillMapFileTypeKey
,
m_mapFileType
);
...
@@ -229,6 +233,7 @@ void DIALOG_GENDRILL::OnGenMapFile( wxCommandEvent& event )
...
@@ -229,6 +233,7 @@ void DIALOG_GENDRILL::OnGenMapFile( wxCommandEvent& event )
GenDrillAndMapFiles
(
false
,
true
);
GenDrillAndMapFiles
(
false
,
true
);
}
}
void
DIALOG_GENDRILL
::
OnGenDrillFile
(
wxCommandEvent
&
event
)
void
DIALOG_GENDRILL
::
OnGenDrillFile
(
wxCommandEvent
&
event
)
{
{
GenDrillAndMapFiles
(
true
,
false
);
GenDrillAndMapFiles
(
true
,
false
);
...
@@ -264,6 +269,7 @@ void DIALOG_GENDRILL::UpdatePrecisionOptions()
...
@@ -264,6 +269,7 @@ void DIALOG_GENDRILL::UpdatePrecisionOptions()
m_staticTextPrecision
->
Enable
(
true
);
m_staticTextPrecision
->
Enable
(
true
);
}
}
void
DIALOG_GENDRILL
::
OnOutputDirectoryBrowseClicked
(
wxCommandEvent
&
event
)
void
DIALOG_GENDRILL
::
OnOutputDirectoryBrowseClicked
(
wxCommandEvent
&
event
)
{
{
// Build the absolute path of current output plot directory
// Build the absolute path of current output plot directory
...
@@ -292,14 +298,14 @@ void DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked( wxCommandEvent& event )
...
@@ -292,14 +298,14 @@ void DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked( wxCommandEvent& event )
wxString
boardFilePath
=
(
(
wxFileName
)
m_parent
->
GetBoard
()
->
GetFileName
()
).
GetPath
();
wxString
boardFilePath
=
(
(
wxFileName
)
m_parent
->
GetBoard
()
->
GetFileName
()
).
GetPath
();
if
(
!
dirName
.
MakeRelativeTo
(
boardFilePath
)
)
if
(
!
dirName
.
MakeRelativeTo
(
boardFilePath
)
)
wxMessageBox
(
_
(
wxMessageBox
(
_
(
"Cannot make path relative. The target volume is different from board file volume!"
),
"Cannot make path relative (target volume different from board file volume)!"
),
_
(
"Plot Output Directory"
),
wxOK
|
wxICON_ERROR
);
_
(
"Plot Output Directory"
),
wxOK
|
wxICON_ERROR
);
}
}
m_outputDirectoryName
->
SetValue
(
dirName
.
GetFullPath
()
);
m_outputDirectoryName
->
SetValue
(
dirName
.
GetFullPath
()
);
}
}
void
DIALOG_GENDRILL
::
SetParams
()
void
DIALOG_GENDRILL
::
SetParams
()
{
{
wxString
msg
;
wxString
msg
;
...
@@ -315,6 +321,7 @@ void DIALOG_GENDRILL::SetParams()
...
@@ -315,6 +321,7 @@ void DIALOG_GENDRILL::SetParams()
m_UnitDrillIsInch
=
(
m_Choice_Unit
->
GetSelection
()
==
0
)
?
false
:
true
;
m_UnitDrillIsInch
=
(
m_Choice_Unit
->
GetSelection
()
==
0
)
?
false
:
true
;
m_MinimalHeader
=
m_Check_Minimal
->
IsChecked
();
m_MinimalHeader
=
m_Check_Minimal
->
IsChecked
();
m_Mirror
=
m_Check_Mirror
->
IsChecked
();
m_Mirror
=
m_Check_Mirror
->
IsChecked
();
m_Merge_PTH_NPTH
=
m_Check_Merge_PTH_NPTH
->
IsChecked
();
m_ZerosFormat
=
m_Choice_Zeros_Format
->
GetSelection
();
m_ZerosFormat
=
m_Choice_Zeros_Format
->
GetSelection
();
m_DrillOriginIsAuxAxis
=
m_Choice_Drill_Offset
->
GetSelection
();
m_DrillOriginIsAuxAxis
=
m_Choice_Drill_Offset
->
GetSelection
();
...
@@ -331,16 +338,7 @@ void DIALOG_GENDRILL::SetParams()
...
@@ -331,16 +338,7 @@ void DIALOG_GENDRILL::SetParams()
m_board
->
SetPlotOptions
(
m_plotOpts
);
m_board
->
SetPlotOptions
(
m_plotOpts
);
}
}
/**
* Function GenDrillAndMapFiles
* Calls the functions to create EXCELLON drill files and/or drill map files
* >When all holes are through holes, only one excellon file is created.
* >When there are some partial holes (some blind or buried vias),
* one excellon file is created, for all plated through holes,
* and one file per layer pair, which have one or more holes, excluding
* through holes, already in the first file.
* one file for all Not Plated through holes
*/
void
DIALOG_GENDRILL
::
GenDrillAndMapFiles
(
bool
aGenDrill
,
bool
aGenMap
)
void
DIALOG_GENDRILL
::
GenDrillAndMapFiles
(
bool
aGenDrill
,
bool
aGenMap
)
{
{
wxString
layer_extend
;
/* added to the Board FileName to
wxString
layer_extend
;
/* added to the Board FileName to
...
@@ -369,14 +367,14 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
...
@@ -369,14 +367,14 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
excellonWriter
.
SetFormat
(
!
m_UnitDrillIsInch
,
excellonWriter
.
SetFormat
(
!
m_UnitDrillIsInch
,
(
EXCELLON_WRITER
::
zeros_fmt
)
m_ZerosFormat
,
(
EXCELLON_WRITER
::
zeros_fmt
)
m_ZerosFormat
,
m_Precision
.
m_lhs
,
m_Precision
.
m_rhs
);
m_Precision
.
m_lhs
,
m_Precision
.
m_rhs
);
excellonWriter
.
SetOptions
(
m_Mirror
,
m_MinimalHeader
,
m_FileDrillOffset
);
excellonWriter
.
SetOptions
(
m_Mirror
,
m_MinimalHeader
,
m_FileDrillOffset
,
m_Merge_PTH_NPTH
);
wxFileName
fn
;
wxFileName
fn
;
for
(
;
;
)
for
(
;
;
)
{
{
excellonWriter
.
BuildHolesList
(
layer1
,
layer2
,
excellonWriter
.
BuildHolesList
(
layer1
,
layer2
,
gen_through_holes
?
false
:
true
,
gen_through_holes
?
false
:
true
,
gen_NPTH_holes
);
gen_NPTH_holes
,
m_Merge_PTH_NPTH
);
if
(
excellonWriter
.
GetHolesCount
()
>
0
)
// has holes?
if
(
excellonWriter
.
GetHolesCount
()
>
0
)
// has holes?
{
{
...
@@ -393,6 +391,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
...
@@ -393,6 +391,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
layer_extend
<<
wxT
(
"-back"
);
layer_extend
<<
wxT
(
"-back"
);
else
else
layer_extend
<<
wxT
(
"-inner"
)
<<
layer1
;
layer_extend
<<
wxT
(
"-inner"
)
<<
layer1
;
if
(
layer2
==
LAYER_N_FRONT
)
if
(
layer2
==
LAYER_N_FRONT
)
layer_extend
<<
wxT
(
"-front"
);
layer_extend
<<
wxT
(
"-front"
);
else
else
...
@@ -401,6 +400,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
...
@@ -401,6 +400,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
fn
.
SetName
(
fn
.
GetName
()
+
layer_extend
);
fn
.
SetName
(
fn
.
GetName
()
+
layer_extend
);
wxString
defaultPath
=
m_plotOpts
.
GetOutputDirectory
();
wxString
defaultPath
=
m_plotOpts
.
GetOutputDirectory
();
if
(
defaultPath
.
IsEmpty
()
)
if
(
defaultPath
.
IsEmpty
()
)
defaultPath
=
::
wxGetCwd
();
defaultPath
=
::
wxGetCwd
();
...
@@ -466,6 +466,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
...
@@ -466,6 +466,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
gen_NPTH_holes
=
true
;
gen_NPTH_holes
=
true
;
continue
;
continue
;
}
}
layer1
++
;
layer1
++
;
layer2
++
;
// use next layer pair
layer2
++
;
// use next layer pair
...
@@ -482,11 +483,6 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
...
@@ -482,11 +483,6 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles(bool aGenDrill, bool aGenMap)
}
}
/*
* Create a plain text report file giving a list of drill values and drill count
* for through holes, oblong holes, and for buried vias,
* drill values and drill count per layer pair
*/
void
DIALOG_GENDRILL
::
OnGenReportFile
(
wxCommandEvent
&
event
)
void
DIALOG_GENDRILL
::
OnGenReportFile
(
wxCommandEvent
&
event
)
{
{
UpdateConfig
();
// set params and Save drill options
UpdateConfig
();
// set params and Save drill options
...
@@ -497,6 +493,7 @@ void DIALOG_GENDRILL::OnGenReportFile( wxCommandEvent& event )
...
@@ -497,6 +493,7 @@ void DIALOG_GENDRILL::OnGenReportFile( wxCommandEvent& event )
fn
.
SetExt
(
ReportFileExtension
);
fn
.
SetExt
(
ReportFileExtension
);
wxString
defaultPath
=
m_plotOpts
.
GetOutputDirectory
();
wxString
defaultPath
=
m_plotOpts
.
GetOutputDirectory
();
if
(
defaultPath
.
IsEmpty
()
)
if
(
defaultPath
.
IsEmpty
()
)
defaultPath
=
::
wxGetCwd
();
defaultPath
=
::
wxGetCwd
();
...
@@ -512,7 +509,7 @@ void DIALOG_GENDRILL::OnGenReportFile( wxCommandEvent& event )
...
@@ -512,7 +509,7 @@ void DIALOG_GENDRILL::OnGenReportFile( wxCommandEvent& event )
excellonWriter
.
SetFormat
(
!
m_UnitDrillIsInch
,
excellonWriter
.
SetFormat
(
!
m_UnitDrillIsInch
,
(
EXCELLON_WRITER
::
zeros_fmt
)
m_ZerosFormat
,
(
EXCELLON_WRITER
::
zeros_fmt
)
m_ZerosFormat
,
m_Precision
.
m_lhs
,
m_Precision
.
m_rhs
);
m_Precision
.
m_lhs
,
m_Precision
.
m_rhs
);
excellonWriter
.
SetOptions
(
m_Mirror
,
m_MinimalHeader
,
m_FileDrillOffset
);
excellonWriter
.
SetOptions
(
m_Mirror
,
m_MinimalHeader
,
m_FileDrillOffset
,
m_Merge_PTH_NPTH
);
bool
success
=
excellonWriter
.
GenDrillReportFile
(
dlg
.
GetPath
()
);
bool
success
=
excellonWriter
.
GenDrillReportFile
(
dlg
.
GetPath
()
);
...
@@ -572,7 +569,7 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
...
@@ -572,7 +569,7 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
break
;
break
;
default
:
default
:
wxLogMessage
(
wxT
(
"DIALOG_GENDRILL::GenDrillMap() error, fmt % unkown"
),
format
);
wxLogMessage
(
wxT
(
"DIALOG_GENDRILL::GenDrillMap() error, fmt % unk
n
own"
),
format
);
return
;
return
;
}
}
...
@@ -588,8 +585,7 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
...
@@ -588,8 +585,7 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
if
(
!
success
)
if
(
!
success
)
{
{
msg
.
Printf
(
_
(
"** Unable to create %s **
\n
"
),
msg
.
Printf
(
_
(
"** Unable to create %s **
\n
"
),
GetChars
(
fullFilename
)
);
GetChars
(
fullFilename
)
);
m_messagesBox
->
AppendText
(
msg
);
m_messagesBox
->
AppendText
(
msg
);
return
;
return
;
}
}
...
@@ -598,5 +594,4 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
...
@@ -598,5 +594,4 @@ void DIALOG_GENDRILL::GenDrillMap( const wxString aFullFileNameWithoutExt,
msg
.
Printf
(
_
(
"Plot: %s OK
\n
"
),
GetChars
(
fullFilename
)
);
msg
.
Printf
(
_
(
"Plot: %s OK
\n
"
),
GetChars
(
fullFilename
)
);
m_messagesBox
->
AppendText
(
msg
);
m_messagesBox
->
AppendText
(
msg
);
}
}
}
}
pcbnew/dialogs/dialog_gendrill.h
View file @
b33fa0cc
...
@@ -41,6 +41,7 @@ public:
...
@@ -41,6 +41,7 @@ public:
static
int
m_ZerosFormat
;
static
int
m_ZerosFormat
;
static
bool
m_MinimalHeader
;
static
bool
m_MinimalHeader
;
static
bool
m_Mirror
;
static
bool
m_Mirror
;
static
bool
m_Merge_PTH_NPTH
;
static
bool
m_DrillOriginIsAuxAxis
;
/* Axis selection (main / auxiliary)
static
bool
m_DrillOriginIsAuxAxis
;
/* Axis selection (main / auxiliary)
* for drill origin coordinates */
* for drill origin coordinates */
DRILL_PRECISION
m_Precision
;
// Selected precision for drill files
DRILL_PRECISION
m_Precision
;
// Selected precision for drill files
...
@@ -71,13 +72,32 @@ private:
...
@@ -71,13 +72,32 @@ private:
void
OnSelZerosFmtSelected
(
wxCommandEvent
&
event
);
void
OnSelZerosFmtSelected
(
wxCommandEvent
&
event
);
void
OnGenDrillFile
(
wxCommandEvent
&
event
);
void
OnGenDrillFile
(
wxCommandEvent
&
event
);
void
OnGenMapFile
(
wxCommandEvent
&
event
);
void
OnGenMapFile
(
wxCommandEvent
&
event
);
/*
* Create a plain text report file giving a list of drill values and drill count
* for through holes, oblong holes, and for buried vias,
* drill values and drill count per layer pair
*/
void
OnGenReportFile
(
wxCommandEvent
&
event
);
void
OnGenReportFile
(
wxCommandEvent
&
event
);
void
OnCancelClick
(
wxCommandEvent
&
event
);
void
OnCancelClick
(
wxCommandEvent
&
event
);
void
OnOutputDirectoryBrowseClicked
(
wxCommandEvent
&
event
);
void
OnOutputDirectoryBrowseClicked
(
wxCommandEvent
&
event
);
// Specific functions:
// Specific functions:
void
SetParams
(
void
);
void
SetParams
(
void
);
void
GenDrillAndMapFiles
(
bool
aGenDrill
,
bool
aGenMap
);
/**
* Function GenDrillAndMapFiles
* Calls the functions to create EXCELLON drill files and/or drill map files
* >When all holes are through holes, only one excellon file is created.
* >When there are some partial holes (some blind or buried vias),
* one excellon file is created, for all plated through holes,
* and one file per layer pair, which have one or more holes, excluding
* through holes, already in the first file.
* one file for all Not Plated through holes
*/
void
GenDrillAndMapFiles
(
bool
aGenDrill
,
bool
aGenMap
);
void
GenDrillMap
(
const
wxString
aFileName
,
void
GenDrillMap
(
const
wxString
aFileName
,
EXCELLON_WRITER
&
aExcellonWriter
,
EXCELLON_WRITER
&
aExcellonWriter
,
PlotFormat
format
);
PlotFormat
format
);
...
...
pcbnew/dialogs/dialog_gendrill_base.cpp
View file @
b33fa0cc
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version
Oct 8 2012
)
// C++ code generated with wxFormBuilder (version
Feb 26 2014
)
// http://www.wxformbuilder.org/
// http://www.wxformbuilder.org/
//
//
// PLEASE DO "NOT" EDIT THIS FILE!
// PLEASE DO "NOT" EDIT THIS FILE!
...
@@ -88,6 +88,9 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
...
@@ -88,6 +88,9 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
m_Check_Minimal
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Minimal header"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
m_Check_Minimal
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Minimal header"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
sbOptSizer
->
Add
(
m_Check_Minimal
,
0
,
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
sbOptSizer
->
Add
(
m_Check_Minimal
,
0
,
wxTOP
|
wxRIGHT
|
wxLEFT
,
5
);
m_Check_Merge_PTH_NPTH
=
new
wxCheckBox
(
this
,
wxID_ANY
,
_
(
"Merge PTH and NPTH holes into one file"
),
wxDefaultPosition
,
wxDefaultSize
,
0
);
sbOptSizer
->
Add
(
m_Check_Merge_PTH_NPTH
,
0
,
wxALL
,
5
);
bMiddleBoxSizer
->
Add
(
sbOptSizer
,
0
,
wxEXPAND
|
wxRIGHT
|
wxLEFT
,
5
);
bMiddleBoxSizer
->
Add
(
sbOptSizer
,
0
,
wxEXPAND
|
wxRIGHT
|
wxLEFT
,
5
);
...
...
pcbnew/dialogs/dialog_gendrill_base.fbp
View file @
b33fa0cc
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<wxFormBuilder_Project>
<FileVersion
major=
"1"
minor=
"1
1
"
/>
<FileVersion
major=
"1"
minor=
"1
2
"
/>
<object
class=
"Project"
expanded=
"1"
>
<object
class=
"Project"
expanded=
"1"
>
<property
name=
"class_decoration"
></property>
<property
name=
"class_decoration"
></property>
<property
name=
"code_generation"
>
C++
</property>
<property
name=
"code_generation"
>
C++
</property>
...
@@ -20,8 +20,10 @@
...
@@ -20,8 +20,10 @@
<property
name=
"path"
>
.
</property>
<property
name=
"path"
>
.
</property>
<property
name=
"precompiled_header"
></property>
<property
name=
"precompiled_header"
></property>
<property
name=
"relative_path"
>
1
</property>
<property
name=
"relative_path"
>
1
</property>
<property
name=
"skip_lua_events"
>
1
</property>
<property
name=
"skip_php_events"
>
1
</property>
<property
name=
"skip_php_events"
>
1
</property>
<property
name=
"skip_python_events"
>
1
</property>
<property
name=
"skip_python_events"
>
1
</property>
<property
name=
"ui_table"
>
UI
</property>
<property
name=
"use_enum"
>
0
</property>
<property
name=
"use_enum"
>
0
</property>
<property
name=
"use_microsoft_bom"
>
0
</property>
<property
name=
"use_microsoft_bom"
>
0
</property>
<object
class=
"Dialog"
expanded=
"1"
>
<object
class=
"Dialog"
expanded=
"1"
>
...
@@ -879,6 +881,94 @@
...
@@ -879,6 +881,94 @@
<event
name=
"OnUpdateUI"
></event>
<event
name=
"OnUpdateUI"
></event>
</object>
</object>
</object>
</object>
<object
class=
"sizeritem"
expanded=
"1"
>
<property
name=
"border"
>
5
</property>
<property
name=
"flag"
>
wxALL
</property>
<property
name=
"proportion"
>
0
</property>
<object
class=
"wxCheckBox"
expanded=
"1"
>
<property
name=
"BottomDockable"
>
1
</property>
<property
name=
"LeftDockable"
>
1
</property>
<property
name=
"RightDockable"
>
1
</property>
<property
name=
"TopDockable"
>
1
</property>
<property
name=
"aui_layer"
></property>
<property
name=
"aui_name"
></property>
<property
name=
"aui_position"
></property>
<property
name=
"aui_row"
></property>
<property
name=
"best_size"
></property>
<property
name=
"bg"
></property>
<property
name=
"caption"
></property>
<property
name=
"caption_visible"
>
1
</property>
<property
name=
"center_pane"
>
0
</property>
<property
name=
"checked"
>
0
</property>
<property
name=
"close_button"
>
1
</property>
<property
name=
"context_help"
></property>
<property
name=
"context_menu"
>
1
</property>
<property
name=
"default_pane"
>
0
</property>
<property
name=
"dock"
>
Dock
</property>
<property
name=
"dock_fixed"
>
0
</property>
<property
name=
"docking"
>
Left
</property>
<property
name=
"enabled"
>
1
</property>
<property
name=
"fg"
></property>
<property
name=
"floatable"
>
1
</property>
<property
name=
"font"
></property>
<property
name=
"gripper"
>
0
</property>
<property
name=
"hidden"
>
0
</property>
<property
name=
"id"
>
wxID_ANY
</property>
<property
name=
"label"
>
Merge PTH and NPTH holes into one file
</property>
<property
name=
"max_size"
></property>
<property
name=
"maximize_button"
>
0
</property>
<property
name=
"maximum_size"
></property>
<property
name=
"min_size"
></property>
<property
name=
"minimize_button"
>
0
</property>
<property
name=
"minimum_size"
></property>
<property
name=
"moveable"
>
1
</property>
<property
name=
"name"
>
m_Check_Merge_PTH_NPTH
</property>
<property
name=
"pane_border"
>
1
</property>
<property
name=
"pane_position"
></property>
<property
name=
"pane_size"
></property>
<property
name=
"permission"
>
protected
</property>
<property
name=
"pin_button"
>
1
</property>
<property
name=
"pos"
></property>
<property
name=
"resize"
>
Resizable
</property>
<property
name=
"show"
>
1
</property>
<property
name=
"size"
></property>
<property
name=
"style"
></property>
<property
name=
"subclass"
></property>
<property
name=
"toolbar_pane"
>
0
</property>
<property
name=
"tooltip"
></property>
<property
name=
"validator_data_type"
></property>
<property
name=
"validator_style"
>
wxFILTER_NONE
</property>
<property
name=
"validator_type"
>
wxDefaultValidator
</property>
<property
name=
"validator_variable"
></property>
<property
name=
"window_extra_style"
></property>
<property
name=
"window_name"
></property>
<property
name=
"window_style"
></property>
<event
name=
"OnChar"
></event>
<event
name=
"OnCheckBox"
></event>
<event
name=
"OnEnterWindow"
></event>
<event
name=
"OnEraseBackground"
></event>
<event
name=
"OnKeyDown"
></event>
<event
name=
"OnKeyUp"
></event>
<event
name=
"OnKillFocus"
></event>
<event
name=
"OnLeaveWindow"
></event>
<event
name=
"OnLeftDClick"
></event>
<event
name=
"OnLeftDown"
></event>
<event
name=
"OnLeftUp"
></event>
<event
name=
"OnMiddleDClick"
></event>
<event
name=
"OnMiddleDown"
></event>
<event
name=
"OnMiddleUp"
></event>
<event
name=
"OnMotion"
></event>
<event
name=
"OnMouseEvents"
></event>
<event
name=
"OnMouseWheel"
></event>
<event
name=
"OnPaint"
></event>
<event
name=
"OnRightDClick"
></event>
<event
name=
"OnRightDown"
></event>
<event
name=
"OnRightUp"
></event>
<event
name=
"OnSetFocus"
></event>
<event
name=
"OnSize"
></event>
<event
name=
"OnUpdateUI"
></event>
</object>
</object>
</object>
</object>
</object>
</object>
<object
class=
"sizeritem"
expanded=
"1"
>
<object
class=
"sizeritem"
expanded=
"1"
>
...
...
pcbnew/dialogs/dialog_gendrill_base.h
View file @
b33fa0cc
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version
Oct 8 2012
)
// C++ code generated with wxFormBuilder (version
Feb 26 2014
)
// http://www.wxformbuilder.org/
// http://www.wxformbuilder.org/
//
//
// PLEASE DO "NOT" EDIT THIS FILE!
// PLEASE DO "NOT" EDIT THIS FILE!
...
@@ -48,6 +48,7 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
...
@@ -48,6 +48,7 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
wxRadioBox
*
m_Choice_Drill_Map
;
wxRadioBox
*
m_Choice_Drill_Map
;
wxCheckBox
*
m_Check_Mirror
;
wxCheckBox
*
m_Check_Mirror
;
wxCheckBox
*
m_Check_Minimal
;
wxCheckBox
*
m_Check_Minimal
;
wxCheckBox
*
m_Check_Merge_PTH_NPTH
;
wxRadioBox
*
m_Choice_Drill_Offset
;
wxRadioBox
*
m_Choice_Drill_Offset
;
wxStaticBoxSizer
*
m_DefaultViasDrillSizer
;
wxStaticBoxSizer
*
m_DefaultViasDrillSizer
;
wxStaticText
*
m_ViaDrillValue
;
wxStaticText
*
m_ViaDrillValue
;
...
...
pcbnew/exporters/gen_drill_report_files.cpp
View file @
b33fa0cc
...
@@ -360,7 +360,7 @@ bool EXCELLON_WRITER::GenDrillReportFile( const wxString& aFullFileName )
...
@@ -360,7 +360,7 @@ bool EXCELLON_WRITER::GenDrillReportFile( const wxString& aFullFileName )
for
(
;
;
)
for
(
;
;
)
{
{
BuildHolesList
(
layer1
,
layer2
,
BuildHolesList
(
layer1
,
layer2
,
gen_through_holes
?
false
:
true
,
gen_NPTH_holes
);
gen_through_holes
?
false
:
true
,
gen_NPTH_holes
,
false
);
totalHoleCount
=
0
;
totalHoleCount
=
0
;
...
...
pcbnew/exporters/gendrill_Excellon_writer.cpp
View file @
b33fa0cc
...
@@ -442,11 +442,13 @@ static bool CmpHoleDiameterValue( const HOLE_INFO& a, const HOLE_INFO& b )
...
@@ -442,11 +442,13 @@ static bool CmpHoleDiameterValue( const HOLE_INFO& a, const HOLE_INFO& b )
* param aGenerateNPTH_list :
* param aGenerateNPTH_list :
* true to create NPTH only list (with no plated holes)
* true to create NPTH only list (with no plated holes)
* false to created plated holes list (with no NPTH )
* false to created plated holes list (with no NPTH )
* param aMergePTHNPTH : if true, merge PTH and NPTH holes into one file by treating all holes as PTH
*/
*/
void
EXCELLON_WRITER
::
BuildHolesList
(
int
aFirstLayer
,
void
EXCELLON_WRITER
::
BuildHolesList
(
int
aFirstLayer
,
int
aLastLayer
,
int
aLastLayer
,
bool
aExcludeThroughHoles
,
bool
aExcludeThroughHoles
,
bool
aGenerateNPTH_list
)
bool
aGenerateNPTH_list
,
bool
aMergePTHNPTH
)
{
{
HOLE_INFO
new_hole
;
HOLE_INFO
new_hole
;
int
hole_value
;
int
hole_value
;
...
@@ -460,6 +462,11 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer,
...
@@ -460,6 +462,11 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer,
EXCHG
(
aFirstLayer
,
aLastLayer
);
EXCHG
(
aFirstLayer
,
aLastLayer
);
}
}
if
(
aGenerateNPTH_list
&&
aMergePTHNPTH
)
{
return
;
}
/* build hole list for vias
/* build hole list for vias
*/
*/
if
(
!
aGenerateNPTH_list
)
// vias are always plated !
if
(
!
aGenerateNPTH_list
)
// vias are always plated !
...
@@ -507,7 +514,7 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer,
...
@@ -507,7 +514,7 @@ void EXCELLON_WRITER::BuildHolesList( int aFirstLayer,
// Read and analyse pads
// Read and analyse pads
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
for
(
D_PAD
*
pad
=
module
->
Pads
();
pad
;
pad
=
pad
->
Next
()
)
{
{
if
(
!
aGenerateNPTH_list
&&
pad
->
GetAttribute
()
==
PAD_HOLE_NOT_PLATED
)
if
(
!
aGenerateNPTH_list
&&
pad
->
GetAttribute
()
==
PAD_HOLE_NOT_PLATED
&&
!
aMergePTHNPTH
)
continue
;
continue
;
if
(
aGenerateNPTH_list
&&
pad
->
GetAttribute
()
!=
PAD_HOLE_NOT_PLATED
)
if
(
aGenerateNPTH_list
&&
pad
->
GetAttribute
()
!=
PAD_HOLE_NOT_PLATED
)
...
...
pcbnew/exporters/gendrill_Excellon_writer.h
View file @
b33fa0cc
...
@@ -135,6 +135,7 @@ private:
...
@@ -135,6 +135,7 @@ private:
// (i.e inches or mm)
// (i.e inches or mm)
bool
m_mirror
;
bool
m_mirror
;
wxPoint
m_offset
;
// Drill offset ooordinates
wxPoint
m_offset
;
// Drill offset ooordinates
bool
m_mergePTHNPTH
;
std
::
vector
<
HOLE_INFO
>
m_holeListBuffer
;
// Buffer containing holes
std
::
vector
<
HOLE_INFO
>
m_holeListBuffer
;
// Buffer containing holes
std
::
vector
<
DRILL_TOOL
>
m_toolListBuffer
;
// Buffer containing tools
std
::
vector
<
DRILL_TOOL
>
m_toolListBuffer
;
// Buffer containing tools
...
@@ -146,6 +147,7 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
...
@@ -146,6 +147,7 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
m_conversionUnits
=
0
.
0001
;
m_conversionUnits
=
0
.
0001
;
m_unitsDecimal
=
false
;
m_unitsDecimal
=
false
;
m_mirror
=
false
;
m_mirror
=
false
;
m_mergePTHNPTH
=
false
;
m_minimalHeader
=
false
;
m_minimalHeader
=
false
;
}
}
...
@@ -177,11 +179,12 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
...
@@ -177,11 +179,12 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
* @param aMinimalHeader = true to use a minimal header (no comments, no info)
* @param aMinimalHeader = true to use a minimal header (no comments, no info)
* @param aOffset = drill coordinates offset
* @param aOffset = drill coordinates offset
*/
*/
void
SetOptions
(
bool
aMirror
,
bool
aMinimalHeader
,
wxPoint
aOffset
)
void
SetOptions
(
bool
aMirror
,
bool
aMinimalHeader
,
wxPoint
aOffset
,
bool
aMergePTHNPTH
)
{
{
m_mirror
=
aMirror
;
m_mirror
=
aMirror
;
m_offset
=
aOffset
;
m_offset
=
aOffset
;
m_minimalHeader
=
aMinimalHeader
;
m_minimalHeader
=
aMinimalHeader
;
m_mergePTHNPTH
=
aMergePTHNPTH
;
}
}
/**
/**
...
@@ -199,7 +202,8 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
...
@@ -199,7 +202,8 @@ public: EXCELLON_WRITER( BOARD* aPcb, wxPoint aOffset )
*/
*/
void
BuildHolesList
(
int
aFirstLayer
,
int
aLastLayer
,
void
BuildHolesList
(
int
aFirstLayer
,
int
aLastLayer
,
bool
aExcludeThroughHoles
,
bool
aExcludeThroughHoles
,
bool
aGenerateNPTH_list
);
bool
aGenerateNPTH_list
,
bool
aMergePTHNPTH
);
int
GetHolesCount
()
const
{
return
m_holeListBuffer
.
size
();
}
int
GetHolesCount
()
const
{
return
m_holeListBuffer
.
size
();
}
...
...
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