I’ve tried searching the history but all related posts I’ve found are quite old. Perhaps KiCAD 6.0 has a new way of doing this.
I have to precisely position a bunch of components (LEDs) on my board to line up with corresponding features on my case. They’re at irregular locations, so a rectangular grid or array won’t help.
I’ve designed the case in CAD (Fusion 360), created a reference sketch keyed to the case geometry, exported to DXF, and imported to a user layer in the PCB editor. So far so good.
I did so because I expected to find some kind of ‘gravity snap to nearest vertex’ command in the PCB editor. Is it hiding somewhere?
At the moment, I’m reduced to using a super-high-resolution grid and eyeballing it. There’s gotta be a better way.
in v6 footprints (assumed they are on top-layer) can snap to:
other footprints (anchorpoint to anchorpint)
endpoint of lines on the top-copper-layer.
corner-points and mid-side-points of graphical rectangles (on top copper)
all corner-points of a drawn polygon at top copper.
center-point of circles
precondition: look at preferences–>pcb-editor–>editing-options–>Magnetic Points and set “snap to graphics” to “always”
If you have only a small number of footprints which you need to position: doubleclick each footprint and enter the x/y-coordinates in the “footprint-properties” dialog
If you want to go the “snap footprint” way you have to:
draw a polygon in MCAD (Fusion). The polygon should connect all LED-points, every corner point of the polygon == one LED-position
alternative draw a circle (diameter >= 2mm) onto every desired footprint-point
import the saved dxf-file into pcbnew, onto the F.Cu (top copper) layer.
change the grid to some very coarse setting → this simplifies the snapping functionality
drag the desired LED-footprints onto the circle/polygon-corner-points. A snapping-circle should appear if the footprint approaches the circle/polygon
Thanks a million, mf_ibfeew, that’s exactly what I was after. It works great.
The only thing I was missing was to import to the copper layer. That seems counter-intuitive, since I don’t want this geometry to define any copper.
Should I remove the alignment geometry once my footprints are placed? …or will KiCAD ignore my imported geometry when creating the Gerber for that layer?
or will KiCAD ignore my imported geometry when creating the Gerber for that layer?
No. But Kicad would probably report a massive amount of DRC-errors (as your imported copper-graphics interfere with the copper-pads of your LED-footprints) so it would remind you to delete the graphics if you forget it.
With this deleting-action in mind: during import of the dxf-snapping-graphics: choose checkbox “import as group” → so you can later delete the whole snapping-graphics with one delete-action.
While moving footprints, I can not manage to snap to circles on a graphical layer, but I can snap to circles drawn on any copper layer.
The best workaround therefore probably is to temporarily increase the layer count of your PCB with Pcb Editor / File / Board Setup / Board Stackup / Physical Stackup, and then import your graphic on an extra copper layer to have your snap points.
Another trick that can work in some situations is to change the grid location for each move. The grid origin Pcb Editor / Place / Grid Origin S does snap to graphical items, so if you align the grid with a circle, you can place a LED on the grid and align with that circle. You do have to move the grid for each of the LED’s.
Not really so.
While moving footprints, I can not manage to snap to circles on a graphical layer, but I can snap to circles drawn on any copper layer.
ok, my first statement was not exact. It should be:
snapping works only at elements on the layer which the moved/dragged/drawed element is on:
moving SMD/THT-footprints on top (F.Cu) snap to elements on top copper (not bottom)
moving SMD/THT-footprints on bottom snap to elements bot copper
additionally for THT-footprints: if moving the THT-footprint with a selected pad it really snaps to items on all copper layers. for this:
checkbox “allow free pads” has to be of in preferences
select only a pad of the THT-footprint (not the whole footprint)
now hit hotkey “m” for “move” → this moves the whole footprint and snapping occurs to all copper layers (as paul said)
moving/drawing graphics on silkscreen (or any other non-copperlayer): snaps only to other items on silkscreen
For me the actual feeling is that the snapping is not 100% consistent througout the whole design-process and has too many exceptions.
adding footprints: no snapping
copying/pasting footprints: snapping
moving footprints: snapping
dragging footprints: no snapping
moving vias: seems to depend if the via was placed during track-routing or as free-standing via
the above mentioned difference if a THT-footprint is moved as footprint or moved after selecting a pad (ok, this could be tagged as feature for experienced users)
Due to this constrictions I try to use only the 2 basic snapping features:
graphics elements to other graphic elements on same layer
Thanks to all who provided feedback to this topic. Great tips.
I’ve chosen to move the geometry to a user layer after layout, as suggested by mf_ibfeew.
I figured out a trick of my own too.
The LEDs I’m placing are the addressable sort (SK6812), which each have a companion capacitor. I’d like to place the center of the LED using the aforesaid techniques, but keep the capacitor at a uniform location relative to the LED. The method I came up with is:
Move the LED to a grid point.
Move the capacitor to its companion point, also using the grid.
Shift-select both the LED and the capacitor
Initiate the ‘move’ command with the cursor at the LED footprint’s origin point (which, thankfully, is at the center of the light source).
Now, I can snap both components to the reference geometry, keeping the capacitor in its proper relative position.
Positioning the LEDs was easy once I got the reference geometry into the right layer, because the LED footprint’s origin was conveniently located right where I wanted it: at the center of the light source.
I’m now trying to do the same thing with a barrel-jack component that must also line up with a case feature. My reference geometry for the jack is simply a rectangle showing the physical part outline.
I could lookup the footprint origin and make an offset reference mark to match, but I’m wondering if there’s an easier way. I’m looking for something like a ‘point-to-point move’ that would let me snap an arbitrary vertex on the footprint to target vertex.
I can pick the footprint up by one of its pads and move to a target, but I really want to use a silkscreen feature in this case… I imagine I might want to use the courtyard sometimes, etc.
set grid to some medium value (1,0mm) to allow good snapping
set grid-origin (mainmenu–>Place–>Grid origin, hotkey “S”) to your destination-point. grid-origin should snap to many items including silkscreen+courtyard
select footprint , → RMB-click–>context-menu–>Special tools → move with reference
you can now select the reference-point for the ovement, these point snaps also to many items including silkscreen+courtyard-lines on your footprint
because your destination-point is ongrid the following movement can move the footprint exact onto your destination point
don’t forget to reset grid-origin with “reset grid origin” (hotkey “Z”)
If you don’t do this every day: make some notes/instructions in textfile.
mv_ibfeew used both changing the grid origin and Special Tools / Move with Reference.
With Move with Reference you can select the startpoint of the move from one of many snap points, but not the destination. Therefore he still used the “Grid Origin” first to be able to set a destination for the move.