Short version: Is there any way how to remember/store the active selection in Pcbnew to reselect it later?
Long version: I need to move cca 50 objects on the PCB (footprints, tracks, vias). But I need some of the objects in the same area to stay. So I would like to build a selection (or group or something) of objects, try to move it, see what it does, undo it, refine the selection, try to move it and repeat until I finetune the selection…
That was my first idea… However KiCad just asks “Selection contains locked items, do you want to continue?” and if I say no, then it does not move anything. If I say yes then it moves everything. And if I rectangle select a locked trace, it gets normally selected and moves without even asking…
But I did come with an idea, that is maybe more complicated but should be working… Move everything, fix everything (traces, vias,…) and then move back the connector that needs to stay in place and fix everything (traces, vias,…) It took me like and hour to move everything and another hour to move the connector back… Not ideal but not so bad in the end… It would still take me like an hour to finetune the selection and fix the traces and vias…
I am sorry but i don’t have any other suggestion. I guess this would have caused me trouble too.
Same way with yours, messing around with Shift-selected locked parts…
Well, my brother pointed out that if you lock the component (or via or track) and do “move exactly” then the locked objects does not move… So this is actually a viable be a way.
“Move Exactly” remembers the distances to move.
So you can easily make a sub selection, move that 500mm to the right (so it’s outside of the “paper area”, and then repeat the move for other sub parts. So you use the 500mm offset as a sort of clipboard. If you’ve made a mistake, hit [Ctrl + z] to undo. and redo it properly.
Once all the good parts are moved 500mm, you can easily drag a box around it and do a final move.
As an experiment I used 1000mm for “Move Exactly”, and there I bumped into some trouble. KiCad seemed to move the selection all right, but I could not zoom in anymore on the offset part.
I have a vague memory that KiCad should be able to handle PCB’s upto around 3 meters, so maybe this zoom problem could be considered a bug.
With 500mm it seems to work without problem.
I made a few weird selections, moved them 500mm in X direction, then selected them all and moved it -500 in X direction, and everything was back were it was.
But just to be sure I then exited Pcbnew without saving, and opened it again, as I did this in a pretty complex (for me)and important (to me) project
Just in case you don’t know it, selection has to modes (dragging from right to left or from left to right) and you can select using the shift key + click.
I think I understand the problem. It may be difficult to see at once what’s selected and what’s not, and cancelling a move operation cancels the selection, too.
I don’t find a solution for that. IMO it’s a usability bug that selection doesn’t survive cancelling an operation.
That is exactly the problem. Not even that it is not easy to see what is selected and what not but I also like to “do a test move” to see how it will look and then cancel the move to add/remove footprints into selection.
The workaround with locking is functional but more tedious… And I would also like to “reserve” the locking feature for locking the footprints that are locked because of mechanical constrains…
Well there should be a fix in the nighties soon, now is up to us to test this feature (2h from report to fix!! Amaziing!!), I hope it makes it to v5.1.7!
I have tried it and it seems functional for certain scenarios… The thing is that I am not so skilled in PCB design so I need to see the changes to help me understand the results of the move… So my workflow is like:
select some items
move them and see what else is possible to move, what would need to make new traces, etc
IMO it’s a usability bug that selection doesn’t survive cancelling an operation
I feel the same - but that also applies to clicking interactions that invariably drop the selection. Maybe a “repeat last selection” action would address this behavior without introducing extra hurdles and requiring re-learning the workflow (as would be the case were the selection be made to require pressing ESC a second time to not only cancel the move operation but also the selected state)?
The “Move Exactly” hack is of course (unfortunately?) also limited.
Doing PCB layout is a weird sort of puzzle. Some like it, others will never understand, and for that reason not like it and give up trying.
Moving components on an already partially routed PCB is a time consuming business. Moving just a single 48 pin TQFP half a mm to make room for the last track can easily cost half an hour.
One of the tricks is being able to estimate how many tracks have to go through a certain area, and plan accordingly, but this needs experience.
Having a drag option in KiCad that “fixes” all connected tracks after a footprint is moved will be a tremendous improvement…
A very easy to make mistake is to put footprints too close together, as this is an important reason for running out of space for the tracks later,
If you often have to move footprints a little bit to make stuff fit, then move stuff further apart to begin with in the nest design.
Different scenario’s also require different ways of working.
Experiment a bit with different settings of KiCad.
For example, in the end I found out that the TQFP that had to move half a mm was easy to fix with: KiCad / Route / Interactive Router Settings
and then:
Mode: Highlight collisions.
Options: Allow DRC violations.
This allowed me to easily move a track that was on a pad it did not belong to, to the right location.
setting the Interactive Router Settings to “Allow DRC Errors”
Moving components on an already partially routed PCB is a time consuming business. Moving just a single 48 pin TQFP half a mm to make room for the last track can easily cost half an hour.
One would think that moving a footprint around a bit should be possible, and it could be possible when completely rule-driven (clearance combinations matrix, diff pairs, via and footprint locked/unlocked, more general design rules). However, most of the time I can watch myself fighting the tool, as you describe it, for several minutes, seeing the solution already but having to wrestle lots of tracks back into place.
I wish dragging footprints would disregard collisions, but keep the ends connected to pads properly connected, then let me drag and iron out the non-n*45° bends back out using push&shove on tracks only. A modifier that temporarily allowed dragging a track over a via or pad would be neat (if I’m not simply missing an existing feature here).
Something needs to be done in that regard, and keeping the tracks attached to where they belong (that is, not creating false connections by default) really should be possible. This might need to be another feature request concerning dragging of footprints. Not sure what current plans are in that regard.
Going back to the initial problem, @eelik has a point with the highlighting, but being able to move the selection around might give yet another set of visual clues, like how air wires move when the selection is translated, exposing where they connect to. A simple example is a set of connections between connectors that are in a line - the air wires would only create a combined streak across all pads, whereas grabbing the selection and moving it around would elucidate the connections.
And that’s where we’re back at reinstating the previous selection, which would make checking one’s selection (visually and “haptically”) free from the artificial penalty of having to redo a complex selection.
I could not agree more. I am spoiled by various IDE, code completion, etc and when I switch from software design to PCB design I feel like somebody stole half of my tools with snap of a finger That being said KiCad nightlies looks very promising. For example moving the whole footprint with traces attached that would not care about the traces overlapping seems like a great improvement…
In the original post I was talking about moving a SODIMM connector while there is flat ribbon connector on the other side that can not move. The sodimm has like 30 pins connected to various peripherals and like 20 connected to various VCC, resistors and caps. And also like half is connected to GND plane. So some components are able to move with it, some are desired to move with it, some are indifferent and some are related to the flat connector… So I am basically doing a new revision of the board because I need to move the sodimm 1cm (because of mechanical issue)… Sometimes I feel like when I need to move a subroutine to another file that I need to separately move all the local variables and fix every call to that subroutine
Just to be clear, I am not complaining , KiCad is already doing a great job and helping me a lot but I just sometimes have the feeling that I am doing work that is more suited for the CAD part of KiCAD
don’t worry, there’s a difference between uttering contempt and working the problem by providing insights and constructive criticism.
With how fast things are moving right now in a rush to get features in place before the freeze it can sometimes be hard to stay up to date.
these are related:
oh and do give the footprint dragging in the nightlies a try. (A word of caution though - only open copies of your project, as the downward compatibility make be automatically broken).