ZofzPCB 3D Gerber Viewer Help - DRAFT

ver 0.5, 30-08-2015

  1. Reading Gerber Files
    1. Auto
    2. Manual Compose
    3. File format and aperture file
    4. Board Outline, using a meta drawings
    5. Board Outline, identifying the PCB outline
    6. Automatic fit of image, drills and netlist
    7. Stackup file save/load
    8. Rendered board file save/load
  2. Netlist and IPC356 file
  3. Navigation
  4. Right Panel; Layers & effects
  5. Measurements
    1. Position Markers
    2. Net-Marker
    3. Right-Mouse-Button click menu
  6. Colors
    1. Color Presets
    2. Color Picker
  7. View Menu - still some more effects
  8. Screenshot
  9. Autopilot
  10. Connection between Program and Website
  11. Bug Reports
  12. CrossCheck page
  13. The “PCB Rollercoaster” - screensaver page
  14. Home Page



1. Reading Gerber Files

Auto Menu

1.1 Auto

This is the most convenient way, assuming it works. If this is not the case, see read the following sections.
The purpose of "Auto Load" is to match gerber/drill files to assumed functions in PCB definition.
This feature is based on a file name rules set.
Welcome in the file name hell. Everyone invents its own schema! In pursuit to reverse this blossom of creativity, a kind of mask rules are implemented. For each rule set, for matching files, matching points are summed up. The rule with the most of points is winning. I will assist you if you like to create one more set. Especially if this is related to a particular CAD vendor default convention.
Rules text-file access via: Windows-Start-Button / Programs / ZofzPCB / CAM_Load_Rules.txt
or file path: "%APPDATA%\ZofzPCB\CAM_Load_Rules.txt


  1. Command: File / Compose New / Auto
  2. The following dialog box will appear:
    Auto-Browse dialog
  3. Select Folder ( and mask, if needed)
    Summary of matching files is displayed on the right side of the above dialog.
  4. Press "Auto Load" (You may be asked to allow erase of the current project data)
  5. Layer Stackup is displayed - giving a possibility to review Gerber files assignment to particular layers, drill and ipc356-"netlist" slots.
  6. Press OK: - Read & Render
    The board will be flattened, that is negative and positive constructs are converted to simple shapes.
    Next, triangulated, so the Direct3D can display the PCB model.
  7. In case of problems, refer to the following sections.

1.2 Manual Compose

Command: File / Compose New / Manual
This command clears current project data. (You may be asked to allow erase of the current project data)

Assign file function

Manual Compose

First step is selecting files for the project and divide the files in 3 categories: : layer, drill, netlist.
Left side of the dialog is a file explorer interface. Right side of the dialog is a Layer Stack list, a Drill Plates list and the netlist file placeholder.
(Multi)Selected files from the left file explorer are inserted as layers on the right stackup list, by pressing Insert File To Layer Stack button.
There is also Insert Void To Layer Stack button, inserting core or prepreg layers (not associated with any Gerber drawing file).
Drill files should be placed to the Drill Plates List, using Insert File To Drill Plates button.
The IPC356 file (if provided) should be placed in its own slot "IPC356 - Nets - Pads - Components, using Set File As IPC-356 button.

Organize Layer Stack

Edit Stackup dialog

The stack list represents order of layers listed from top ("component side") to bottom ("solder side"). Each entry represents a layer in the PCB layer stack. Some layers are associated with gerber files (e.g. copper), some not (e.g. core). First column defines the type of the particular layer (copper, soldermask, ...). You can reassign the layer type for selected layer or layers. Editing layers order is done by move of the selected layer(s) up and down, using up/down buttons.
One special layer, bottom-most position, should be the "board outline". It may or may not be related to a gerber file. This is a placeholder for the PCB total thickness value.
When all Gerber layers are identified, it is possible to enter the total thickness of the PCB in the Board Outline's Thickness field.
Set Equal Spacing button adds missing core layers and sets the thickness of the core layers simply equally, so the total thickness of the board matches the requested value.
For information about board outline definition, please refer to the next point.
Note: Some layers are negative and associated Gerber files does not declare it or declares it wrong. In such rare case please use "default negative" e.t.c.

Organize Drill Plates

Edit Drill dialog

Note: The software automatically detects if the provided drill file is in a Excellon format or in Gerber format.
Very often a PCB project contains only one drill file. In all other cases, it is needed to define function of all the provided drill files.
For each selected drill file it is possible to define from/to copper layer number and if the holes defined by this file are metal-plated or not.
Routing and drill files does not need to be separated or declared as routing (or drill).

OK: - Read & Render
The board will be flattened, that is negative and positive constructs are converted to simple shapes.
Next, triangulated, so the Direct3D can display the PCB model.
In case there is a need to interrupt the process, folloeing options are available:

  1. Stop At Next Checkpoint
    The process will be stopped on the end of all currently performed tasks. No new actions will be started.
  2. Stop Now Dangerously
    The process is stoped immediatelly. Currently allocated memory will leak. It is not certain if the process might be restarted without restarting of the program.
In case of problems, refer to the following sections.


1.3 File format and aperture file

3 file format popup dialogs
Do not change options described here, unless the gerber files are generated by old or incompatible CAD exporter, or are abnormal in other way.
  1. Gerber file options
    RS27D button.
    Contemporary format RS-274-X should define own apertures and all parameters needed to create layer drawing.
    Sometimes, only subset of parameters is defined by the Gerber file.
    Very rarely we will have to deal with pure "D" format, where there are many settings to define by the operator.
    Parameters set in the associated dialog are "default" in this sense, that if there are explicit definitions in the Gerber file, those override the defaults.
    "Negative" default parameter is defined per layer, in the Layer Stack list.
  2. Aperture file
    if needed, can be added as additional layer. Aperture file format is expected to be the same as RS-274-X apertures.
    Aperture file scope extends to all files below, in the Layer Stack. Apertures can be overwritten by
    apertures embedded in other Gerber or aperture files (below).
  3. Excellon file options
    Excellon button.
    Here we have less parameters, but state of standard is even weaker.
    I hope "Guess" option will do the work for you. If not, please send me your examples.
    The Guess option uses statistical approach, format of numbers given in header / drill size
    and format parameters from parsed Gerber files.
    In the last instance, guessing is done by matching and scaling drills to pads.
  4. IPC356 file options
    IPC356 button.
    Note: the format is a constant column length kind, making it difficult to expand precision or range or acccommodate for longer identifiers.
    Problems here are (as usual) related to ignoring the format recommendations. For example scale for placement and scale for a 'feature' size.


1.4 Board Outline, using a meta drawings

Case when the board outline is drown on a copper or silkscreen layer.
The program can handle the case when the outline is drown using tracks of thickness below a specific threshold value. All other objects on the layer must be using thickness above the threshold. The threshold can be set in the dialog box shown below, evoked by Meta-Drawing button.

meta drawing setup popup dialog


linear function Additionally, this dialog gives the program opportunity to deal with the finite accuracy of the geometry calculations. Some very tiny objects would simply disappear or become a source of problems.
There is a correction function, acting for objects of below some specific size.
To keep "monotonicity" of such correction, there are 2 values defining a new slope of the transfer function. By keeping value of "Minimal" less then value of "Slope Start" the size relation between affected object size is preserved.


1.5 Board Outline, identifying the PCB outline

Sometimes the gerber files are generated as pure M2M format, sometimes there is a descriptive text or drawings inserted on various layers.
The program can remove any object outside the PCB, located on any layers. But first, the program must know the PCB shape. Therefore the Board Outline layer (or meta drawing on other layer) is analyzed in order of determining the "M2M" part of the picture.
Removed are objects not touching the PCB bounding rectangle. The so created mask, can be enlarged by additional horizontal and vertical margin.
The option dialog box can be evoked by How to Identify button.

outline identification setup popup dialog

There are the following options:

  1. Accept all detected Loops
    All detected outlines are defining multiple PCB's outlines.
  2. Auto Recognition
    Based on finding a division line, horizontal or vertical, dividing drawing into PCB and description text part.
  3. Take the greatest Loop
    Assume the biggest object is the PCB.
  4. Take 2,...10 greatest Loops
    Assume the biggest two (2...10) objects are the PCB parts.

In all cases, the PCB outline have to be converted to a polygon, representing the surface of PCB. On the outline drawing, program interprets the tracks as edges of polygon. That means the drawing must form a loop. To remove small errors, the program uses the drawing track width plus "Brush Blob" value as a error margin. meta drawing setup popup dialog

Interpreted surface


There are some interpretation examples of Outline Drawings converted to the board surface. Green is the PCB, black is the drawing - removed.

  1. The surfaces XOR if the borders do not touch. You can create cutouts.
  2. If multi-path outline is detected, the greatest surface is assumed.
  3. Double line means two edges (XOR). If you need to draw a frame, please open it.
  4. If text is sneaking in, it will look like strange very small PCB pieces
  5. Small break may be corrected, but greader may simply remove the surface - resulting in a no PCB volume at all.


1.6 Automatic fit of image, drills and netlist

Historically (or optionally) the Gerber file image is centered on the film. Similarly the drill file have some arbitrary offset. The same can be assumed about the IPC356 file.
Unfortunately existence of those offsets is so common, that the offset correction is always executed.
The correction bases on flash pads (in Gerber) and drills (in Excellon). If there is not "enough" points to match, a warning popups. Usually this message can be ignored - please visually check positions of drills in vias, e.t.c.
The image/drill correction is not performed if the drill files are in the Gerber format.



1.7 Stackup file save/load

.camset file extension, XML text format
The whole assignanent work described abve, including layer stack parameters, can be saved in the file for later loading. Loading will reload also Gerber, Excellon and IPC356 files even if the files are new created.
The saved camera positions are included in this file.

1.8 Rendered board file save/load

.zofzproj file extension, Binary format
Since, for some boards, flattening time is quite long, there is a possibility of saving and loading flattened and rendered board to a proprietary binary file. Please pay attention that the format of this file may be changed when more features is added. In such case old files may be not loaded or not all options will be available.



2. Netlist and IPC356 file

  1. Please generate and include IPC356 Bare Board Flying Probe file, together with your gerber files set. It is useful in a PCB factory (if you decide to share it with them), EMS and by ZofzPCB viewer.
  2. The file contains: exposed PCB-copper-points description:
    1. mechanical position
    2. mechanical size
    3. SMD/THT/VIA
    4. component designator name
    5. component pin/pad name
    6. netlist node name
  3. Benefits in ZofzPCB:
    1. Display of components. Component shapes are (at the moment) a pure guess. Do not rely or complain - there are discrepancies. The next step, to achieve correct shapes, component names (and footprints) must be also passed to ZofzPCB.
    2. PCB connectivity is tested, error report is generated
    3. list of object available in a dialog box, click on object name and jump to: Parts, Pins, Nets, Nodes PCB, Nodes IPC (in case of error - they differ), Errors
    4. Mouse hover displays names of whatever object is found: components, pins, nets(copper)
    5. Cross-Check: browse schematic and PCB simultaneously. Demo and how to prepare OrCad : CrossCheck-Page



3. Navigation

Wheel Mouse and keyboard is required.
ZofzPCB supports: 3Dconnexion 3D mouse.
On the pictograms below, the viewpoint is represented by an airplane.

F1 quick keyboard help help screen
PgUp-PgDn CAM forward - backward forward backward
CAM shift / hover u-d-l-r
Numeric pad / *
Ctrl- / *
CAM roll, Ctrl=next rectangular roll
A-D, S-W CAM pan, tilt pan and tilt or pith yaw directions
Right Mouse   Button DRAG CAM pan - tilt pan and tilt or pith yaw directions
Tab roll to level the floor level the floor
Space Bar nearest rectangular rectangular pos
initial position home
Z swap side two sides of PCB
Ctrl-1 ...
Ctrl-9, Ctrl-0
Save current camera position Save Icon
1 ... 9, 0 Jump to saved camera position Restore Icon
Left Mouse   Button CLICK center this PCB point center here
Left Mouse   Button DRAG rotate around this PCB point click
Ctrl - Left Mouse   Button DRAG rotate around this PCB point click



4. Right Panel; Layers & effects

right panel

Fast access options are available always on the right side panel.

  1. Mouse wheel functions:
    1. Zoom (F5): – mouse wheel used for navigation (cam forward-backward)
    2. Peel (F6): - remove layers - transition effect, one-by-one, from the actual PCB top
    3. Spread (F7): magnify z-axis of the PCB, spreading all layers and drills proportionally.
    4. Ctrl-F5,6,7: select the mode and reset immediately.
    5. Middle Mouse Button – (click the mouse wheel) reset layers to base position.
  2. Hollow Checkbox - makes excess of copper transparent, e.g. boring part of ground plane.
  3. Volume Slider: increase core/prepreg volume opacity.
  4. Volume Slider leftmost and rightmost positions have additional functionality:
    • leftmost - enables to see and select the other side components thru the PCB,
    • rightmost - disables select of objects in deepness of PCB,
  5. Components Checkbox: - enable or remove symbolic component display.
  6. On-Off layer checkboxes.
  7. Double Click on Layer Checkbox – turn on a single layer (Peel) mode, for this layer. Mouse wheel can be used to change the layer.
  8. Visible copper layer is marked by red color in the On/Off checkbox.
  9. Hover or Selected Object attributes display. Selected overrides the hover


5. Measurements

Note: P and N keys can be used for the Crosscheck function, if crosscheck is in operation.
It is possible to redirect all keys to the measurement function: Netlist/Crosscheck set to Disabled.

5.1 Position Markers

There are 2 position markers used to measure distances.
Please hover the mouse over a selected object, then click keyboard key:
H – Hole
P – Pad (must be a flash)
E – Edge of the copper or mask
ESC – reset markers


If you select more then 2 markers, first placed marker will stay on its place and 2nd will follow your next selections.
You can place the first marker again, by clicking object key twice in the same place or by resetting markers (ESC)
You can copy the dimension text to clipboard by pressing Ctrl-C

Similarly, you can use right mouse click and select the function from right-click-menu, see below.

5.2 Net-Marker

By pressing N-Net copper under cursor, including all connected copper also on the other layers will be highlighted.

There is a possibility to choice the way the selection is visualized.
Please use Menu: View/Net Selection Effect
There are 3 options:

Select by color pulsing Select by Uncover Select by showing only selection
Blink Color Only Uncover Selection Show Only Selection

5.3 Right-Mouse-Button click menu

meta drawing setup popup dialog
  1. Allows for use mouse instead of keyboard for measurements (and crosscheck) functions.
  2. Select mils or millimeters for measurement display.
  3. Measurement text copy to clipboard.
  4. Another way of accessing Mouse Wheel function switch.
  5. RMB-click again or ESC to remove this popup



6. Colors

6.1 Color Presets

There are several color presets under View / Color Presets

color presets

Beside predefined Color Presets, it is possible to create and save your own. Presets are stored under "%appdata%\ZofzPCB\NAME.color

6.2 Color Picker

There is Color Picker dialog under View / Color Picker.
There are two color tables: one for each layer type (left), one for each Individual layer (right).

color box

You can use the slider (located on top) to mix colors from both tables in any proportion.
You can modify each table by selecting a table entry in the related drop down box.
The color is displayed on the radio button over the drop-down-box.
As usual, color can be selected either by R,G,B sliders or by H,S,V sliders.
There are some special items, existing only in the Layer Type table (e.g. background color)
Each table entry (in both tables) referring to object conducting current (copper, via)
also have adjustable a “Net Color” setting.
The slider is located above H,S,V sliders and appears only if such item is selected.
You can adjust how much of the Net Color is mixed into base color of Layer Type or Individual layer Layer.
Net Color is a random color selected for each detected net.
You can modify each net color (e.g. ground and power)
by hovering the mouse over it (on the PCB) and pressing N-Net key (see point4.2).



7. View Menu - still some more effects

  1. Full-Screen is more optimal rendering-hardware-wise.
  2. Wireframe - fun or debug.
  3. SubSampling - go as high as possible for this PCB complexity in this video card context.
  4. Thick layers: are looking good, if you can afford it (PCB complexity in this video card context).
  5. Camera FOV (Projection)
    FOV means Field Of View. This is not exactly the magnification of the view. FOV acts like zoom setting on the camera lenses, showing even a kind of fisheye artefacts in wide angle mode.
    1. 3 presets 90°, 45°, 22.5° (angle refers to the horizontal axis.)
    2. Variable: popup containing a scroll-bar shows up.
      Additional effect: "Compensate / Dolly Zoom". - moves the camera forward and backward, compensating for the size change, for the object in front of the camera - try it out.
    3. Orthogonal
      This can be somehow understood as almost 0° from almost infinitive distance.
      The orthogonal mode is what a simple projection is, without a perspective effect.
      If you keep camera direction perpendicular to the PCB, (e.g. by using "Home" or "space-bar" buttons) there will be a specific size scale, for the PCB and the view image.
      This scale will be saved inside a screenshot image, allowing to print in 1:1 of the PCB.
  6. Net selection effects (see: Net-Marker)
  7. Color Presets (see: Color Presets)
  8. Color Picker (see: Color Picker)
  9. Render Effects - follows:
    Render Effect Parameters box
    Set of parameters altering the visual features, but used during triangulation phase - that is the new values will have effect after the next flattening and triangulation.
    1. Rendering Hollows:
      Distance between edge of a plane and total transparency, inside the plane.
      The copper island may be not hollowed, if it have smaller area then...mm2.
      Additionally the island must be simple-shaped. For complicated areas even more surface is required to trigger the hollowing effect.
    2. Preventing big triangles:
      Big triangles, especially long triangles can disturb some effects based on lighting, because of calculations performed "per vertex"
      There is a grid, of given size, forcing additional triangulation points.
      Please use numbers like 1,2,4,8,16.. or 0.5, 0.25, 0.125
    3. Rendering Arcs to Polygons, Number of vertices per full circle
      After the flattening (conserving arcs), there is a need to convert arcs to straight lines polygons. How exact would you like to have it?
      Note that netlist and hit tests are performed on data stored before this process, therefore exactly accurate arcs.
    4. Drill through copper
      Should drills make holes in copper? Yes. But sometimes, e.g. for debugging it is useful to simplify and skip this subtraction.
      Unlike all other parameters influencing the triangulation only, this parameter affects the flattening.



9. Screenshot

  1. Save current view in PNG - lossless image compression format.
  2. User Interface elements are removed from the picture.
  3. Resolution Multiplier - picture resolution can be truly upscaled up to 10 times.
  4. Save in the project folder or in constant directory. Unique filenames are always generated.
  5. To print in 1:1 scale: physical dimensions (DPI) are set in the picture file, when camera orthogonal mode is used, (ref 7.5)
    Please use printing program with honors DPI settings. (e.g standard paint).



10. Autopilot

AutoPilot Menu

Automatically generated, airplane - like, camera movement. Based on the PCB drills.

  1. speed scroll-bar
    Beside short moments of slowdown when flying thru the drills, the camera keeps the constant linear speed, set by this scrollbar.
  2. roll scroll-bar
    Sets the camera roll, defining the bottom of the screen.
    1. Centrifugal: down direction is perpendicular to the turn axis.
    2. Gravity: down direction is perpendicular to the PCB plane.
  3. PCB is down
    When check, gravity force direction is towards the PCB. Otherwise direction is from top to bottom.
  4. Viaska City
    Enables peeling of all except the actual bottom layer.
  5. ➧➧ button
    Start (or stop) the action.

Enjoy a flight over your PCB.



11. Connection between Program and Website

Located under menu: F1-Help

11.1 On demand starting your Default Browser, directing it to:

11.1.1  www.zofzPCB.com

11.1.2 "on-line help" page www.zofzPCB.com/help.htm (this file)

11.2 Check for upgrade

No information is send to website except request for http://www.zofzPCB.com/version/info.txt file.
This remote file contains the current version number.

11.3 Send a Bug Report

This command starts external program, allowing you to send your message and your log file.
The log file is located at %APPDATA%\ZofzPCB\ZofzDebugLogFile.txt.
The log file can be revised before sending.
You can provide an email address, in case you expect feedback from me.
There is no other information send, than what is visible in the CrashReport.exe dialog-window.


11.4 Automatic version check

The 3D Gerber Viewer invokes automatically a request to check for the new version, on program start, not more often than once per 5 days.
This request is to be confirmed by you. You can:
1. allow it, 2. allow it for ever, 3. disallow it this time.
You will get the information about the current version.
If there is a newer version, the default browser can be started to download the new program.

My internet provider counts accesses to the text file containing the current version number.
(As any other provider to any other file.)
That counter gives me some kind of feedback information.
Simply, if the counter counts too slow, I will consider to abandon the 3D Gerber Viewer support.
If it is counting fast, there will be more "post-design" tools or other software from ZofzPCB.


12. Bug Reports

Please do not hesitate to send me a bug report.
To debug the program I need to reproduce the bug at my debugging workbench.
In case when the bug is related to the input data, I would need some input data from you.
I understand the delicacy of the subject - I am designing PCBs myself.
So, if you have time, reduce the Gerbers to the affected region and layers or simply trust me.
Use bug@zofzpcb.com for more direct contact.
List of known bugs, version log: bug list