Negative plot isn't negative copy of positive

Version 5.1.5-5.1.5, release build
wxWidgets 3.0.4 Unicode and Boost 1.71.0
Platform Linux 5.6.0-1-default x86_64, 64 bit

The simple layout, negative plot adds big black painted border to outline area.
Happens in both, PDF and SVG

by negative photoresist process, all copper below will be etched.
Save the world, please…

BTW I’m software developer, If somebody can point me where to start to read about architecture, and would like to give some hints…
maybe I can do it…

For example @Seth_h or @JeffYoung might be able to help with that.

@AlexKern, the plot code is mostly in plot_board_layers.cpp and plot_brditems_plotter.cpp.

@Seth_h might have some architecture docs from some of the “intro” talks he’s given at various conferences.


BTW: the dev email list is; the GitLab instance is

Hi @JeffYoung,
repository already cloned. I’m fighting now with build dependencies.
Has somebody a hint about “Cannot find wxPython.h” for a passionate OpenSUSE user :wink:

wxWidgets 3.0.4 produces
Could NOT find wxWidgets: Found unsuitable version “…”, but required is at
least “” (found
Call Stack (most recent call first):

But after upgrade it to 3.1.3, another unsolvable issue
have python-wxWidgets-3_0-devel with /usr/include/wx-3.0/wx/wxPython/wxPython.h
but wxWidgets-3_2-devel /usr/include/wx-3.1/…


Yahoo Bingo! Building…

When an include file is missing, usually the -dev or -devel package needs to be installed. Probably this one or a more recent version:

$ zypper info python-wxWidgets-3_0-devel
Loading repository data...
Reading installed packages...

Information for package python-wxWidgets-3_0-devel:
Repository     : Main Repository                                
Name           : python-wxWidgets-3_0-devel                     
Version        :                              
Arch           : x86_64                                         
Vendor         : openSUSE                                       
Installed Size : 2.6 MiB                                        
Installed      : No                                             
Status         : not installed                                  
Source package : python-wxWidgets-3_0-     
Summary        : Everything needed for development with wxPython
Description    :                                                
    wxWidgets is a free C++ library for cross-platform GUI development.
    With wxWidgets, you can create applications for different GUIs (GTK+,
    Motif, MS Windows, MacOS X, Windows CE, GPE) from the same source code.

    This package contains all files needed for developing with Python
    bindings for wxGTK.

Do not use wx 3.1.x unless you really know what you are doing. It has many quirks that we are not fully supporting yet, and also makes incompatible changes occasionally (which we are in the process of fixing).

Additionaly, wxPython does not support wx 3.1.x, only 3.0.x.

Hi, thanks.
Come to the same result. After I uninstalled all packages versioned of 3.1.3 and cleaned CMake cache I’ve got successful build.


This black margin for negative plot aims the visibility of element from “Edge.Cuts” like orientation marks in pictures of initial posting.
The problem is that we advise to paint inverse all elements in all layers. Actually the Edge.Cuts elements are “outline” and have to be just visible, nothing more.
They have to be black on white paper, or inverse to background if we would like to paint some area above “inline” (e.g. save etch and keep copper or vice versa).

Still thinking of minimal invasive solution.

Update again.
There is no chance to change internal life of plot object. This will be used for drawing in too many places.

It can be sufficient to inverse background of all items of “Edge.Cuts” layer. And this can be done in advance.


Have you considered just using a pair of scissors to cut the offending area off?

Thank’s for offer.

It’s indeed possible. But I would still prefer to avoid inverse everything without my will.

Now I have the solution (locally).
The only issue I still hunting, is why the initial value appears only after I move focus to edit area?
Results for zero-size
And for 5mm

Now is the time (I think) to prepare pull-request…
What do you think?
Is there some procedure?


So, If I understand correctly:

You started with a function to invert the black / white, apparently for negative film photoresist, which seemed to work perfectly, looking at your first screenshots.

And then you’ve changed it into something that does not invert anything on the board at all and just does something weird with the borders outside of the the PCB, which are not very important anyway.


Hi paulvdh,

not quite so.
Look at negative in the first posting in thread. The entire outline is inverted and behavior cannot be changed.
I would like to avoid that. At home conditions (and that what PDF/SVG plotting is for) I cannot span the photoresist foil clear to the PCB boundary. To get acceptable result even with laminating, I have to go over the border for ~5 mm. I’m using negative photoresist foil. The area covered by opaque will be etched away. And main concern is to avoid that. That’s what I’ll use most of the time.
image .

The next picture just shows, that somebody willing to etch everything upon, can still do that and even can control how far he can do that.
image Example with 5mm (the range is 0-20mm).

By the way it’s also working for positive photoresist. You can force a knockout area here. Example with 3mm.

I would repeat that this has a meaning only for hobbyists, trying to save etch material and occasionally the planet ;-). Developing the board for mass-production you will never bother yourself with such details. In fact it even does not make any sense to create negative plot for you.


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.