Skip to navigation

(verify) ZofzPCB: Copper + Components

Frequently Asked Questions

Live Q&A

Talking People
ZofzPCB Users' Forum

FAQ - Table of Contents

  1. How to export IPC-356 File?
    1. Warning: Component Reference text length
    2. Eagle
    3. KiCad
    4. Protel99se
    5. Altium
    6. CirCAD
  2. How to load Gerber files set, using Auto files assignment?
  3. What are .camset and .zofzproj files?
    1. What is .camset file?
    2. What is .zofzproj file?
  4. Missing tracks, transparent PCB volume, missing PCB outline
  5. Can ZofzPCB display µVias, Buried Vias and Blind Vias?
  6. How to handle the Excellon Warning: drill plate 1 - unknown tools?
  7. How to reduce momentary freezing in Windows caused by ZofzPCB display?
  8. How to reduce the load of the GPU?
  9. Why am I not allowed to overwrite component selection, even if the models are there?
  10. How to load the license key?

How to export IPC-356 File?

Warning: Component Reference text length

Eagle Warning box

The IPC-356 allows for reference text length up to 6 characters. For example, the reference text "BTN_DOWN" is truncated to "BTN_DN". (Eagle could have been allowing for one more character, btw.) Pay attention that the truncated names are not overlapping after all truncations.

Truncated components' references will not match respective references in the BOM file, making it challenging to auto-detect the BOM columns.

Very oddly, the IPC-356 format is a fixed-width format. Therefore, there is a possibility of a net name aliasing by IPC-356 specification. The original name is renamed to a short alias, used within IPC-356. There is no such option for the component reference, however.
I have found out that some other ecad programs do not bother and export longer designators without warning. That approach is readable, under the condition that the reference name does not contain a minus sign, as the format forces "-" after the reference field. This approach might be problematic to some parsers, however. Another solution would be not allowing for component designator lengths above 6 characters already on the input (schematic) side.
The IPC-356 expects designators to be like "SW1", see Wikipedia
And sticking to the familiar names makes it easier for ZofzPCB to assign more accurate component models.

  1. How to export IPC-356 File from Eagle?

    Drop Down Menu: File / Export / IPC
    See the following Eagle UI screenshot: Eagle Menu
  2. How to export IPC-356 File from Kicad?

    Drop Down Menu: File / Fabrication Outputs / IPC-D-365 Netlist File...
    See the following KiCad UI screenshot: KiCad Menu
  3. How to export IPC-356 File from Protel99se?

    1. Drop Down Menu: Tools / CAM Wizard...
    2. In Output Wizard: Select "Test Points", click "Next"
    3. In Output Wizard: Select "IPC-D-365A", deselect all other, if you do not need it, click "Next"
    See the following Protel99se UI screenshot: Protel Menu
  4. How to export IPC-356 File from CirCAD?

    Original exported IPC-356 file is missing holes/pads having no assigned net-name or pin-name.
    Please use provided command-line tool to extract the IPC-356 file directly from the CirCAD PCB file.


    CirCAD2ipc test.pcb

    The program creates test.ipc file, possibly overwriting any existing file!
    For additional security, please check the downloaded file signature.

    Download CirCAD2ipc.exe

How to load Gerber files set, using Auto files assignment?

As I have some feedback about problems reading Eagle Gerbers, I have installed Eagle 9.4.2 free version.
I took an Open Hardware project: hackaday/BoborBuino
There is my walk-through.

  1. I started by exporting the CAM files. The Gerber export results are saved in multiple directories, named: Assembly DrillFiles, GerberFiles.
    This is not standard, and it is not compatible with ZofzPCB Auto-Detection. No problem to move the files to a single directory, though.
  2. Automatic recognition composition of files: "drill_1_16.xln" was not recognized as a drill file. - I have fixed the "CAM_Load_Rules.txt" mask file immediately. (available by next release)
  3. Now press the [Auto Load] button.

    ZofzPCB Auto Recognition dialog-box
  4. Now press the [OK: Read & Render] button.

    ZofzPCB Stackup dialog-box

  5. Board outline:
    The board outline is in a separate file - good.
    ZofzPCB does not read it correctly, missing the PCB milling division of the 2 boards (top/bottom). What is so complicated in the board outline?
    What we need is a clear cut line, as it would guide the tool.
    I have checked the drawing in a 2D Gerber viewer (gerbv). The viewer is just displaying the line drawing instead of attempting to convert it to a "solid" polygon, of course.

    Looks like there is more then a full circle here

    I have removed those overlapping arcs, forming the circles (holes), knowing that they are repeated as drills.
    Obviously, my algorithm could not convert the overlapped arcs to single circles and quit before finishing the whole drawing. (edit: Version 2.0 features a better algorithm.)
    I could smell the problem by seeing the Gerber file size of the outline being 111KB vs e.g. copper-top 40KB. I know it will be difficult for me.
    Indeed, there is much more information in the copper layer than in the board outline, but the file size says the opposite.
    Anyway, I consider it as a zofzpcb bug. (Edit: Fixed)
    Another point - the standard size of a cut-out milling tool is 2.5 mm in diameter. Possibly this can be changed, but not to zero, to accomplish a rectangular cut-out. Inner cut-outs will be quietly adjusted - to having a specific radius "stadium" curve.
    This is not critical, but it will be edited by the cam operator the way he wishes.
  6. I have repeated the above steps. I was lucky - my guess was correct.
  7. Rendering
    The silkscreen renders for hours! It is a ZofzPCB old bug. (edit: Version 2.0 features a better algorithm.)
    Again - the silkscreen_top is 220KB (vs. copper-top 40KB.) I am giving it another try - this time using the Imperial scale. Magically it takes only one second to render. And the size of all imperial Gerbers is about half the size of their metrics versions. Why?

    ZofzPCB rendered PCB and netlist check result

  8. IPC netlist vs. Copper netlist errors:
    as the above error dialog shows, there is one short connection.
    Looking closer using menu Netlist / Errors

    ZofzPCB Netlist Errors dialog-box

    It seems that the ring around the speaker holes was added without an accompanying schematic entry or so. This kind of problem is cosmetic.
  9. I have the components display:

    ZofzPCB PCB View

    There are some differences between what ZofzPCB have shown and what the project's photos show. Some problems are the lack of proper models, some other (adjustable), - wrong detection, primarily because of non-standard reference naming. Right-click model menu lets resolve some of the problems, either by removing the component or selecting a different model, or changing some parameter's value.

    ZofzPCB PCB View - right click menu / model

  10. The final view - do not forget to save the .camset file and/or the rendered board mesh data.

    ZofzPCB PCB Final View

Check out the rendered project on The Project Gallery

What are .camset and .zofzproj files?

What is .camset file?

Preparing Gerber files set for display in ZofzPCB requires some work. The .camset file contains all the configurations created in the setup process so that you can read the Gerber files quickly for a second time. Example: after applying changes in the ECAD program and regenerating the Gerber files. If you open the saved .camset file, ZofzPCB will also read all the CAM files and render (flatten) the PCB model again.

  1. Stackup and list of all layers. For each layer:
    1. File Name
    2. Type - e.g., copper, silkscreen, core, etc
    3. Thickness, etc
  2. The board outline is a part of the stackup list. The thickness of the board outline is the thickness of the whole PCB
  3. List of drill files. For each drill file:
    1. File Name
    2. Span (thru, or from-to copper numbers)
    3. Platting type, micro-via options
  4. IPC-356 and BOM file names
  5. List of user defined layer types, like glue, gold or carbon
  6. Settings of Gerber and drill file parser, for older on incomplete headers, missing information like polarity
  7. Color settings:
    1. For each layer in the stackup
    2. For each layer type
    3. Netlist color schema
    4. Netlist color exceptions (manual adjustments)
    5. Color mixer settings
  8. Components:
    1. Result of automatic and manual component model selection, model parameters
    2. Body Builder model data
  9. Saved camera positions 0..9

What is .zofzproj file?

The file contains all internal data structures the program needed to display and browse the PCBA. The file also includes all the information the .camset file contains. Reading the .zofzproj file leads to a direct display of the PCBA model without the flattening and triangulation phase. Gerber and other CAM files are no longer needed.

  1. The file is compressed and encrypted
  2. The "Read Only" option:
    1. The file contains encrypted access flags and may miss specific information
    2. PCBA model is displayed in premium mode by a software/user without the premium license
    3. You need the premium license to create the "Read Only" file

Missing tracks, transparent PCB volume, missing PCB outline

Sometimes PCB renders in a wired way, strange gradient effects appear, PCB volume is transparent, tracks are partially missing.
Those are typical symptoms of the misinterpreted board outline.

The Gerber primary data are often accompanied by text, symbols, frames e.t.c. not representing the PCB structures but carrying descriptions targeting the manufacturer.
These parts of the image must be removed before a 3D model of the board is created. Typically ZofzPCB uses the Board Outline drawing to decide what regions of the image must be preserved and what regions are to be removed. If the detection of the board outline fails, yielding e.g. a small object placed inside (or worst) outside the board, those strange artifacts may be present.

Please check the following:

  • The Board Outline Layer must be present in the stackup if the file is available.
  • ZofzPCB can extract the outline drawing from a copper or silkscreen, if it is distinguishable from other elements, by a track thickness below some threshold. All other track objects must have their thickness value above the threshold. See "Meta Drawing" settings.
  • The board outline drawing must be made out of continuously overlapping tracks segments (straight or arcs).
  • As the description text characters may also form closed-loop track areas, please select a way to identify the outline in "How To Identify" settings.

Can ZofzPCB display µVias, Buried Vias and Blind Vias?

Yes, typically, auto-load rules will define where inside the drill file names are the from-to span layer-number values. If not, you can set it up manually before rendering. For the IPC-2581 the span values are set automatically.
The Laser Via drill files are detected automatically, based on the via sizes, ratio, etc. You can also set these attributes manually.
See the stackup dialog screenshot showing drill files options: the span (yellow) and the types (blue).

Stackup Dialog

Example of different via types visualization:
PCB image showing different via types

How to handle the Excellon Warning: drill plate 1 - unknown tools?

Excellon Drill File should contain drill sizes definition, either in the header or in the tool switch command. However, sometimes a manual drill change schema is used instead. In this case, the sizes of the drills might not be present. For example, this is the case when using Cadence Allegro default export settings.
Please change the settings - see post.

How to reduce momentary freezing in Windows caused by ZofzPCB display?

Windows 10 uses GPU to perform visual effects for GDI. If the GPU is busy rendering the ZofzPCB frames, Windows have to wait to the end of the current image to get access to the GPU. This unequal scheduling may cause Windows to operate in a jerky fashion, especially when a single image takes multiple frame times. However, there are ways to remove this problem:
  1. If you have two graphic cards inside a laptop, assign the more powerful one (dedicated) to ZofzPCB. Windows will use the CPU's internal GPU, the less powerful one, for the GDI effects. Operations will then be independent, and the ZofzPCB display will gain speed (at the cost of power use).
    Follow the steps described in the link: : how to choose which gpu a game uses on Windows 10
    Note (1) the executable name for the ZofzPCB is "Gerber3D.exe"

    Windows 10 GPU selection dialog

    Note (2) that a single monitor is connected to a single GPU in a stationary PC by using a specific display connector. The GPU switching on the fly is usually not implemented.
    Also: why does my laptop have two graphics cards
  2. Disable GPU effects in Windows. Windows GDI will not wait for the GPU to be free. Windows will use the CPU instead. : how to disable system visual effects boost performance Windows 10
  3. Reduce ZofzPCB load on the GPU - see the topic below

How to reduce the load of the GPU?

If the GPU rendering of a single image takes more then a single frame time (usually 60Hz), it makes sense to reduce display quality. Options are:
  1. Remove displaying of the sides (thickness) of the layers: Menu - View / Thick Layers
  2. Reduce sub-sampling: Menu - View / SubSampling
  3. Make display window smaller
  4. Reduce complexity of the generated mesh. Menu - View / Render Effects
    (Note that default settings are not particularly high. Use this method if you have been increasing the mesh complexity before.)

Why am I not allowed to overwrite component selection, even if the models are there?

Unlike in other 3D software, the models are created out of footprints. There must be a particular configuration of pads/holes for the generator to fit the model. Pads and footprints must always match. You never had to adjust the 3D model rotation and position or the distance of the el-cap pin, right?

  1. SMD shunt resistor
    A resistor may look the same, but there are 4 pads on the PCB. There are 2 pads for each terminal, avoiding a voltage drop on the high current solder junction. The algorithm searches to fit a 4 pad device in this place. There would have to be some arrangement to tell the program to ignore the specific 2 pads.
  2. Metal Can OSC
    The footprint is constructed to accommodate 2 types of the package: long (like DIP14) and short (like DIP8). This dual function is not visible in the IPC-356 file. The algorithm constructs a strange 6-pin device.
  3. 3-pin SMD diode
    Diode uses only 2 pins; the not-connected pin is not exported in the IPC-356 file. The algorithm fits a 2-pin diode instead. This usually can be corrected by the settings - something like "export all".

A solution for this would be a kind of IPC-356 graphical editor, allowing for removing pads/holes or adding from the drills or copper/solder-mask pads.

Some decisions are permanent in the component selection tree (e.g. this is a 2 pin device), and some are guesses (e.g. this is a resistor).
It is possible to overwrite any guess.

How to load the license key?

  1. Program without the component generator license will nag you, but it will not limit any 3D Gerber functionality except the components view, View-Only saving possibility and STEP file export. You can switch off the nagging if you select Components / Model Generator / Extruded (Free)
    ZofzPCB license dialogs

  2. The license changes the "Extruded" components view....
    ZofzPCB license dialogs

  3. ... to the "Parametric" component view.
    ZofzPCB license dialogs

  4. When you have the license key, please start the "License Key" dialog box, via menu: Components / Enter License Key.
    ZofzPCB license dialogs

  5. Please paste the complete license key text into the edit box, by clicking inside the box (cursor should blink there) and pressing the Ctrl-V keys on the keyboard.
    ZofzPCB license dialogs

  6. The text of the License Key should appear in the edit window. The text is blurred on the picture, to keep it secret. But in the real life it is just a normal text, ending with an equal sign. Note that you should preserve the upper and lower case.
    ZofzPCB license dialogs

  7. After pasting the key text (1), please check the validity of the key by pressing the [Load License Key] button (2). The info text (3) should reflect your key type and date of validity.
    Now, you can close the dialog, pressing the (X) in the corner (4).
    ZofzPCB license dialogs

  8. Note that the key text is written to the registry on the program exit. If, by chance, the program is closed incorrectly, the key might not have been saved, and you may need to repeat the copy-paste procedure.