Precision positioning of copper zone corner points


Is there anyway to view and edit the x,y coordinates of the corners defining the edges of a copper pour zone? I’d like to make sure my zone is rectangular, and maintaining a precise offset relative to the board edges. Thanks!

Doug Gordon


This screen capture came from a nightly build circa Feb 2017, but I do not believe the basic behavior has changed:

Maintaining a precise offset relative to the board edges is not difficult, since the zone-filling algorithm treats the Edge.Cut line as if it was a trace. Therefore, the filling algorithm will hug the Edge.Cut outline and leave a gap equal to the zone’s “Clearance” value. (Take a close look at the above screen capture to see how the filled zone followed the arc of the Edge.Cut, even though the zone outline was only an approximation of the notch in Edge.Cut.)

Because the board fabricator will almost always mill the outline to the CENTER of the Edge.Cut line but the filling algorithm looks at the EDGE of the Edge.Cut line, you can create a greater offset by increasing the width of the Edge.Cut line. This technique gets discussed every few months on this Forum; one recent thread is Trace Spacing Issue and also at Complex PCB edge with matching margin.



Thank you Dale, there’s some good food for thought there. I especially needed to be reminded about the coordinate display down in the corner, as I’ve tended to forget about it.

However, what I’m really looking for is a dialog or another input method that lets me type in numbers for specific x and y coordinates for any given corner point. If I have an arbitrarily shaped fill zone, and want to make sure some edge of it is parallel relative to some other feature, it’s difficult to do by dragging points; I’d like to be able to tweak the corner positions by entering my desired position.


I’m not aware of anything that sophisticated.

There is a very limited version of that capability hidden in the differential coordinate display. You must intelligently choose a location to define the Relative Coordinate Origin, then grab a vertex and move it until relative position is where you want it. Works best for making purely horizontal (or vertical) lines, where you watch for the “Y” (or “X”) Relative distance to be “0.000”. But this is not only a very limited version of what you’re asking for, it also requires some thinking, and thinking makes my brain hurt.

Or directly assault the zone boundary in the *.KiCAD_PCB file using a text editor. Define the vertices to be wherever you want, to whatever precision you’d like . . . . . but you gotta find the zone’s boundary in a possibly huge file, then contend with KiCAD’s metric units, and calculate all the vertices. My brain would be shrieking in agony.

Or maybe define the zone boundary in an external drafting program (LibreCAD, FreeCAD, etc) and import it into KiCAD as a *.DXF file. Modern drafting programs let you set up things like parallel lines, fixed offsets, tangents, etc. Would probably help if you have already defined the Edge.Cuts in the drafting program. It’s still a bunch of work to get the results you’re after.



OK, that’s pretty much what I thought the answer was, I’d just hoped I’d missed something obvious. I’ve just converted over in Diptrace, and in that program, vertices are presented in, and editable in, the Info dialog for zones. Thanks though, it helps to hear other, more experienced viewpoints.


These seem to contradict, what kind of zones (and outlines) you really have?

For a simple rectangle with vertical/horizontal edges this is a bit simpler. Use the method described by @dchisholm, but modified a little bit. Take one edge. Press spacebar on the outline edge to set the local zero point. Select the zone and grab the center of the corresponding edge, the round point, not a square corner point. Press down Ctrl and drag to a point where the local coordinate shows the correct value (either x or y). Repeat this for each 4 edges. There’s no need to follow two directions/values at the same time or calculate anything.


The width of the Edge.Cuts line no longer affects the offset in the nighties. Commit bcc8c642562ee901 disabled that.


That seems like a step backwards. Using the width of Edge.Cuts lines to create the board-edge-to-copper setback was a little clumsy (and certainly not obvious to anybody who didn’t know the trick) but it worked!

After this commit, do copper pours go all the way to the board edges? Or (even worse!) will the zone be poured all the way to the zone boundary, even if it’s outside the Edge.Cut boundary?



Now uses just the zone clearance.
I think the idea was to add a new field somewhere to explicitly define the additional offset, but it hasn’t been done.


I doubt that. That would require changes to the file system which are not allowed for 5.1.
So this should really be reported as a bug.


I don’t know the details of the file format but that possibility crossed my mind