KiCad PCB EDA Suite
|
Create drill maps and drill reports and drill files. More...
#include <gendrill_file_writer_base.h>
Public Types | |
enum | ZEROS_FMT { DECIMAL_FORMAT , SUPPRESS_LEADING , SUPPRESS_TRAILING , KEEP_ZEROS } |
enum | TYPE_FILE { PTH_FILE , NPTH_FILE , MIXED_FILE } |
Public Member Functions | |
virtual | ~GENDRILL_WRITER_BASE () |
void | SetMergeOption (bool aMerge) |
Set the option to make separate drill files for PTH and NPTH. | |
VECTOR2I | GetOffset () |
Return the plot offset (usually the position of the drill/place origin). | |
void | SetPageInfo (const PAGE_INFO *aPageInfo) |
Set the page info used to plot drill maps. | |
void | SetMapFileFormat (PLOT_FORMAT aMapFmt) |
Initialize the format for the drill map file. | |
bool | CreateMapFilesSet (const wxString &aPlotDirectory, REPORTER *aReporter=nullptr) |
Create the full set of map files for the board, in PS, PDF ... format (use SetMapFileFormat() to select the format). | |
bool | GenDrillReportFile (const wxString &aFullFileName) |
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 there is only one report for all drill files even when buried or blinds vias exist. | |
wxString | GetDrillFileExt () const |
Returns the file extension of the drill writer format. | |
Protected Member Functions | |
bool | genDrillMapFile (const wxString &aFullFileName, PLOT_FORMAT aFormat) |
Plot a map of drill marks for holes. | |
void | buildHolesList (DRILL_LAYER_PAIR aLayerPair, bool aGenerateNPTH_list) |
Create the list of holes and tools for a given board. | |
int | getHolesCount () const |
bool | plotDrillMarks (PLOTTER *aPlotter) |
Write the drill marks in HPGL, POSTSCRIPT or other supported formats/. | |
std::vector< DRILL_LAYER_PAIR > | getUniqueLayerPairs () const |
Get unique layer pairs by examining the micro and blind_buried vias. | |
unsigned | printToolSummary (OUTPUTFORMATTER &aOut, bool aSummaryNPTH) const |
Print m_toolListBuffer[] tools to aOut and returns total hole count. | |
const std::string | layerPairName (DRILL_LAYER_PAIR aPair) const |
const std::string | layerName (PCB_LAYER_ID aLayer) const |
virtual const wxString | getDrillFileName (DRILL_LAYER_PAIR aPair, bool aNPTH, bool aMerge_PTH_NPTH) const |
const wxString | BuildFileFunctionAttributeString (DRILL_LAYER_PAIR aLayerPair, TYPE_FILE aHoleType, bool aCompatNCdrill=false) const |
GENDRILL_WRITER_BASE (BOARD *aPcb) | |
Protected Attributes | |
BOARD * | m_pcb |
wxString | m_drillFileExtension |
bool | m_unitsMetric |
ZEROS_FMT | m_zeroFormat |
DRILL_PRECISION | m_precision |
double | m_conversionUnits |
VECTOR2I | m_offset |
bool | m_merge_PTH_NPTH |
std::vector< HOLE_INFO > | m_holeListBuffer |
std::vector< DRILL_TOOL > | m_toolListBuffer |
PLOT_FORMAT | m_mapFileFmt |
const PAGE_INFO * | m_pageInfo |
Create drill maps and drill reports and drill files.
Drill files are created by specialized derived classes, depending on the file format.
Definition at line 152 of file gendrill_file_writer_base.h.
Enumerator | |
---|---|
PTH_FILE | |
NPTH_FILE | |
MIXED_FILE |
Definition at line 162 of file gendrill_file_writer_base.h.
Enumerator | |
---|---|
DECIMAL_FORMAT | |
SUPPRESS_LEADING | |
SUPPRESS_TRAILING | |
KEEP_ZEROS |
Definition at line 155 of file gendrill_file_writer_base.h.
|
inlinevirtual |
Definition at line 168 of file gendrill_file_writer_base.h.
|
inlineprotected |
Definition at line 368 of file gendrill_file_writer_base.h.
References DECIMAL_FORMAT, m_conversionUnits, m_mapFileFmt, m_merge_PTH_NPTH, m_pageInfo, m_pcb, m_unitsMetric, and m_zeroFormat.
|
protected |
aLayerPair | is the layer pair (Drill from rom first layer to second layer) |
aHoleType | is type of drill file (PTH, NPTH, mixed) |
aCompatNCdrill | is true when generating NC (Excellon) compatible drill file |
Definition at line 366 of file gendrill_file_writer_base.cpp.
References B_Cu, F_Cu, BOARD::GetCopperLayerCount(), HOLE_INFO::m_Hole_Shape, m_holeListBuffer, m_pcb, MIXED_FILE, NPTH_FILE, and text.
Referenced by GERBER_WRITER::createDrillFile(), and EXCELLON_WRITER::writeEXCELLONHeader().
|
protected |
Create the list of holes and tools for a given board.
The list is sorted by increasing drill size. Only holes included within aLayerPair are listed. If aLayerPair identifies with [F_Cu, B_Cu], then pad holes are always included also.
aLayerPair | is an inclusive range of layers. |
aGenerateNPTH_list | : true to create NPTH only list (with no plated holes) false to created plated holes list (with no NPTH ) |
Definition at line 67 of file gendrill_file_writer_base.cpp.
References ANGLE_0, B_Cu, cmpHoleSorting(), F_Cu, BOARD::Footprints(), DRILL_TOOL::m_Diameter, HOLE_INFO::m_Hole_Bottom_Layer, HOLE_INFO::m_Hole_Diameter, DRILL_TOOL::m_Hole_NotPlated, HOLE_INFO::m_Hole_NotPlated, HOLE_INFO::m_Hole_Orient, HOLE_INFO::m_Hole_Pos, HOLE_INFO::m_Hole_Shape, HOLE_INFO::m_Hole_Size, HOLE_INFO::m_Hole_Top_Layer, DRILL_TOOL::m_HoleAttribute, HOLE_INFO::m_HoleAttribute, m_holeListBuffer, HOLE_INFO::m_ItemParent, m_merge_PTH_NPTH, m_pcb, HOLE_INFO::m_Tool_Reference, m_toolListBuffer, pad, PCB_VIA_T, BOARD::Tracks(), USE_ATTRIB_FOR_HOLES, via, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), and GenDrillReportFile().
bool GENDRILL_WRITER_BASE::CreateMapFilesSet | ( | const wxString & | aPlotDirectory, |
REPORTER * | aReporter = nullptr |
||
) |
Create the full set of map files for the board, in PS, PDF ... format (use SetMapFileFormat() to select the format).
File names are computed from the board name and layer ID.
aPlotDirectory | is the output folder. |
aReporter | is a REPORTER to return activity or any message (can be NULL) |
Definition at line 305 of file gendrill_file_writer_base.cpp.
References _, B_Cu, buildHolesList(), F_Cu, genDrillMapFile(), GetDefaultPlotExtension(), getDrillFileName(), getHolesCount(), getUniqueLayerPairs(), m_mapFileFmt, m_merge_PTH_NPTH, REPORTER::Report(), RPT_SEVERITY_ACTION, and RPT_SEVERITY_ERROR.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), and GERBER_WRITER::CreateDrillandMapFilesSet().
|
protected |
Plot a map of drill marks for holes.
Hole list must be created before calling this function, by buildHolesList() for the right holes set (PTH, NPTH, buried/blind vias ...) the paper sheet to use to plot the map is set in m_pageInfo ( calls SetPageInfo() to set it ). If NULL, A4 format will be used.
aFullFileName | is the full filename of the map file to create. |
aFormat | is one of the supported plot formats (see enum PlotFormat ). |
Definition at line 88 of file gen_drill_report_files.cpp.
References PAGE_INFO::A4, AddGerberX2Header(), PLOTTER::AddLineToHeader(), ANGLE_HORIZONTAL, BOX2< Vec >::Centre(), PLOTTER::ClearHeaderLinesList(), KIFONT::METRICS::Default(), diameter_in_inches(), diameter_in_mm(), GERBER_PLOTTER::DisableApertMacros(), BOARD::Drawings(), dummy, Dwgs_User, Edge_Cuts, PLOTTER::EndPlot(), BOARD::Footprints(), From_UTF8(), BOARD::GetBoardEdgesBoundingBox(), BOX2< Vec >::GetBottom(), getDefaultPenSize(), BOX2< Vec >::GetHeight(), getMarkerBestPenSize(), GetOffset(), PLOTTER::GetPlotterType(), PAGE_INFO::GetSizeIU(), BOARD::GetVisibleLayers(), BOX2< Vec >::GetWidth(), BOX2< Vec >::GetX(), GR_TEXT_H_ALIGN_LEFT, GR_TEXT_V_ALIGN_CENTER, EDA_IU_SCALE::IU_PER_MILS, EDA_IU_SCALE::IU_PER_MM, KI_FALLTHROUGH, KiROUND(), TEXT_ATTRIBUTES::m_Angle, DRILL_TOOL::m_Diameter, TEXT_ATTRIBUTES::m_Halign, DRILL_TOOL::m_Hole_NotPlated, TEXT_ATTRIBUTES::m_Multiline, DRILL_TOOL::m_OvalCount, m_pageInfo, m_pcb, TEXT_ATTRIBUTES::m_Size, TEXT_ATTRIBUTES::m_StrokeWidth, m_toolListBuffer, DRILL_TOOL::m_TotalCount, m_unitsMetric, TEXT_ATTRIBUTES::m_Valign, PLOTTER::Marker(), EDA_IU_SCALE::mmToIU(), PLOTTER::OpenFile(), PCB_SHAPE_T, pcbIUScale, plotDrillMarks(), BRDITEMS_PLOTTER::PlotShape(), PLOTTER::PlotText(), scale, PLOTTER::SetColorMode(), PLOTTER::SetCreator(), PLOTTER::SetCurrentLineWidth(), KIGFX::RENDER_SETTINGS::SetDefaultPenWidth(), PLOTTER::SetGerberCoordinatesFormat(), PCB_SHAPE::SetLayer(), BRDITEMS_PLOTTER::SetLayerSet(), PLOTTER::SetPageSettings(), BOARD_ITEM::SetParentGroup(), PLOTTER::SetRenderSettings(), DXF_PLOTTER::SetUnits(), PLOTTER::SetViewport(), BOARD::SetVisibleLayers(), PLOTTER::StartPlot(), text, GERBER_PLOTTER::UseX2format(), GERBER_PLOTTER::UseX2NetAttributes(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by CreateMapFilesSet().
bool GENDRILL_WRITER_BASE::GenDrillReportFile | ( | const wxString & | aFullFileName | ) |
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 there is only one report for all drill files even when buried or blinds vias exist.
Here is a sample created by this function: Drill report for F:/tmp/interf_u/interf_u.brd Created on 04/10/2012 20:48:38 Selected Drill Unit: Imperial (inches)
Drill report for plated through holes : T1 0,025" 0,64mm (88 holes) T2 0,031" 0,79mm (120 holes) T3 0,032" 0,81mm (151 holes) (with 1 slot) T4 0,040" 1,02mm (43 holes) T5 0,079" 2,00mm (1 hole) (with 1 slot) T6 0,120" 3,05mm (1 hole) (with 1 slot)
Total plated holes count 404
Drill report for buried and blind vias :
Drill report for holes from layer Soudure to layer Interne1 :
Total plated holes count 0
Drill report for holes from layer Interne1 to layer Interne2 : T1 0,025" 0,64mm (3 holes) Total plated holes count 3 Drill report for holes from layer Interne2 to layer Composant : T1 0,025" 0,64mm (1 hole)
Total plated holes count 1
Drill report for unplated through holes : T1 0,120" 3,05mm (1 hole) (with 1 slot)
Total unplated holes count 1
aFullFileName | is the name of the file to create. |
Definition at line 409 of file gen_drill_report_files.cpp.
References LSET::AllCuMask(), B_Cu, buildHolesList(), F_Cu, getDrillFileName(), BOARD::GetEnabledLayers(), BOARD::GetFileName(), GetISO8601CurrentDateTime(), BOARD::GetLayerName(), getUniqueLayerPairs(), layerName(), m_merge_PTH_NPTH, m_pcb, OUTPUTFORMATTER::Print(), printToolSummary(), LSET::Seq(), TO_UTF8, and ToLAYER_ID().
Referenced by DIALOG_GENDRILL::OnGenReportFile().
|
inline |
Returns the file extension of the drill writer format.
Definition at line 270 of file gendrill_file_writer_base.h.
References m_drillFileExtension.
|
protectedvirtual |
aPair | is the layer pair. |
aNPTH | use true to generate the filename of NPTH holes. |
aMerge_PTH_NPTH | use true to generate the filename of a file which containd both NPH and NPTH holes. |
Reimplemented in GERBER_WRITER.
Definition at line 274 of file gendrill_file_writer_base.cpp.
References B_Cu, F_Cu, BOARD::GetFileName(), layerPairName(), m_drillFileExtension, and m_pcb.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), GenDrillReportFile(), and GERBER_WRITER::getDrillFileName().
|
inlineprotected |
Definition at line 300 of file gendrill_file_writer_base.h.
References m_holeListBuffer.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), and CreateMapFilesSet().
|
inline |
Return the plot offset (usually the position of the drill/place origin).
Definition at line 183 of file gendrill_file_writer_base.h.
References m_offset.
Referenced by genDrillMapFile().
|
protected |
Get unique layer pairs by examining the micro and blind_buried vias.
Definition at line 211 of file gendrill_file_writer_base.cpp.
References B_Cu, PCB_TYPE_COLLECTOR::Collect(), F_Cu, COLLECTOR::GetCount(), PCB_VIA::LayerPair(), m_pcb, and PCB_VIA_T.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), and GenDrillReportFile().
|
protected |
Definition at line 245 of file gendrill_file_writer_base.cpp.
References B_Cu, F_Cu, and StrPrintf().
Referenced by GenDrillReportFile(), and layerPairName().
|
protected |
Definition at line 264 of file gendrill_file_writer_base.cpp.
References layerName().
Referenced by getDrillFileName().
|
protected |
Write the drill marks in HPGL, POSTSCRIPT or other supported formats/.
Each hole size has a symbol (circle, cross X, cross + ...) up to PLOTTER::MARKER_COUNT different values. If more than PLOTTER::MARKER_COUNT different values, these other values share the same mark shape.
aPlotter | is a PLOTTER instance (HPGL, POSTSCRIPT ... plotter). |
Definition at line 511 of file gen_drill_report_files.cpp.
References PLOTTER::FlashPadOval(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), getMarkerBestPenSize(), getSketchOvalBestPenSize(), HOLE_INFO::m_Hole_Diameter, HOLE_INFO::m_Hole_Orient, HOLE_INFO::m_Hole_Pos, HOLE_INFO::m_Hole_Shape, HOLE_INFO::m_Hole_Size, m_holeListBuffer, HOLE_INFO::m_Tool_Reference, PLOTTER::Marker(), PLOTTER::RenderSettings(), PLOTTER::SetCurrentLineWidth(), KIGFX::RENDER_SETTINGS::SetDefaultPenWidth(), and SKETCH.
Referenced by genDrillMapFile().
|
protected |
Print m_toolListBuffer[] tools to aOut and returns total hole count.
aOut | is the current OUTPUTFORMATTER to print summary. |
aSummaryNPTH | is true to print summary for NPTH, false for PTH. |
Definition at line 546 of file gen_drill_report_files.cpp.
References diameter_in_inches(), diameter_in_mm(), DRILL_TOOL::m_Diameter, DRILL_TOOL::m_Hole_NotPlated, DRILL_TOOL::m_OvalCount, m_toolListBuffer, DRILL_TOOL::m_TotalCount, and OUTPUTFORMATTER::Print().
Referenced by GenDrillReportFile().
|
inline |
Initialize the format for the drill map file.
aMapFmt | a PlotFormat value (one of PLOT_FORMAT_HPGL, PLOT_FORMAT_POST, PLOT_FORMAT_GERBER, PLOT_FORMAT_DXF, PLOT_FORMAT_SVG, PLOT_FORMAT_PDF the most useful are PLOT_FORMAT_PDF and PLOT_FORMAT_POST. |
Definition at line 201 of file gendrill_file_writer_base.h.
References m_mapFileFmt.
Referenced by DIALOG_GENDRILL::GenDrillAndMapFiles(), and PCBNEW_JOBS_HANDLER::JobExportDrill().
|
inline |
Set the option to make separate drill files for PTH and NPTH.
aMerge | set to true to make only one file containing PTH and NPTH or false to create 2 separate files. |
Definition at line 178 of file gendrill_file_writer_base.h.
References m_merge_PTH_NPTH.
Referenced by DIALOG_GENDRILL::OnGenReportFile().
|
inline |
Set the page info used to plot drill maps.
If NULL, a A4 page format will be used.
aPageInfo | is a reference to the page info, usually used to plot/display the board. |
Definition at line 192 of file gendrill_file_writer_base.h.
References m_pageInfo.
|
protected |
Definition at line 385 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), EXCELLON_WRITER::EXCELLON_WRITER(), GENDRILL_WRITER_BASE(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::SetFormat(), and GERBER_WRITER::SetFormat().
|
protected |
Definition at line 380 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::EXCELLON_WRITER(), GERBER_WRITER::GERBER_WRITER(), GetDrillFileExt(), and getDrillFileName().
|
protected |
Definition at line 390 of file gendrill_file_writer_base.h.
Referenced by BuildFileFunctionAttributeString(), buildHolesList(), EXCELLON_WRITER::createDrillFile(), GERBER_WRITER::createDrillFile(), getHolesCount(), and plotDrillMarks().
|
protected |
Definition at line 393 of file gendrill_file_writer_base.h.
Referenced by CreateMapFilesSet(), GENDRILL_WRITER_BASE(), and SetMapFileFormat().
|
protected |
Definition at line 389 of file gendrill_file_writer_base.h.
Referenced by buildHolesList(), EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), EXCELLON_WRITER::EXCELLON_WRITER(), GENDRILL_WRITER_BASE(), GenDrillReportFile(), GERBER_WRITER::GERBER_WRITER(), SetMergeOption(), EXCELLON_WRITER::SetOptions(), and GERBER_WRITER::SetOptions().
|
protected |
Definition at line 388 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), GERBER_WRITER::createDrillFile(), EXCELLON_WRITER::GetOffset(), GetOffset(), EXCELLON_WRITER::SetOptions(), and GERBER_WRITER::SetOptions().
|
protected |
Definition at line 395 of file gendrill_file_writer_base.h.
Referenced by GENDRILL_WRITER_BASE(), genDrillMapFile(), and SetPageInfo().
|
protected |
Definition at line 379 of file gendrill_file_writer_base.h.
Referenced by BuildFileFunctionAttributeString(), buildHolesList(), GERBER_WRITER::createDrillFile(), GENDRILL_WRITER_BASE(), genDrillMapFile(), GenDrillReportFile(), getDrillFileName(), and getUniqueLayerPairs().
|
protected |
Definition at line 383 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::SetFormat(), GERBER_WRITER::SetFormat(), EXCELLON_WRITER::writeCoordinates(), and EXCELLON_WRITER::writeEXCELLONHeader().
|
protected |
Definition at line 391 of file gendrill_file_writer_base.h.
Referenced by buildHolesList(), EXCELLON_WRITER::createDrillFile(), genDrillMapFile(), and printToolSummary().
|
protected |
Definition at line 381 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), GENDRILL_WRITER_BASE(), genDrillMapFile(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::SetFormat(), EXCELLON_WRITER::writeCoordinates(), and EXCELLON_WRITER::writeEXCELLONHeader().
|
protected |
Definition at line 382 of file gendrill_file_writer_base.h.
Referenced by EXCELLON_WRITER::EXCELLON_WRITER(), GENDRILL_WRITER_BASE(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::SetFormat(), EXCELLON_WRITER::writeCoordinates(), and EXCELLON_WRITER::writeEXCELLONHeader().