Coord systems, arc angles and inter-PCB copy-paste

Hi all,

I’m a KiCad and PCB newbie trying to get into this stuff, and I have a couple of questions I’d be glad for any hints, please bare with me;)


  1. Coordinate Systems

I’ve read about “grid coord system” vs “drill coord system”, but I am still confused.

In cleaning up my PCB, I’ve made sure all edge cut objects (not tied to footprint originated cutouts) have points on a mm grid.

I have set both grid origin and drill origin to the same point (left top) … this seems to be indicated by the overlaid red and green crosses in below screenshot.

Nevertheless, the coordinates of points in cutout elements do NOT fit that origin. Please see this screenshot

Specifically, the arc doesn’t have the expected (x1, y1, x2, y2) of (0, 3, 3, 0).

Why?

Sidenote: I want to see/edit coordinates based on the origin I have set. I don’t care about the printing/page coord system at all …


  1. Arc Angles

Some of the angles of arcs in my cutouts are shown as not 90° even though they are based on the coordinates of the arcs.

I have tried to redraw the arcs, and while drawing, I get the exact 90° - but once I place the arc, the angle property is not 90° but slightly off.

Why?

From the x/y coords, it is 90°, not something close. Is that a bug?


  1. Copy-Paste between PCBs

I want to test my PCB cutout with only the ground planes and PCB antennas, and for doing that, I tried to copy-paste the cutout layer from PCB A to PCB B.

I am having a hard time preserving the exact positioning and coordinates while doing so. I tried a bunch of things, but after placing the copied cutout, the item coordinates are always slightly off even though all grid setting, including origins are the same in both PCBs.

Why?

How do I copy-paste stuff between PCBs preserving exact coordinates?


Again, any helps would be greatly appreciated. I have tried various things, read docs, searched on the Web, but at this point I am lost, and I feel I miss some fundamental points.

Cheers,
/Tobias

To the first question: The coordinate origin is always at the top left of the sheet. It is marked (1).


Regarding 2: The start and end points are different.This results in a different angle.

2 Likes

Have you read Coordinate system, grid and origins in the PCB Editor ? Set the Display origin.

Internally graphic arcs are implemented with two endpoints and middle point. The angle is calculated. Therefore it depends on the exact coordinates of those three points – many angles can’t be calculated exactly even if it would theoretically be a simple number.

We always have to remember that everything which can be manufactured can already be represented much more accurately than what the real world tolerances require. It would be better to forget that “slightly off” problem. But I understand some people feel uncomfortable with that, including myself.

1 Like

When you have selected the original items to be copied, move the cursor to exactly to the location which you want to use as the reference point. That becomes the zero point in the clipboard (you can see this by pasting to any text editor – it’s human readable text). In the destination, place the cursor again to the new reference point and then paste. The zero point will be locate in the new cursor destination point.

1 Like

Interesting!

Using your hint, I was able to copy preserving coordinates - but only if I carefully move the cursor to the mid point of the top-left arc and pasting to the exact location in the target PCB.

Placing the cursor over my current grid & drill origin leads to an unwanted offset when pasting.

I will analyze the clipboard data, thanks for that tip as well!


I was naively assuming that copy-pasting would copy data based on grid origin in PCB A, and then translate that when pasting into PCB B relative to the grid origin there.

Mmmh. Pretty surprising behavior.

Anyways, I’m not to criticize this stuff, but I must understand what exactly is going on, and whether whatever behavior the tool has, that behavior is constant and consistent. If so I can adjust and am fine with any behavior, expected or not;)

Yeah, I admit, I am the kind of ultra-precise and paranoid guy. Guess this comes from my SW/math background. I want to be able to verify manually at least once exactly, otherwise I can’t build trust into a tool.

Anyways, all of you, thank you so much for your tips!! This allows me to continue to investigate and figure it out! Will reply/comment then.

The property box for arcs only show me 2 - the mid point is not shown. That means, I can’t verify manually.


I am still confused by what I am shown, regardless of above though:

obviously, an arc between (x1, y1 + d) and (x1 + d, y1) with midpoint (x1 + d, y1 + d) is always 90° for any x1, y1, d and in any Cartesian coordinate system.

Anyways, I’ll figure it out. Or maybe “more mentally healthy”: get over it. It likely doesn’t matter with real world manufacturing. Well, the “getting over it, it’s roughly correct and good enough” part if very hard for me;)

If you want to have precise control over the copy-behaviour you could try the “Copy with Reference” command:

  • make your selection
  • RMB-click–>get context menu–>Positioning Tools–>Copy with Reference
  • now click on your wanted “reference” point (a grid position, or some footprint anchor, middle of a pad, whatever)

If you like that behaviour you could assign a hotkey for that command.

1 Like

Using your note and figure, and using the docs that @eelik linked right below your answer, I finally found what I was missing:

Set “Display origin == Grid origin”

Now the arc coordinates are relative to my defined grid origin

Bildschirmfoto vom 2023-11-05 20-13-23

Fantastic!! =)


FWIW, the behavior resulting from above setting is what I expected by default. Why would I care about page origin other than for printing? Hence the relation between grid and page origin I would have expected in the “print dialog / page setup”.

Anyways, fine for me, now that I know it;)

Ok, I’ve verified what you describe does work, but only if the chosen reference point is an endpoint or midpoint of an element on the source PCB (cutout in my case).

Such points are translated and copy-pasted exactly.

If one choses the grid origin, a point outside the PCB cutout, or an arbitrary point within the cutout, regardless of whether on a cutout line or just anywhere within, it does not work - an offset results.

My guess would be that the internal determination of the reference point for the clipboard data has some fancy logic which only happens to preserve the user selected reference point if such a point exists as a start/end/mind point of an item.

Anyways, I’ve got it working, know to how to achieve the desired result. Thank you so much!

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