You taught me something else. I did have to poke around to find that icon. Previously I had just put (pin 1 or footprint center) at 0,0. I tried the anchor place button and in fact it shifts the 0,0 point of the footprint to the new anchor place. So it seems that I was not wrong… BTW I used a TO220 as the “guinea pig.”
I was giving this idea of central anchor some thought.
It’s not needed for res. cap. or inductors.
It is pointless for electros, ICs, discreet transistors, transformers and diodes because as soon as you move them you have to shuffle tracks around.
It is no good for horizontally mounted connectors because they will no longer point out from the board.
It would work for vertically mounted connectors as long as they were perfectly symmetrical.
If you had say 2 rows, one even no. of pins the other odd, it is no good either for the same reason as transistors etc.
How many vertically mounted, perfectly symmetrical connectors are there, and did I miss other components that may benefit?
Perhaps I am missing a point. I have the pet peeve (with all Electronic Design Automation Software?) that resistors and ceramic capacitors have pins 1 and 2. I do not care which is which. But the footprint needs to have pins 1 and 2 connected as they are in the schematic. I wish there were some settable “property” which allowed the software to swap or ignore pin numbers on non-polarized 2 pin components.
My point in saying the above is that you DO need to rotate those R and C footprints so that the pin connections agree with what is in the schematic diagram.
That gets to another annoyance…that when KiCad assigns net names it might name a net “R27 pin 2”.
We draw the pretty picture in schematic and push the button then kicad dumps our jigsaw pieces on the PCB table. We then push 'em around into some sort of cohesive order according to rat lines and “other stuff” so the basics such as 2 pin non-polarized or which side of the Q screws to a heatsink are usually properly orientated before any tracks are laid… they are already being moved so a bit more push and shove doesn’t really matter. Spinning a connector through 180 degrees would only occur after the first attempt didn’t work out well when half or more tracks are laid out.
That’s my thoughts, and I totally agree with your comments on 2 pin non-polarized jig-saw pieces.
This is a much better request than central anchors.
The anchor point, i.e. the internal coordinate zero point, of the footprint is relevant for the SMD parts because it can be expected to be the centroid or center point for assembly machines.
If there exists assembly machines which handle THT parts, I doubt pin 1 would be a better choice. The anchor point is irrelevant for manual assembly; it’s relevant for editing the EDA layout, and as the OP explained, may be relevant for MCAD, and there the chassis or other physical centroid is better as much as it’s possible to find.
Whether or not the coordinate zero is in the pin 1 or somewhere else wouldn’t matter if KiCad could use the centroid calculated using the Fab outline. That would work for almost all cases. It could be used automatically like this:
Use the coordinate zero anchor point if it’s different that pin 1 location.
Optionally, if the coordinate zero is the same than pin 1 location, calculate the Fab outline centroid and use it. This would be a global user configuration option.
Many (I recognize not all) horizontally oriented connectors are often placed on the edge of a PCB, and in those cases the datasheet usually gives a suggest board-edge placement. In this case I think it would make sense to have the center point in the middle of the connector along the suggested board edge. Other horizontal connectors (like horizontal pin headers) I can see arguments to putting the center in either the geometric center of all the pins, or in the middle of the leading edge of the expected mating connector.
That said, making a sea change like that to the existing libraries (which AFAIR pulls many of the conventions from IPC, not sure if the center of THT parts is one of those conventions pulled from IPC) could cause more problems (and require more effort) than is warranted. Especially since copying a footprint from the provided libraries and setting a new center point is trivial and only needs to be done once per footprint per designer.
Lol. I forget if it was with you or someone else, but I’ve had discussions about this exact thing on this forum. (Usually ending with agreeing to disagree…) I actually find knowing which is pin 1 or 2 on a non-polarized part important for documentation. I’ve written modification paperwork and it is (IMHO, of course) simpler to say “cut the trace by R45-2” than to say “cut the trace on the end of R45 closest to U45-7”. Thus I create a parallel set of libraries for me to use on my projects that has pin numbers on non-polarized symbols, and a square pad on pin 1 of all THT parts. But, I recognize that my way is just one of many ways through the hinterlands of PCB design, so I’ve never campaigned to get KLC changed for my whims.
I am laughing a bit because your thinking could introduce a new nuance of meaning, thereby complicating matters further. Let’s say that pin 1 of R17 is connected to pin 2 of C9. What if…whichever way I place the footprint on the pcb; the R17 pad which is connected to C9 pin 2 becomes pin 1 of R17? So the pin designation would be defined in the schematic, but without any physical distinction in the symbol or component or footprint before it is placed?
Well, as long as it is defined by the time I’m cutting traces on a physical board and referencing the “finalized” (and red-lined) schematic to know which trace to cut, it doesn’t really matter when pin1 is defined for R17 (or any other non-polarized 2-pin part) before the board is made. Computers are simple things, so getting pin1 defined as early as possible reduces complications at the small cost of having to rotate R17 when laying out the board. (Yes, I say small cost, and recognize that small cost can nickel-and-dime to a large cost on a board with lots of components).
By simple, I was referring to intellectually simple. I probably should have worded it as “simple minded”. No, I haven’t written a new OS, but I have written assembler where it only does exactly what you tell it and no more.
I am among the first on this forum to “pull someone’s leg” and I did not take your remark so seriously. But I think of computers as being about the most complex of human-made devices.