Skip to navigation

ZofzPCB Logo

3D Gerber Viewer Online Help

Version: 1.1,

Currently, version 2.0 uses Windows UI elements. As a result, old images differ from the current state, some even a lot, like the Body Builder section. In addition, the Files/Open section is designed from scratch.
Sorry for the inconvenience.

download as PDF

Table Of Contents

  1. Reading in Gerber Files
    1. Auto
    2. Manual Compose
    3. Zip Files
    4. File format
    5. Board Outline, using a meta drawings
    6. Board Outline, identifying the PCB outline
    7. Automatic fit of image, drills and netlist
    8. Stackup file save/load
    9. Rendered board file save/load
  2. Netlist and IPC-356 file
  3. Components and IPC-356 file
  4. Components Modeler
  5. Body Builder
  6. STEP File Export
  7. Navigation
  8. Right Panel: Layers & effects
  9. Measurements
    1. Position Markers
    2. Net-Marker
    3. Right-Mouse-Button click menu
  10. Colors
    1. Color Presets
    2. Color Picker
  11. Cross Section
  12. View Menu - still some more effects
    1. Full-Screen
    2. Wireframe
    3. SubSampling
    4. Thick layers
    5. Camera FOV (Projection)
    6. Net selection effects
    7. Color Presets
    8. Color Picker
    9. Light
    10. Render Effects
  13. Screenshot
  14. Autopilot
  15. Connection between Program and Website
  16. Bug Reports
  17. Program Structure Chart
  18. CrossCheck page
  19. Keyboard and Mouse Controls on a single page (PDF)

External Resources

  1. Gerber format specification & related documents:Ucamco Download Page
  2. Gerber file format at Wikipedia: Gerber Format


Full view of the program
Screenshot - made on Toshiba Satellite P50T 4K laptop (AMD Radeon R9 M265X)


1. Reading in Gerber Files

Auto Menu

ZofzPCB is designed to offer two ways of composing a project: auto and manual.

1.1 Auto

Auto provides you with a quick and convenient way of composing a new project. The purpose of the Auto Load is to match Gerber/drill/IPC-356/BOM files to assumed functions in PCB definition. This feature is based on a file name rules set, located in a 'script' text file: "%APPDATA%\ZofzPCB\CAM_Load_Rules.txt

The file contains a set of rules, divided into "sections" corresponding to a particular file naming schemes, like:

section KICAD (Protel Mode)

There is a list of possible file functions and related file name pattern masks, in each section:

BOM                *.csv
IPC-356             *.ipc
Silkscreen T       *.gto
Silkscreen B       *.gbo
Copper     T       *.gtl
Copper     M       *.gN
Copper     B       *.gbl
Copper     M /     *.gpN
BoardOutline       *.gbr
Drill_NPTH         *np*.drl
Drill_PTH          *.drl

Each file is tested by the pattern masks and the first hit is assigning a function and finishing the search, for the file.
All sections are tested and the section with the most hits is chosen to continue the load. The hit results are displayed for acceptation.

Please refer to the CAM_Load_Rules.txt file itself, for syntax explanation. In case you would like to create another set that is related to a particular CAD vendor default convention, then I am willing to assist you. Get in touch with me.
To access the rules text-file, use the button on the Auto Load dialog.
Alternatively, you can use the following file path: "%APPDATA%\ZofzPCB\CAM_Load_Rules.txt


  1. After launching the program, go to menu "File". Under Compose New, select Auto. That is, 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 box. Sometimes you may find that the matching of files significantly differs from expected. In such cases, you are advised to use the manual method.
  4. Press Auto Load.
  5. Layer Stackup dialog box is displayed. This allows you to review Gerber files assignment to particular layers, drill, IPC-356 netlist and BOM slots.
  6. If you would like to add or remove some files, please press the More... button on top of the dialog. (please continue the reading, in the section below)
  7. Press OK: - Read & Render. The board will be flattened. That is, the negative and positive constructs are converted into simple shapes. It is then triangulated to enable the Direct3D to display the PCB model.


1.2 Manual Compose

Have you tried the auto compose and you are not satisfied with the results? If that is the case, then you can compose your project by using manual compose. The procedure of composing a project using this approach is as detailed below.


  1. After launching the program, go to menu "File". Under Compose New, select Manual. That is, Command: File / Compose New / Manual.
    This command will create a clean new project.
  2. Assign file function

    Manual Compose
    1. A dialog box, like in the picture above, will appear. The left side of the dialog box is the file explorer interface while the right side has the Layer Stack list, the Drill Plates list, the IPC-356 Netlist and the BOM file place-holder.
    2. The configuration is done by selecting a file from the file explorer and then pressing a button to move it to one of the windows on the right. Alternatively, you can select multiple files and move them as a group.
    3. A file is added to the "Layer Stack" list by pressing [Insert File To Layer Stack] button. Order of files in the layer stack list represents the PCB stackup. You can reorder files/layers later.
    4. The [Insert Void To Layer Stack] button allows a user to insert Core or Prepreg layers (not associated with any Gerber drawing file).
    5. Drill files are added to the "Drill Plates" list by clicking the [Insert File To Drill Plates] button.
    6. The IPC-356 file should be inserted under "IPC-356 - Nets - Pads – Components" by using the [Set File As IPC-356] button.
    7. The BOM file should be inserted under "BOM, csv format" by using the [Set File As csv BOM] button. It makes no sense to add a BOM file, if the IPC-356 file is not loaded.
  3. Organizing Layer Stack

    1. You can organize the layer stack while you are still in the Manual Compose Stackup dialog box or you can go to Display/Edit Stackup. For the latter, you will get a dialog box that is similar to the one below.

      Edit Stackup dialog
    2. The stack list represents the order of layers from top (component side) to bottom (solder side). Each entry represents a layer in the PCB layer stack. It is important to note that some layers are associated with Gerber files (e.g. copper), while others are not (e.g. core). The first column defines the type of the layer and specifies it. You can edit the order by moving a selected layer up or down by using up/down buttons.
    3. The Board Outline field is a special layer and should be positioned at the bottom of the list. It may or may not be related to a Gerber file. It is a placeholder for the PCB total thickness value.
    4. When all the Gerber layers are identified, it is easy to enter the total thickness of the PCB in the Board Outline's Thickness field. The Set Equal Spacing button adds missing core layers and sets their thickness to the entered value.
    5. The Gerber file should internally specify whether the "film" is positive or negative. To understand the positive and negative films, consider this scenario: if you want to draw a punched surface, you can draw the dots and ask for a negative film. Alternatively, you can paint the entire surface except the dots and ask for a positive film. In other words, if you want a dotted film, you have two options. Similarly, your file should clearly define the film to be used. In case the film is not specified, then the program uses the default options-default positive and default negative.
    6. There is a rule to draw the paste masks and solder masks in a negative way. If the Gerber is drawn in opposite polarity, you can use the above setting to force a specific polarity.
    7. After organizing the Layer Stack, you can move to the Drill Plates.
  4. Organizing Drill Plates

    Edit Drill dialog
    1. The software automatically detects if the provided drill file is in Excellon or Gerber format.
    2. In some cases, a PCB project will have only one drill file. If that is not the case, you will need to define the functions of the provided drill file(s).
    3. For a selected drill file, you should define where the drill plates start and end. For example, assuming a 4-layer PCB, from copper layer 1 to copper layer 4 (top to bottom) or copper layer 1 to copper layer 2.
    4. The program also allows you to specify one of the following options:
      Non-Plated- plain, non conductive hole
      Plated- conductive barrel
      Filed- conductive barrel, top and bottom - like metal filed
      µVia↓- conductive barrel and bottom - metalized from outside
      µVia↓ Filed- conductive barrel top and bottom - metalized from outside
      µVia↑- conductive barrel and top - metalized from outside
      µVia↑ Filed- conductive barrel top and bottom - metalized from outside
    5. Drill files may contain holes and routing. If you have routing on a separate file, just add both files to the Drill Plates
    6. When you are through with organizing your categories, you are ready to proceed to the next step. You are almost through!
  5. OK: - Read & Render
    1. The board will be flattened. That is, the negative (cutouts) and positive constructs are converted to simple additive shapes. It is then triangulated for the Direct3D to display the PCB model. This step is crucial for high frame rate animation.
    2. In case there is a need to interrupt the process, the following options are available:
      • Stop At Next Checkpoint
        The process will be stopped when the current task ends. No new actions will be started.
      • Stop Now Dangerously
        The process is stopped immediately. This action causes the allocated memory to leak. It is not guaranteed that the process will continue from the point it is stopped without restarting the program.


1.3 Zip Files

The file browser and auto detection feature, described above in this chapter, emulates zip files as directories. Reading in all the CAM files and .camset file, as well as saving the .camset file works the same way.

This does not apply to the binary zofzproj file, which have LZMA compression on its own and cannot be read or written into a zip file, by ZofzPCB. The above functionality works only with zip files, but not with 7z or rar files.


1.4 File format

3 file format pop-up dialogs

You should not change the following options unless the Gerber files are generated by an old or incompatible CAD exporter or are abnormal in any other way.

  1. Gerber file options
    RS274D button.
    The contemporary format, RS-274-X or GerberX2, defines apertures and all parameters needed to create a layer drawing. Sometimes, only a subset of parameters is defined by the Gerber file. The operator has to define missing settings manually. Nevertheless, such cases are rare. Parameters set in the associated dialog are default. If there are explicit definitions in the Gerber file, they normally override the defaults. A default negative parameter is defined per layer in the layer stack list.
  2. Apertures
    The long-depreciated pure D format cannot be used, as, at least, the apertures must be defined in the file.
    If that is not the case, you should manually add file headers containing apertures definitions. It is important to note that the apertures should be in RS-274-X file format.
  3. Excellon file options
    Excellon button.
    Although we have few parameters here, the standard is generally weak. I hope the "Guess" option will work for you. If it doesn’t, kindly feel free to send me your examples.
    The Guess option is based on a statistical approach. Guessing is done by matching and scaling drills to pads. Gerber format offers a better quality output than Excellon, making it the preferred format for drill files.
    In some cases, especially when a small number of holes is placed on a PCB or holes are not related to pads, the Auto-Offset may destroy perfectly aligned file. You can switch off the Auto-Offset procedure by unchecking the check-box. The offset between Gerbers and drills is then assumed to be (0,0)
  4. IPC-356 file options
    IPC-356 button.
    This constant column format defines a specific number of digits per value and this may differ with what some projects may require. For that reason, some vendors prefer to change the scale while maintaining the required number of characters in order for the format to handle bigger boards. Another problem might be missing units definition or unspecified pads sizes. Additionally, limited space for the component designator and pin names makes it hard to decide what to do, when a longer text is used in ECAD. Either the names will be truncated/renamed or the column positions are destroyed. In most of the cases, it is possible to recover. The recovery mechanism may fail, however. Therefore it is possible to disable the specific automatic corrections.
    Note that truncating the names may result in "short-circuits" or miss matching with the BOM, disabling some of the ZofzPCB features.


1.5 Board Outline: using the meta drawing

This approach can be used when the board outline is drawn on a copper or silkscreen layer.
However, the approach is suitable only if the outline is drawn using tracks of thickness below a specific threshold value. All other objects on the layer must use a thickness value that is greater than the threshold. The threshold thickness value is set in the dialog box as shown below.

meta drawing setup pop-up dialog


linear function Additionally, this dialog box enables the program to deal with the finite accuracy of the geometrical calculations. This helps to avoid the disappearance of tiny objects or the problems that could result from their inclusion. The program offers a correction function that is applicable for objects that are below a specified size.
To ensure uniformity of a correction, 2 values are used to define the new slope of the transfer function. By keeping the value of "Minimal" less than that of "Slope Start", the size relation between the affected object sizes is preserved.


1.6 Board Outline: identifying the PCB outline

Sometimes the Gerber files are generated as pure M2M files. In other cases, a descriptive text or drawings is inserted in various layers.
The program can remove any object that is located outside the PCB on any layer. In order to do this, the program must understand the PCB shape. To achieve this, it analyzes the Board Outline layer (or meta drawing on other layer) to determine the M2M part of the picture and removes objects that are outside the bounding rectangle.
You can enlarge the created mask by adjusting the horizontal and vertical margin values.
By clicking the How to Identify button, you will get a dialog box that is similar to the one shown below.

outline identification setup pop-up dialog

The program offers the following options:

  1. Accept all detected Loops
    All detected outlines define multiple PCBs.
  2. Auto Recognition
    This is based on finding a division line. The horizontal or vertical line divides the drawing into two parts: the PCB and the description text.
  3. Take the greatest Loop
    This assumes that the biggest object is the PCB.
  4. Take 2,...10 greatest Loops
    Assumes that the biggest two to ten objects are the PCB parts. You should select the number of loops that you want the program to take (from 2 to 10).

In all the above cases, the outline is converted into a polygon that represents the surface of the PCB. On the outline drawing, the program interprets the tracks as the edges of the polygon. This means that the drawing must form a loop. To account for small errors, the program uses the drawing track width plus "Brush Blob" value as an error margin.
how to draw outline

Interpreted surface

These are illustration examples of how Outline Drawings are converted to board surfaces. The green part represents the PCB while the black one (removed part) is the drawing.

  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 want to draw a frame, you should open it.
  4. If text is sneaking in, it will look like strange very small PCB pieces
  5. Small breaks may be corrected, but bigger ones may simply remove the surface resulting in a no PCB volume at all.


1.7 Automatic fit of image, drills and netlist

It is common to have the Gerber file image centered on the film. The drill file features an arbitrary offset and the same can also apply to the IPC-356 file. Owing to this, offset correction is always executed.
If the points required to match are not enough, a warning usually pop ups. This message can be ignored but you should consider the possible causes of this before you proceed.
The image/drill correction is not performed if the drill files are in Gerber format.


1.8 Stackup file save/load

The configuration file uses XML text format - you can use it in automated work-flow or erase sections by hand, using a text editor, if you need to. The extension of the configuration file is ".camset"

List of configuration settings saved in the .camset file:

1.9 Rendered board file save/load



2. Netlist and IPC-356 file

Please generate and include the IPC-356 Bare Board Flying Probe Test File in your Gerber files set. Please refer to for a description of concepts related to IPC-356 file format usage.

Benefits of using the IPC-356 in this program include the following:

  1. PCB connectivity is tested and error report generated if the IPC-356 does not match with the copper connections.
  2. Menu: Netlist / Nets
    Display list of nets, allows for finding nets by highlighting and zooming to the selected net.
  3. Menu: Netlist / Nodes PCB
    Display list of PCB nets. Selecting any net displays a second level list of endpoints (pins).
    Selecting any endpoint results in highlighting and zooming to it.
    "Nodes PCB" means that it is related to the copper data, when copper differs from IPC-356
  4. Menu: Netlist / Nodes IPC
    Display list of IPC-356 nets. Selecting any net displays a second level list of endpoints (pins).
    Selecting any endpoint results in highlighting and zooming to it.
    "Nodes IPC" means that it is related to the IPC-356 data, when copper differs from IPC-356
  5. Menu: Netlist / Errors
    Display list of differences between detected copper connections and IPC345 netlist.
  6. Menu: Netlist / Test
    Re-runs the comparison test between the copper connections and the IPC345 netlist.
  7. Menu: Netlist / Save Report
    Allows to save the results of the comparison test between the copper connections and the IPC345 netlist.
  8. Menu: Netlist / Cross Check
    Cross-Check allows you to browse schematic and PCB simultaneously. ZofzPCB must be connected to a schematic editor, such as OrCad Capture. For a demo, you can visit the CrossCheck-Page.
    The unrolling sub-menu allows for configuration of the keyboard keys and mouse functions used for sending cross-check commands, to the schematic editor program:
    Disabled- comands are not send, P & N keys act for selection
    CPN: Comp Pad Net- C, P, N keys are used for crosscheck; selection disabled
    C: cross-check- C key is used for crosscheck; P & N keys act for selection
    On Hover- mouse hover hits invoke crosscheck commands; P & N keys act for selection



3. Components and IPC-356 file

Please generate and include the IPC-356 Bare Board Flying Probe Test File in your Gerber files set. Please refer to for a description of concepts related to IPC-356 file format usage.

Benefits of using the IPC-356 in this program include a possibility to display components, just like in assembled PCB. There are 2 variants of the components model generators:

Extruded Free option
Very basic shapes, related directly to the footprint dimensions.
Designed to act as a mouse targets and as a fall-back, in case the parametric modeler cannot detect or cannot draw the component.
Premium option
Modeler recognizes the footprint shapes, sometimes also using component designator to select the model type.
The guesses are possible to be overwritten, using other models having compatible footprints.
Detailed dimensions and colors are possible to be adjusted. Number of parameters depends on the model, however.

Please note that there is no direct data about the THT component top/bottom side, in the IPC-356 file. The modeler places components on the top side, by default. You can swap any THT component to the other side, by hand.

It is crucial to save your decisions, about model selection, parameters, THT side, in the .camset or in the .zofzproj file.

Access to functionality related to the components and IPC-356 file:

  1. Mouse hover Right Panel Info

    Right Panel Hover Display Display component designator and data from the BOM file:
    • Component - RefID, Name, Footprint
    • Pin - RefID-PinID, Net Name, Hole Diameter (not shown here)

  2. Mouse Right Button click on a component

    Right Mouse Button Component Menu Displays the Right Click Menu, where some actions can be called in the "Component" section:
    • Hide - Hide the component
    • THT bottom / top - swap THT component to the other side
    • Model - show Model Dialog Box
    • List - Show List of components to unhide

  3. Menu: Components / Components List

    Component List - Modeler Component browser.
    Component preselection can be achieved using the Mask field. Please do not use capital letters. The search is case insensitive. '*' means any text, '?' means any character, capital 'N' means any number.
    Selecting any component from the designators list zooms it into direct view. The component is marked pink.
    After selecting the desired component, Model parameters are shown on the right side of the dialog, allowing for modification.
    Please refer to the next chapter, for the Modeler description.

  4. Menu: Components / Pin List

    Component Pin List Component browser and pin browser.
    Component preselection can be achieved using the Mask field. Please do not use capital letters. The search is case insensitive. '*' means any text, '?' means any character, capital 'N' means any number.
    Selecting any component from the designators list zooms it into direct view. The component is marked pink. The pin list (right) is populated with the list of pins of this component. Selecting any pin, highlights it pink. Optionally (checkbox) copper netlist connected to the pin is also highlighted.

  5. Menu: Components / Model Generator

    Menu Components Modeler Selection

    There are two options: the free and simple modeler and the premium parametric modeler, as mentioned above.
  6. Menu: Components / Enter License Key
    Step by step guide is located in: - How to load the license key
  7. Menu: Components / Clear Components
    In case when you have been reassigning the Reference ID set, in the ECAD, like running automatic annotation from scratch, stored model data is totally inadequate. There is no automatic or semi-automatic recovery function, from this situation, yet.
    You may choose to just erase all stored data and run the recognition function again.



4. Components Modeler

2 examples:

Adjusting size of an electrolytic capacitor

  1. Adjusting size of an electrolytic capacitor, step 1

    Automatically selected model was correct in that it is an electrolytic capacitor, but of course, the size is wrong.

  2. Adjusting size of an electrolytic capacitor, step 2

    Right Mouse Button Click on the component, selecting "Model"on the pop-up menu. The Model Menu replaces the pop-up menu.

  3. Adjusting size of an electrolytic capacitor, step 3

    Adjusting values for Diameter, Height, pin-Pitch, Pin-Diameter, Pin-Color.
    The Values are from the part pdf, colors are from the picture on the distributor website, hex-value is taken by a color picker tool.
    Thanks to loaded BOM, it is possible to copy the changes to the other components, having the same footprint name or the same part name. See the buttons on the bottom.

  4. Adjusting size of an electrolytic capacitor, step 4

    Please remember either to save the stackup-setup file (.camset) or the rendered file (.zofzproj).
    The model parameters are saved along with the respective data, in both of the file formats.

Change from resistor to LED

  1. Change from resistor to LED, step 1

    Component Designator is sometimes used as a description, in this project. Therefore the program could not determine that the 0805 footprint is for the LED.
    To change tis guess by hand, please click on the component using the right mouse button and selecting "Model" in the pop-up menu.

  2. Change from resistor to LED, step 2

    Automatic model detection makes decisions based on the footprint geometry and designator id. Some decisions are "hard", for example number of pads, some decisions are "soft" - guesses. The guesses are possible to be overwritten. From top to bottom of the dialog, drop-down boxes represents user alterable decisions. Selecting a top category runs automatic detection on the sub category below, including loading of default values for parameters.

  3. Change from resistor to LED, step 3

    Here, after choosing the "LED", the automatic process was recalled, again detecting 0805 chip size. This time, however, bringing a whole new set of parameters and their default values.

  4. Change from resistor to LED, step 4

    Please remember either to save the stackup-setup file (.camset) or the rendered file (.zofzproj).
    The model parameters are saved along with the respective data, in both of the file formats.



5. Body Builder

Body for a Variable Resistor

  1. Body for Variable Resistor, step 1

    The element is not in the library, the program have been deciding for another component. This is the case, where Body Builder function will be helpful. As the Body Builder does not yet handle pins, the best is to select another component, with the pins the most resembling what is needed. The 'Extruded' simplified model is one simple choice for this case, as it has straight round pins.
    After selecting 'Extruded' please press the Body Builder >> button.

  2. Body for Variable Resistor, step 2

    The Body Builder interface shows up: Command Tool-Box on the left, List of Body Primitives shows on the bottom.
    Command Tool-Box:
    • Insert New - show list of primitives to insert
    • Delete - remove the selected primitive(s)
    • Cut - cut and store into clipboard the selected primitive(s)
    • Copy - store into clipboard the selected primitive(s)
    • Paste - insert the primitive(s) from the clipboard to the component in front of the selection
    • Reset Model - clear the body and reload the Modeler created content
    • Undo, Redo - there is a separate redo buffer for each component. This function works only for the Body Builder
    • Display - only the edited component will be shown
    List of Body Primitives:
    • Clicking inside a single primitive selects it. The edit area becomes darker
    • Double click selects the whole body
    • A second double click deselects all
    • The selected primitive is highlighted (magenta)
    • The size is limited to 5 primitives. A horizontal scrollbar shows up, when the size is above.
    • Return to the Modeler (in Component List): << button
    • Close the Body Builder and the Modeler  X  button
    Please clear the body, by selecting the old content and pressing Delete button.

  3. Body for Variable Resistor, step 3

    Add one CUBE primitive by Insert New button and selecting the item marked by a white rectangle on the picture above.
    Fill the sizes, positions and colors, using x,y,z dimensions from the variable resistor technical drawing (pdf).
    Set all the rounded edges (RadHor, RadVert, RadLat) to 0.1mm and distance from the PCB (h0) to 0.05mm. Get the color value from the element picture using an external color picker tool or image editor, copying the hex value to the proper field.
    Calculate the shift distance, between the component origin (center between two external pins, in case of 3 pin devices) and the center of the CUBE primitive. Use paper, pen and calculator.

  4. Body for Variable Resistor, step 4

    As it would be rather impossible to construct the screw head with the slot, out of currently supported primitives, I have decided to elaborate more on the body instead and build it from 3 cubes, gaining the sticking out sides.
    Please shrink the SizeX to 0.6mm. Then calculate required shift (PosX), so the external wall keep to the component size. Then duplicate the primitive using clipboard and flip one wall to the other side, adding a minus sign to its PosX.

  5. Body for Variable Resistor, step 5

    The third cube primitive, in between the two walls, can save some of the surfaces, for faster rendering.
    Please use the RCBODY primitive. The RCBODY originally is used in the chip resistor or capacitor model. Two surfaces of it are removed, as it is covered by the terminals. It also has two colors, as the chip resistor have a different structure on top. Additionally, all of its 8 surfaces can be removed, by a mask bit-field.
    In this case, the SizeX of the primitive must be longer, then it is calculated, to cover the edge radius of the two walls. Please add even more 0.01mm to make sure it goes into contact with the walls.
    The rotation is 0, so the two open sides goes together with the already made walls. The SizeY is now smaller, by 0.53mm, to expose the walls edges. Also the position PosY must be increased by 0.53mm/2, to align one of the sides and leaving the whole 0.53mm on the other side.
    Keep both colors to be a copy of the wall colors.
    Please use the Display Checkbox, to enable the single component view.

  6. Body for Variable Resistor, step 6

    The screw is made of a vertical cylinder, using VCYLINDER primitive, originally used for electrolytic capacitor. As the primitive is hidden inside the already made body, set the height (h0) to move it above the body.

  7. Body for Variable Resistor, step 7

    Please disable the grove, by setting the grove parameters to 0, set the Radius and SizeZ to match the data from the part drawing. You may submerge the screw a bit. Please calculate the screw position.
    The Variable Resistor Body is now finished.

  8. Body for Variable Resistor, step 8

    In case you have more then one instance of the part, please use the Modeler global change buttons, seen on the first picture.
    The second option is to use clipboard, to copy the body into the body of the other components.
    You can also copy the body element, between different project, using the clipboard.

  9. Body for Variable Resistor, step 9



6. STEP File Export

ZofzPCB STEP export feature makes use of facilities provided by the Open CASCADE Technology software.

Notes, Features, version 1.3.1

  1. STEP AP214 (AP214IS)
  2. Component models colors repeats internal model colors.
  3. PCB volume/solid use constant color. Other colors are taken from the stackup settings.
  4. Component names are: "Value(RefID)" where Value is taken from BOM and RefID from IPC-356.
  5. Each component is separately constructed and placed, even if the model is repeated.
  6. The feature is located in a separate 64-bit module, due to high memory size demands. Therefore it runs only on a 64-bit windows.

How do I create a STEP file?

  1. Load gerber files to ZofzPCB
  2. Adjust component models
  3. Hide components you want to substitute own models for
  4. Menu: Files / STEP Export
  5. Select directory, press Save As button
  6. Select what do you want to be exported (copper, silkscreen, components)
  7. Press OK



7. Navigation

The navigation process requires a wheel mouse and a keyboard. In addition, the ZofzPCB program supports 3Dconnexion 3D mouse.
To illustrate how navigation is done using the wheel mouse and keyboard, an airplane has been used to represent different viewpoints. In the following illustrations, the function of every key is given together with a corresponding viewpoint.

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
Alt-Home resize PCB to fit
in orthogonal projection
Z swap side two sides of PCB
X turn to PCB center center 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



8. Right Panel: Layers & effects

right panel

Zofzpcb offers fast access options on its right side panel. The following are the available options:

  1. Mouse wheel functions:
    1. Zoom (F5): mouse wheel is used for navigation (camera forward-backward)
    2. Peel (F6): removes layers one by one from the actual PCB top, or bottom if the camera is under the board.
      Checkbox Single - option to view a single layer only.
    3. Spread (F7): magnifies z-axis of the PCB thereby spreading all layers and drills proportionally.
      Checkbox Compress - option to spread only the core and keep coper e.t.c. on initial thickness.
    Clicking any of the above radio buttons (or pressing the shortcut keys) while keeping the Ctrl key down, will reset the function.
  2. Hollow Checkbox: makes excess of copper transparent. This allows unobstructed view.
  3. Volume Slider: increase core/prepreg volume opacity.
  4. Volume Slider: The leftmost position of the volume slider enables view of components that are on the other side of the PCB.
  5. Components Checkbox: enable or disables component display.
  6. Verticals Checkbox: enable or disables vias, drill, board edges display.
  7. On-Off layer checkboxes: activates or inactivates the selected layers.
  8. Ctrl-Click on Layer Checkbox – turns on the single layer (Peel) mode for the selected layer layer.
    Mouse wheel can be used to change the layer.
  9. Visible copper layer is marked by red color in the On/Off checkbox.
  10. In addition to the above options, the additional window below displays hover and selected object information. You will get a hover display if you move the cursor over an object. If you make a selection (Net or Pin), the information about the selected object overwrites the hover display.


9. Measurements

Zofzpcb offers some keys as additional mouse buttons. The keys used for this function are H, P, E, and N. You can utilize their assigned functions either by using the keyboard or by clicking the right mouse button. It is important to note that the P and N keys can be used for the Cross-Check function. (The C key is to be used by the Cross-Check function only, meaning "Component".) The program also allows you to redirect all keys to the measurement function by setting Netlist/Crosscheck to Disabled.

9.1 Position Markers

The program offers 2 position markers for distance measurement. Distance is measured by positioning the cursor on a selected object and the clicking a key on the keyboard. The list of keys used for this function is as given below:


In case you select more then 2 markers, the first one will remain at its place while the second one will follow your next selections.
The first one, colored green, is the reference position.
The program allows you to place the first marker again, by clicking the object key twice in the same place or by resetting the markers (ESC).
The keys may be kept down, to continously search for the object to set the marker to. This is especially usefull for the E-edge key.
In addition, you can copy the dimensions text to clipboard by pressing Ctrl-C

9.2 Net-Marker

If you select Net (N), the copper under the cursor and its connections on other layers will be highlighted.
You can go to Net (N) either by using the keyboard or by clicking the right mouse button.

The program allows you to adjust the way you view your selection. To make an adjustment, please go to View and select Net Selection Effect or just press Ctrl-N to circulate via available options.
The following three options are available: blink color only, uncover selection, and show only selection.

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

9.3 Right-Mouse-Button click menu

Clicking the right mouse button allows you to do the following:

right mouse button click menu
  1. Go to measurements (and crosscheck) functions without using the keyboard.
  2. Select mils or millimeters for measurement display.
  3. Copy the measurement text to clipboard.
  4. Access Mouse Wheel function switch.
  5. If called on a component - Hide the component.
  6. If called on a THT component - flip the component placement side - top/bottom.
  7. If called on a component - evoke Modeler pop-up.
  8. If called on a disabled component(s) - show a list of components to unhide.
  9. RMB-click again in the same place, LMB-click, or press ESC to remove this pop-up.



10. Colors

10.1 Color Presets

The program offers a variety of colors to choose from. To access the color presets, please go to View and selecting Color Presets. The menu unfolds, showing options similar to shown below:

color presets

Besides the predefined options, the program allows you to create and save your own color presets.
Presets are stored under "%appdata%\ZofzPCB\NAME.color. The path is given to enable you to copy, share, or distribute your color presets.

10.2 Color Picker

To access the color picker, please go to View and select Color Picker.
There are two color tables: one for layer type and the other for individual layer.

color box

A color can be selected either by RGB sliders or HSV sliders.

The slider at the top allows mixing the colors from both tables in any proportion.
To modify a color from the table, please select the entry in the related drop down box. The actual colors are displayed on the radio buttons.

The Net Color is a pseudo-random color selected for each detected net. The program allows to modify the net color by positioning the mouse pointer over it (on the PCB) and pressing the N-Net key. Furthermore, a copper color can be adjusted to mix a specified amount of the net based color. This is done for the Layer Type or the Individual Layer. The slider is activated when a copper color is adjusted.

For some special effects, like showing a specific subset of nets, it is possible to manipulate the net color globally, by a button click. Then you can set some specific nets to some specified colors, for example marking a differential clock pairs.
The options for "Set All Net Colors" are:

to Defaultpseudo random
to Thisto the current net color
to Copperto the Layer Type defined color



11. Cross Section

color box

Horizontal or vertical cut can be placed using the <Del> key, without any distance markers present. The board tilt vs the sight line to the mouse pointer determines if the cut is horizontal or vertical.

The <Del> key may be continously pressed and the cross section will follow the mouse pointer.

When a single distance marker is placed, the cut line is defined by the marker and the mouse pointer. It is still possible to adjust the line, by keeping the <Del> key down.

If two distance markers are present, the cut line will be defined by the markers, when the <Del> key is pressed.



12. View Menu - still some more effects

Zofzpcb uses the Direct3D 9c or higher together with a dedicated graphic processor (GPU). Some years ago, such a configuration was dedicated for gaming only. Currently, the GPUs are build into the processor and it is hard to get a PC/Laptop without it. GPUs are being used by operating system components such as Windows 10 Aero Glass, to perform standard graphic effects.

  1. The PCB image data has to be converted into a suitable format - list of triangles. This process (flattening and triangulation) takes time.
  2. The GPU draws the complete frame always from the beginning, at a rate of 60 fps. This rate may be reduced to 30 fps (or lower) for more complicated boards, more effects, less powerfull GPUs.

Therefore, as in many 3D games, the program offers a set of controls that allow you to increase or decrease the amount of details and the required GPU power. Depending on your GPU power and the size of your board, you may need to do adjustments for you to get optimal results.

  1. Full-Screen - this offers better viewing but has some performance consequences. The concept of implementation have been also evolving, during last years. Memory and bandwidth allocation to the 3D processor is increased, as there is more pixels to draw. Years ago, the full screen mode have been using a smaller resolution then the 2D GUI mode, to increase the rendering speed. That was acceptable on the CRT screens, but it is not that good looking on the flat panel screens - it is not used anymore.
    The other feature is a release of resources needed to run the 2D GUI: memory and memory bandwidth. In addition, in the past, windowed modes may have synchronization problems or image tearing problems.
    The most important consequence of this feature is that in the full screen mode there is no way to use windows GUI elements, like dialog boxes or file explorer windows. Therefore, the program must create its own GUI widgets. For simplicity, the program uses its own GUI also in the windowed mode.
  2. Wireframe – this mode displays surfaces as frames of wires. Apart from helping in debugging, this setting enables the user to easily understand how the program carries out a process.
  3. SubSampling – increasing the sub-sampling enhances the image quality but doing so demands more resources.
  4. Thick layers - thick layers are good-looking if you can afford them. However, it is important to note that showing the thickness of copper, silkscreen, or soldermask layers can affect the frame rate. There is more triangles in the edges, than it is in the front surfaces!
  5. Camera FOV (Projection)
    Camera FOV (Field Of View) is equivalent to adjusting a focal length of the camera lenses. There are the following settings:
    1. 3 presets 90°, 45°, 22.5°.
        Note: the 90° setting (and square display proportions) is crucial in building the 360x180 panorama pictures.
    2. Variable: a pop-up containing a scroll-bar shows up.
      An Additional effect, Compensate / Dolly Zoom, moves the camera forward and backward thereby allowing compensation of the object’s size change.
    3. Orthogonal
      The orthogonal mode is based on a simple projection and does not feature a perspective effect.
      If you keep camera direction perpendicular to the PCB, by using Home or space-bar buttons, there will be a specific size scale relating the PCB and the viewed image.
      This scale value is saved in the Screenshot image meta data to allow for 1:1 printing.
  6. Net selection effects (see: Net-Marker)
  7. Color Presets (see: Color Presets)
  8. Color Picker (see: Color Picker)
  9. Light:

    Lighting Parameters box

    The program offers 2 types of lighting: Ambient and Diffuse. (The Specular light and textures are not implemented yet.)
    The controls:
    • Amount of the Ambient light (equivalent to offset, in electronic terms).
    • Amount of Diffuse light
    • Diffuse light direction: Azimuth
    • Diffuse light direction: Elevation
    • Diffuse light direction: Relative To Camera
      The view is more uniform if the light direction is binded to the camera/navigation. Labels on the above 2 sliders change accordingly
    • Diffuse light direction: Fast
      How fast the light follows the camera
  10. Render Effects:

    Render Effect Parameters box

    These are a set of parameters that alter the visual features. They are used during the triangulation phase. It is important to note that the new values will have effect after the next flattening and triangulation.
    1. Rendering Hollows:
      This refers to the distance between the edge of a plane and total transparency.
      The copper island may not be hollowed if it has an area that is smaller than a specified size.
      In addition, the island must have a simple shape. In case of complicated islands, more surface area is required to trigger the hollowing effect.
    2. Preventing big triangles:
      Big triangles can interfere with some visual features. This effect is caused by the calculations performed "per vertex".
      An increase in the size of a triangle leads to an increase in the number of triangulation points.
      To prevent this, you should use numbers such as 1,2,4,8,16.. or 0.5, 0.25, 0.125.
    3. Rendering Arcs to Polygons:
      After the flattening process, arcs are converted into straight-line polygons. How exact would you like to have it?
      To ensure accuracy, netlist and hit tests are performed on data stored before the flattening process.
    4. Drill through copper
      Should drills make holes in copper? Yes. But sometimes it is useful to simplify and skip this subtraction.
      It is also important to note that the parameters involved here affect triangulation as well as flattening.



13. Screenshot

  1. This feature saves the current view in PNG format - lossless image compression format.
  2. The user interface elements are removed from the picture.
  3. Its Resolution Multiplier allows the user to upscale the view up to 10 times.
  4. The program allows you to save the image in the project folder or in a constant directory. Unique filenames are always generated.
  5. To print in a 1:1 scale, physical dimensions (DPI) are set in the picture file when the camera orthogonal mode is used. (Ref 7.5)
    For good results, please use printing programs with honors DPI settings such as standard paint.
  6. Alt-Home key, in orthogonal mode, sets the magnification, so the PCB fits exactly to the image borders.



14. Autopilot

AutoPilot Menu

The autopilot offers automatically generated airplane - like camera movements. It is based on the PCB drills and offers the following:

  1. Speed scroll-bar.
    Besides short moments of slowdown when flying through the drills, the camera keeps a constant linear speed that is set using the scrollbar.
  2. Roll scroll-bar.
    It sets the camera roll, thereby defining the bottom of the screen. The program offers two options:
    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 checked, the direction of gravity is towards the PCB. Otherwise, the direction is always from top to bottom.
  4. Viaska City.
    Enables peeling of all sections except the actual bottom layer of your PCB.
  5. ➧➧ button
    Starts or stops the action.

Enjoy a flight over your PCB with the autopilot!



15. Connection between Program and Website

The following is mostly located under menu: F1-Help

  1. On demand starting the Default Browser, directing it to:

    2. "User Manual" (this file)
    3. "FAQ Page" page
    4. Example / Show Galery - displays website.
  2. Send a Bug Report

    This command starts an external program that allows you to send your message and log file. The log file is located at %APPDATA%\ZofzPCB\ZofzDebugLogFile.txt.
    You can revise the log file before sending. In case you expect a feedback from me, then please provide your email address.
    There is no other information that is sent apart from what you can clearly see in the CrashReport.exe dialog-window.
  3. Check for upgrade

    Manually triggers the action described below:
  4. Automatic version check

    On program start, every couple of days, the 3D Gerber Viewer automatically requests to check for the latest version. This request is to be confirmed by the user. There are three options:
    • allow it
    • allow it for ever
    • disallow it this time
    If you have allowed it, the program gets file, containing the current version number.
    The version number is compared to the current - you will get the information about the new version, when it is available. You can still defer or ignore the download, or start it automatically, via browser.



16. Bug Reports

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 the bug is related to the input data, I can ask you to provide me with some input data.
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. There is a link to the privacy policy.
Use for direct contact.
List of known bugs, version log: bug list




17. Program Structure Chart

Block Diagram of the program Block diagram of the program (ver 1.1), showing data processing from CAD/CAM Gerber input to 3D Render Buffers.



ZofzPCB Logo ZofzPCB
Updated: 02-05-2020