Skip to navigation

Let me know...

If you encounter a bug in the program, please send details of the problem along with the Crash Report to
Set of gerber files (a subset even better) allowing me to repeat the problem is substantially helpful. The files will be kept secret.

ZofzPCB Log

Bug List / To Do / deferred:


Make Feature Request or Vote for Features


Version Log



Recent Hotfix (

  1. Triangulation bug.
  2. STEP export for Electromagnetic Field Solver: no overlapping via-barrel and track, Sorted by NET.
  3. Board outline in the form of Meta-Drawing (impossibly thin line on a copper layer) UI Bug
  4. Selecting Tracks and more mechanical measurements.
  5. Better flattening and triangulation stability.
  6. Small bug in STEP export.
  7. EXCEPTION_ILLEGAL_INSTRUCTION - SSE4 instruction used by mistake. Related to specific CPUs, like AMD: Phenom, Athlon, Sempron; or some Intel below Core i
  8. Autoload - problem inside zip.
  9. Autoload adds too many cores, in some cases.
  10. IPC-2581 Thermal Pad. (Circular only, at the moment)
  11. Windows 8.1 black screen.
  12. Problems reading .camset and IPC-2581 from inside zip files.
  13. Menu: View / Light (Components); dialog box "Light Parameters (for 3D-objects)
    any slider adjust all sliders values below.
  14. Measurement balloons text not updated.


ver 2.0 ()

Download Page

  1. Rewritten Flattening Algorithm
  2. Standard Windows UI
  3. Improved IPC-2581B (understanding Altium style)
  4. 64-bit program - works only on 64-bit Windows
  5. STEP file export - internal layers option


ver 1.3.100 ()

  1. IPC-2581 file format import
  2. Peel layers mode really hides the peeled off layers.
  3. Spaces in STEP export filename are not handled properly.
  4. Slight numerical inaccuracy in a big arc shape was not accepted, causing the STEP export module crash.
  5. Netlist browsing dialog boxes have a netlist name mask entry now.
  6. If BOM file is processed, components not included in the BOM are initially "Hidden".
  7. Sometimes, either by automatic modeling or by the user mistake, parameters of primitives, like the (polar)cube below, are creating "negative" surfaces. Here, two fillets adds to have more height then the height of the complete primitive.
    This is just creating a visual artifact, but it is not crashing the program. It is not that simple in the STEP export, however.
    Workaround: if you see an exporter crash, check the last rendered part. Try to fix the dimensions in the Body Builder.
    impossible cube
  8. Faces rendered to null objects, caused communication error in STEP export.
  9. Enlarged memory access ability from 2G to 4G.
  10. Netlist selection vertex buffer corruption, visible in big projects.


ver 1.3.1 ()

  1. STEP file export is moved to a separate 64-bit module - export size limit is virtually removed.
  2. The above change limits the use of the feature to 64-bit Windows 7,8 or 10.
  3. STEP file silkscreen export added.


ver 1.2.0 ()

  1. Major upgrade - STEP export
  2. Bug fixes
    1. Crash on IPC-356 load
    2. Crash on a complex scattered pinout recognition
    3. Mixed THT/SMD connector not shown, when placed on the bottom side


ver 1.1.2 ()

hot fix 2

  1. "Meta-Drawing" and "How to Identify" dialog boxes numeric values were stuck.
  2. CrashReport tool edit boxes and the back end changed to UTF-8, allowing for e.g. Russian and Chinese characters.


ver 1.1.1 ()

hot fix 1

  1. Crashing on re-annotation and the component edit.
  2. More exact hit counting on automatic assigning files to layers, to cover Protel v.s. KiCad - Protel Compatible file sets.
  3. Test points on the same location crash - e.g. power transistor radiator pad made out of grid of small pads. The program does not crash now, but the pads are not "rejoined" in the detection process yet.
  4. Adding 'T','B','M' modifiers on the drill mask description, in the CAM_Load_Rules.txt file. The modifiers allows for using numbers to define internal layers, starting with internal-1 and words for top and bottom. See CAM_Load_Rules.txt file, section KiCad.
  5. Non-monotone triangulation glitch on the cross-cut, the J-SMD pin.
  6. Section CIRCAD added to CAM_Load_Rules.txt file, Also, a tool to export IPC-356 out of the pcb CirCAD file, solving missing pins problem, available on the FAQ page.
  7. Demo-3 - added missing connector, using body builder - See on Youtube.
  8. Added SO8-DIP 0.1" SMD 6-10 pin package.
  9. Add RefID "K" - for push button detection.


ver 1.1.0 ()

  1. Major upgrade - Body Builer - editing components body. (Pins are only possible to edit via modeler parameters.)
  2. Tool chain change from VS2012 to VC2017.
  3. Windows XP no longer supported.
  4. FFC/FPC and PCB-2-crimp connectors.
  5. Some configurations of the edges, the "hollow" effect triangulation could cause a problem, visible as covering of holes. In a very specific cases, the algorithm could crash.
    shortcuted circle
  6. The "Net Selection Effect" menu is initially disabled, until a file load is executed.
  7. Truncated Reference Names in the IPC-356 could not be matched to BOM file, causing the columns auto detection fail. The fix works only if the names do not overlap, after truncation.


ver 1.0.5 ()

hot fix 3 of 3

  1. Binary mesh file (.zofzproj) format bug, related to complex apertures.
  2. Binary mesh file (.zofzproj) format is now LZWA compressed and AES encrypted.
  3. Binary mesh file (.zofzproj) format can be saved in a View-Only mode (premium feature). Component Modeler license is not required to view the components in this mode.
  4. When creating the View-Only file, it is possible to limit functionality, like UHD printouts, allowing viewing, but limiting reading of certain manufacturing details.
  5. More 3D components, THT: oscillator can, 4-pin push-button, 4-pin universal DIP, 2-row pin headers, including 90deg, barrel power connector; SMD: power inductors.


ver 1.0.3 ()

hot fix 2 of 3

  1. Board Outline, declared in stackup, but rendering to no "loop", i.e. no surface, can cause a crash. A simple bug fix it is not enough, as the resulting PCB will be simply empty - that is confusing
  2. Grouping tracks/pads/etc... into groups of overlapping objects. Creating the copper netlist and separating objects for geometry calculation. In case of 2 outlines (polygons) touch test, one of the segments of one of the polygons was spiked, in most of the cases. It was a kind of "how was it working at all?" error. One victim, as far as I know.
  3. Inability to detect the footprint features will no longer result in an exception (crash), but just an undetected component type.
  4. Crash when saving .zofzproj file containing a sparse BOM table.
  5. Reading BOM component designator ranges, like: "R1, R5-R10, R15-R17"


ver 1.0.1 ()

hot fix 1 of 3

  1. Fixed problem witch the IPC-356 parser option: "Long ID/Pin name correction". The option allows to read an non compliant file, where component id and pin name text are longer then assigned space in the IPC-356 specification. The option is enabled by default. Lines containing a "M" marker are not read, also from the compliant files, if this option was enabled.
  2. The shape recognition algorithm was unable to find pin "1" in case there were only non-plated holes in a component. Such condition could be caused by above bug. Uninitialized value was used as index, causing a crash somewhere later in the execution, because of a memory corruption.
  3. In some rare cases, rendered PCB, saved as a ".zofzproj" file, was corrupted.
  4. Component geometry detector crash on some complicated BGAs.


  1. BGA/PGA components packages.


ver 1.0.0 ()


  1. Freemium model - Gerber Viewer is free, Component Modeler is premium.
  2. More components in the modeler: QFN/DFN, 4/5-Bump, 4-pin SO and DIP, 4/2-pad chip-crystal, push-button...
  3. Micro Via display, including buried vias and micro via netlist check.
  4. Improved hole metallization display, added separate internal and external surface.

fixed bugs

  1. Non-plated holes are removing copper now, as plated holes do.
  2. Zero length tracks - still some annoying problems fixed.
  3. IPC-356 sometimes contains burred vias, "no-copper" error was shown.
  4. Jump to a single via node (not containing a component pin) was a jump to (0,0)


ver 0.9.107 ()

hot fix

  1. Component recognition crash on complex packages,reading IPC-356.
  2. Single layer board volume (core) - wrong thickness calculation (zero=transparent) when no mask or silkscreen.


ver 0.9.105 ()

hot fix

  1. Gerber read: Zero sized straight track segment removal removes one more legit track.
  2. Rendered Board (.zofzproj) Save/Load when no components are present bug.


ver 0.9.103 ()


  1. Added right panel check-box allowing to disable display of holes and board edges, named "Verticals".
  2. Added drill file settings, allowing for stacked vias, µvias, filled vias. Copper layers and netlist are handled properly. Vertical elements of the new via styles, still need to be added.

fixed bugs

  1. Single layer board volume (core) - wrong thickness calculation (zero). The pcb-volume is assumed to spread from bottom surface of top copper to top surface of bottom copper.
  2. "Opaque" marking of the color setup slider should be on it's right side
  3. Component Library, single row multi-pin (>3) THT components, like SIP-4 or TO-220/5 may have not correctly ordered pins. The problem is visible by net / pin selection.
  4. Gerber read: Zero sized straight edges of polygons can be misinterpreted, especially if the given polygon contains only zero sized straight edges (and is therefore a null object).


ver 0.9.100 ()


  1. Component Modeler License check instead of time limitation of the Component Modeler functionality.


ver 0.9.025 ()

fixed bugs

  1. Zero sized drill used for routing (actually a meta information drawing on the drill "layer") caused a crash.
  2. Gerber flash without giving any new coordinate was ignored. Example: flash at the end of track, without repeating the coordinate.
  3. Components having pins in the same place (a "virtual" component in the particular case) crashed the component shape detection.
  4. [Set Equal Spacing] button in Board Outline "layer" in stackup dialog was not updating the stack display thickness values, when no extra core layers needed to be inserted.


ver 0.9.023 ()


  1. PLCC case pin-netlist shift bug.
  2. UI improvements: mouse LMB click on component/pin when Netlist or Components dialog is open.
  3. Mixing RMB popup menu Model and Component List dialog editing could cause a crash.


ver 0.9.022 ()


  1. Crash on running Netlist/Test, when a net selection is open.
  2. Hidden component right-click list broken.
  3. Component search/edit UI bugs.
  4. Component editing is now immediate. A separate dynamic mesh buffer for the edited component is implemented.


ver 0.9.021 ()


  1. Sometimes calling the Model Menu can crash the program. This happends after removal of the model menu, by poping up some other dialog.
  2. Gerber stray space character after '*' star character.


ver 0.9.020 ()


  1. A lot of new component classes are added to the internal library.
  2. Menu system for selecting component types and adjusting component parameters.
  3. Mathematical operations for aperture macro definition: unary "-" and "+" and parentheses "(", ")" are added, as defined in GerberX2.
  4. Some file names are longer then dialog box - implemented horizontal scroll bar.
  5. Option to sort files by date/time.
  6. Lighting - simple ambient and difuse light dialog.
  7. CAM_Load_Rules - added sections OrCAD (Alexiej) and Cadence Allegro (Benjamin).
  8. CAM_Load_Rules - must be more visible - added edit button in the autoload dialog.

bug fixes

  1. Aperture Macro rotation center adjusted to the new clear Gerber definition.
  2. Aperture Macro rotation for circle added as option - defined by GerberX2.
  3. Save/Restore of the program window position and size may permanently prevent the program from starting, if minimized or otherwise inactive window position is saved. The Direct3D can initialize only in visible window - program was exiting with Direct3D device error.
  4. There was a hot-fix for old PCAD inserting space characters in Gerber files. The hot-fix was also removing spaces in G04 (comment). That was making problems when the comment string was starting with digits. eg. G0433...)
  5. Excellon routing offset matching to Gerber was not working. Slots could disapear or be miss-placed.
  6. The macro definition was not flattened before it's use. Negative drawing was preserved and was destroying parts of drawing outside the macro.
  7. Very short arcs were replaced by a full circle. This condition detection is now set to trigger on equal points only.
  8. Irregular pinout (via IPC-356) could hang the program.


ver 0.5.0018 ()

bug fixes

  1. Adding step and repeat have been changing ".zofzproj" format. This should have been accompanied with the .zofzproj version being incremented. I missed this. Unfortunately ".zofzproj" files which are saved by version 0.5.0015, are unreadable by any other version.


ver 0.5.0017 ()


  1. Window position is stored in registry and restored on the program start.
  2. Easy switching between Display and ManualEdit of the stack file assign dialog.
  3. Random color generator for net colors is connected to net names, if IPC-356 is loaded.
  4. When IPC-356 is loaded, net color edits are stored in the .camset file, related to the net names.
  5. Zipped Gerbers-set file input. Unzipping (and zipping) is transparent to all browsing functions, including New/Auto
  6. Step and repeat for Gerbers and NC-drill files (finally).
  7. Single Layer Mode is activated by Ctrl + left mouse button click on the layer enable check-box now. That replaces Double-click activation.
  8. Freemium Stub
    1. Components visualisation is divided in 2 levels: Extruded models (free) and Model Tables (Premium).
    2. STEP component models, when implemented, will belong to the premium part.
    3. Premium functionality is temporary free, till March 1, 2017.

bug fixes

  1. If the program window dimension changes, or is in any other way recreated, during the triangulation phase, the program crashes.
  2. Samba folders were not sorted. Actually there was no file-list sort at all.
  3. Buffer overrun in Auto-offset. Histogram bins max value "512.0" instead of "511.5" and "round" used for speed.


ver 0.5.0015 ()


  1. Reading of the BOM file. Component info is displayed on the right plane.
  2. Tabelarized Component Library, autodetection. In case a component is not identified, the former "extruded" form is displayed. The component tables are stil under development. Currently, implemented are: L-lead (QFP, SO, SOT, DPACK), J-lead, DIP, chip capacitors (resistors).

bug fixes

  1. GUI bug - folder selection crash. I could not see it for a long time, but it seems I have fixed it with your help.





External Resources

  • OSH Park is a community printed circuit board: OSH Park logo
  • What is "Dirt Cheap Dirty Boards"? dirty pcbs logo
  • Electronics Design Checklist Form: Hank Wallace
  • PEI-Genesis is a global leader in the design and assembly of custom engineered connectors and cable solutions for harsh environments. PEI partners with customers to design engineered solutions that meet specific application requirements and then delivers with speed, service and consistent quality that is unmatched in the industry. PEI-Genesis
  • Get your PCBs made: Dangerous Prototypes
  • Human-edited download directory: download-tipp
  • Service and Resource Guide:
  • See the PCB manufacturing process: Eurocircuits Video
  • Manual Gerber-files assignment, ZofzPCB demo: Juan Vargas Video