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.


1 Like

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.

1 Like

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

I was trying to keep my explanation as simple as possible, but I may have over-condensed. I should have said: In some cases, I’d like to align sides to be parallel to the x- or y-axis (as in a rectangle), but in other, more complicated instances, I’d like to ensure symmetry in (for instance) a cut out. Either of these I could do had I access to the numbers behind the shape’s control points. This is a relatively trivial task in Diptrace, which provides access to the numerical x-y data behind a shape. I was hoping for something comparable in KiCAD.

Yes, that’s a large blind-spot in Kicad.
It is common to be able to drill-down to the vertex list, and edit any item, on other CAD pgms.

In KiCAD you can select a Zone polygon, and then can see each vertex on the status line, as the cursor snaps, but you cannot edit those numbers, in KiCAD. (you can of course load the file into editor, search for the XY you can see on status line, and change that…save, and reload in KiCAD… )

Move Exactly allows relative changes, but those apply to the whole Zone selection, not one vertex.

If you are lucky, careful selection of Grid and Zoom and manual moves can help manual nudges.

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