|
KiCad PCB EDA Suite
|
Create drill maps and drill reports and drill files. More...
#include <gendrill_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, REPORTER *aReporter=nullptr) |
| 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. | |
| const std::vector< wxString > & | GetCreatedFiles () const |
Protected Types | |
| enum class | TOOL_SUMMARY { PLATED , UNPLATED , BACKDRILL } |
| Selects which subset of m_toolListBuffer a summary covers. More... | |
Protected Member Functions | |
| bool | genDrillMapFile (const wxString &aFullFileName, PLOT_FORMAT aFormat) |
| Plot a map of drill marks for holes. | |
| void | buildHolesList (const DRILL_SPAN &aSpan, 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 PDF, POSTSCRIPT or other supported formats/. | |
| std::vector< DRILL_SPAN > | getUniqueLayerPairs () const |
| Get unique layer pairs by examining the micro and blind_buried vias. | |
| unsigned | printToolSummary (FILE *out, TOOL_SUMMARY aSummary) 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 (const DRILL_SPAN &aSpan, bool aNPTH, bool aMerge_PTH_NPTH) const |
| virtual const wxString | getProtectionFileName (const DRILL_SPAN &aSpan, IPC4761_FEATURES aFeature) const |
| const wxString | BuildFileFunctionAttributeString (const DRILL_SPAN &aSpan, TYPE_FILE aHoleType, bool aCompatNCdrill=false) const |
| GENDRILL_WRITER_BASE (BOARD *aPcb) | |
| void | AddCreatedFile (const wxString &aPath) |
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 |
| std::vector< wxString > | m_createdFiles |
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 206 of file gendrill_writer_base.h.
|
strongprotected |
Selects which subset of m_toolListBuffer a summary covers.
| Enumerator | |
|---|---|
| PLATED | Plated holes. |
| UNPLATED | Non-plated holes, excluding backdrills. |
| BACKDRILL | Backdrills, which are non-plated by construction. |
Definition at line 373 of file gendrill_writer_base.h.
| Enumerator | |
|---|---|
| PTH_FILE | |
| NPTH_FILE | |
| MIXED_FILE | |
Definition at line 216 of file gendrill_writer_base.h.
| Enumerator | |
|---|---|
| DECIMAL_FORMAT | |
| SUPPRESS_LEADING | |
| SUPPRESS_TRAILING | |
| KEEP_ZEROS | |
Definition at line 209 of file gendrill_writer_base.h.
|
inlinevirtual |
Definition at line 222 of file gendrill_writer_base.h.
|
inlineprotected |
Definition at line 442 of file gendrill_writer_base.h.
References DECIMAL_FORMAT, m_conversionUnits, m_mapFileFmt, m_merge_PTH_NPTH, m_pageInfo, m_pcb, m_unitsMetric, m_zeroFormat, and PDF.
Referenced by EXCELLON_WRITER::EXCELLON_WRITER(), and GERBER_WRITER::GERBER_WRITER().
|
inlineprotected |
Definition at line 453 of file gendrill_writer_base.h.
References m_createdFiles.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), EXCELLON_WRITER::writeBackdrillLayerPairFile(), and GERBER_WRITER::writeBackdrillLayerPairFile().
|
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 407 of file gendrill_writer_base.cpp.
References B_Cu, F_Cu, HOLE_INFO::m_Hole_Shape, m_holeListBuffer, DRILL_SPAN::m_IsBackdrill, m_pcb, MIXED_FILE, NPTH_FILE, DRILL_SPAN::Pair(), 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 78 of file gendrill_writer_base.cpp.
References cmpHoleSorting(), COUNTERBORE, COUNTERSINK, EnumerateDrillOperations(), HOLE_UNKNOWN, DRILL_TOOL::m_Diameter, DRILL_TOOL::m_Hole_NotPlated, DRILL_TOOL::m_HoleAttribute, m_holeListBuffer, m_merge_PTH_NPTH, DRILL_QUERY::m_MergePTHNPTH, DRILL_QUERY::m_NonPlatedOnly, m_pcb, DRILL_QUERY::m_Span, m_toolListBuffer, ToLegacyHoleList(), and USE_ATTRIB_FOR_HOLES.
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 352 of file gendrill_writer_base.cpp.
References _, AddCreatedFile(), B_Cu, buildHolesList(), F_Cu, genDrillMapFile(), GetDefaultPlotExtension(), getDrillFileName(), getHolesCount(), getUniqueLayerPairs(), DRILL_SPAN::m_IsNonPlatedFile, m_mapFileFmt, m_merge_PTH_NPTH, DRILL_SPAN::Pair(), 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 555 of file gendrill_writer_base.cpp.
References A4, AddGerberX2Header(), PLOTTER::AddLineToHeader(), ANGLE_HORIZONTAL, BOX2< Vec >::Centre(), PLOTTER::ClearHeaderLinesList(), KIFONT::METRICS::Default(), diameter_in_inches(), diameter_in_mm(), GERBER_PLOTTER::DisableApertMacros(), dummy, Dwgs_User, DXF, Edge_Cuts, PLOTTER::EndPlot(), From_UTF8(), GERBER, BOX2< Vec >::GetBottom(), getDefaultPenSize(), BOX2< Vec >::GetHeight(), getMarkerBestPenSize(), GetOffset(), PLOTTER::GetPlotterType(), PAGE_INFO::GetSizeIU(), BOX2< Vec >::GetWidth(), BOX2< Vec >::GetX(), GR_TEXT_H_ALIGN_LEFT, GR_TEXT_V_ALIGN_CENTER, HOLE_PAD_CASTELLATED, HOLE_PAD_PRESSFIT, HPGL, INCH, KI_FALLTHROUGH, KiROUND(), TEXT_ATTRIBUTES::m_Angle, DRILL_TOOL::m_Diameter, TEXT_ATTRIBUTES::m_Halign, DRILL_TOOL::m_HasPostMachining, DRILL_TOOL::m_Hole_NotPlated, DRILL_TOOL::m_HoleAttribute, DRILL_TOOL::m_IsBackdrill, DRILL_TOOL::m_MaxStubLength, DRILL_TOOL::m_MinStubLength, 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(), MM, PLOTTER::OpenFile(), PCB_SHAPE_T, pcbIUScale, PDF, plotDrillMarks(), BRDITEMS_PLOTTER::PlotShape(), PLOTTER::PlotText(), POST, scale, PLOTTER::SetColorMode(), PLOTTER::SetCreator(), PLOTTER::SetCurrentLineWidth(), KIGFX::RENDER_SETTINGS::SetDefaultPenWidth(), PLOTTER::SetGerberCoordinatesFormat(), PCB_SHAPE::SetLayer(), BRDITEMS_PLOTTER::SetLayerSet(), PLOTTER::SetPageSettings(), EDA_ITEM::SetParentGroup(), PLOTTER::SetRenderSettings(), DXF_PLOTTER::SetUnits(), PLOTTER::SetViewport(), PLOTTER::StartPlot(), SVG, text, COLOR4D::UNSPECIFIED, GERBER_PLOTTER::UseX2format(), GERBER_PLOTTER::UseX2NetAttributes(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by CreateMapFilesSet().
| bool GENDRILL_WRITER_BASE::GenDrillReportFile | ( | const wxString & | aFullFileName, |
| REPORTER * | aReporter = nullptr ) |
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 899 of file gendrill_writer_base.cpp.
References _, LSET::AllCuMask(), B_Cu, BACKDRILL, buildHolesList(), DRILL_SPAN::DrillEndLayer(), DRILL_SPAN::DrillStartLayer(), F_Cu, getDrillFileName(), GetISO8601CurrentDateTime(), getUniqueLayerPairs(), layerName(), DRILL_SPAN::m_IsBackdrill, m_merge_PTH_NPTH, m_pcb, DRILL_SPAN::Pair(), PLATED, printToolSummary(), REPORTER::Report(), RPT_SEVERITY_ERROR, TO_UTF8, ToLAYER_ID(), and UNPLATED.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PCBNEW_JOBS_HANDLER::JobExportDrill(), and DIALOG_GENDRILL::onGenReportFile().
|
inline |
Definition at line 326 of file gendrill_writer_base.h.
References m_createdFiles.
|
inline |
Returns the file extension of the drill writer format.
Definition at line 324 of file gendrill_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 243 of file gendrill_writer_base.cpp.
References LSET::AllCuMask(), B_Cu, DRILL_SPAN::DrillEndLayer(), DRILL_SPAN::DrillStartLayer(), F_Cu, layerPairName(), m_drillFileExtension, DRILL_SPAN::m_IsBackdrill, m_pcb, and DRILL_SPAN::Pair().
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), GenDrillReportFile(), and GERBER_WRITER::getDrillFileName().
|
inlineprotected |
Definition at line 356 of file gendrill_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 237 of file gendrill_writer_base.h.
References m_offset.
Referenced by genDrillMapFile().
|
protectedvirtual |
| aPair | is the layer pair. |
| aFeature | Is the protection feature represented by the file |
Definition at line 298 of file gendrill_writer_base.cpp.
References CAPPED, COVERED_BACK, COVERED_FRONT, FILLED, layerName(), layerPairName(), m_drillFileExtension, m_pcb, DRILL_SPAN::Pair(), PLUGGED_BACK, PLUGGED_FRONT, TENTED_BACK, and TENTED_FRONT.
Referenced by GERBER_WRITER::CreateDrillandMapFilesSet().
|
protected |
Get unique layer pairs by examining the micro and blind_buried vias.
Definition at line 164 of file gendrill_writer_base.cpp.
References B_Cu, PCB_TYPE_COLLECTOR::Collect(), F_Cu, COLLECTOR::GetCount(), m_pcb, PCB_VIA_T, UNDEFINED_LAYER, and via.
Referenced by EXCELLON_WRITER::CreateDrillandMapFilesSet(), GERBER_WRITER::CreateDrillandMapFilesSet(), CreateMapFilesSet(), and GenDrillReportFile().
|
protected |
Definition at line 214 of file gendrill_writer_base.cpp.
Referenced by GenDrillReportFile(), getProtectionFileName(), and layerPairName().
|
protected |
Definition at line 233 of file gendrill_writer_base.cpp.
References layerName().
Referenced by EXCELLON_WRITER::getBackdrillLayerPairFileName(), GERBER_WRITER::getBackdrillLayerPairFileName(), getDrillFileName(), and getProtectionFileName().
|
protected |
Write the drill marks in PDF, 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 (PDF, POSTSCRIPT ... plotter). |
Definition at line 1045 of file gendrill_writer_base.cpp.
References 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::SetCurrentLineWidth(), PLOTTER::ThickOval(), and PLOTTER::USE_DEFAULT_LINE_WIDTH.
Referenced by genDrillMapFile().
|
protected |
Print m_toolListBuffer[] tools to aOut and returns total hole count.
| aOut | is the current OUTPUTFORMATTER to print summary. |
| aSummary | selects which tools the summary covers. |
Definition at line 1071 of file gendrill_writer_base.cpp.
References BACKDRILL, diameter_in_inches(), diameter_in_mm(), HOLE_PAD_CASTELLATED, HOLE_PAD_PRESSFIT, DRILL_TOOL::m_Diameter, DRILL_TOOL::m_Hole_NotPlated, DRILL_TOOL::m_HoleAttribute, DRILL_TOOL::m_IsBackdrill, DRILL_TOOL::m_OvalCount, m_toolListBuffer, DRILL_TOOL::m_TotalCount, PLATED, and UNPLATED.
Referenced by GenDrillReportFile().
|
inline |
Initialize the format for the drill map file.
| aMapFmt | a PlotFormat value (one of 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 255 of file gendrill_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 232 of file gendrill_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 246 of file gendrill_writer_base.h.
References m_pageInfo.
Referenced by DIALOG_GENDRILL::genDrillAndMapFiles().
|
protected |
Definition at line 461 of file gendrill_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), EXCELLON_WRITER::EXCELLON_WRITER(), EXCELLON_WRITER::formatLinearValue(), GENDRILL_WRITER_BASE(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::SetFormat(), and GERBER_WRITER::SetFormat().
|
protected |
Definition at line 473 of file gendrill_writer_base.h.
Referenced by AddCreatedFile(), and GetCreatedFiles().
|
protected |
Definition at line 456 of file gendrill_writer_base.h.
Referenced by EXCELLON_WRITER::EXCELLON_WRITER(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::getBackdrillLayerPairFileName(), GERBER_WRITER::getBackdrillLayerPairFileName(), GetDrillFileExt(), getDrillFileName(), and getProtectionFileName().
|
protected |
Definition at line 466 of file gendrill_writer_base.h.
Referenced by BuildFileFunctionAttributeString(), buildHolesList(), EXCELLON_WRITER::createDrillFile(), GERBER_WRITER::createDrillFile(), GERBER_WRITER::createProtectionFile(), getHolesCount(), GERBER_WRITER::hasViaType(), and plotDrillMarks().
|
protected |
Definition at line 469 of file gendrill_writer_base.h.
Referenced by CreateMapFilesSet(), GENDRILL_WRITER_BASE(), and SetMapFileFormat().
|
protected |
Definition at line 465 of file gendrill_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 464 of file gendrill_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), GERBER_WRITER::createDrillFile(), GERBER_WRITER::createProtectionFile(), EXCELLON_WRITER::GetOffset(), GetOffset(), EXCELLON_WRITER::SetOptions(), and GERBER_WRITER::SetOptions().
|
protected |
Definition at line 471 of file gendrill_writer_base.h.
Referenced by GENDRILL_WRITER_BASE(), genDrillMapFile(), and SetPageInfo().
|
protected |
Definition at line 455 of file gendrill_writer_base.h.
Referenced by BuildFileFunctionAttributeString(), buildHolesList(), GERBER_WRITER::createDrillFile(), GERBER_WRITER::createProtectionFile(), GENDRILL_WRITER_BASE(), genDrillMapFile(), GenDrillReportFile(), EXCELLON_WRITER::getBackdrillLayerPairFileName(), GERBER_WRITER::getBackdrillLayerPairFileName(), getDrillFileName(), getProtectionFileName(), and getUniqueLayerPairs().
|
protected |
Definition at line 459 of file gendrill_writer_base.h.
Referenced by GERBER_WRITER::createDrillFile(), GERBER_WRITER::createProtectionFile(), EXCELLON_WRITER::SetFormat(), GERBER_WRITER::SetFormat(), EXCELLON_WRITER::writeCoordinates(), and EXCELLON_WRITER::writeEXCELLONHeader().
|
protected |
Definition at line 467 of file gendrill_writer_base.h.
Referenced by buildHolesList(), EXCELLON_WRITER::createDrillFile(), genDrillMapFile(), and printToolSummary().
|
protected |
Definition at line 457 of file gendrill_writer_base.h.
Referenced by EXCELLON_WRITER::createDrillFile(), EXCELLON_WRITER::formatLinearValue(), GENDRILL_WRITER_BASE(), genDrillMapFile(), GERBER_WRITER::GERBER_WRITER(), EXCELLON_WRITER::SetFormat(), and EXCELLON_WRITER::writeEXCELLONHeader().
|
protected |
Definition at line 458 of file gendrill_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().