Footprint/PCB Editor: Add component height parameter for footprint keepouts
Description
There are circumstances where footprint placement is not explicitly forbidden but component height must be considered, such as placement of components under a B2B SoM.
It would be nice to have a system where keepouts can be set to only allow placement of footprints below a given height. The clearance may be such to allow 0603 or 0805 components but just barely disallow SOT-23 footprints.
Immediate problems with this suggestion:
P1] What about all keepouts in legacy designs?
- By default keepouts would be set to disallow all footprints and a radio button in each keepout's properties would enable the conditional height feature.
P2] Footprints in the current default libraries would have to be changed.
- Maybe not, or in a predictable way if so.
- The current library could have all footprints set to a value (0) and the feature is at the user's risk if they choose to enable a keepout with the height feature.
- The current library could have all footprints set to a very high value that would surely trigger all reasonable height-based keepout zones.
- The current library could have all footprints set to a value (+inf?) that would immediately trigger any height-based keepouts.
- One of the above as well as incrementally adding the definitions to the atomic portion of the library.
P3] What about footprints that are shared with many different components that may be at different heights?
- I think the solution here is with the push towards an atomic library. The height property of components would come through from the symbol which could come from the parts list database once that has been developed.
This is a pretty significant change which I would imagine would be V7 or V8 territory if it even is a good idea.
Steps to reproduce
- None.
KiCad Version
Application: KiCad
Version: (5.99.0-9949-gc5c348538e), release build
Libraries:
wxWidgets 3.0.5
libcurl/7.71.0 OpenSSL/1.1.1g (Schannel) zlib/1.2.11 brotli/1.0.7 libidn2/2.3.0 libpsl/0.21.0 (+libidn2/2.3.0) libssh2/1.9.0 nghttp2/1.41.0
Platform: Windows 10 (build 19042), 64-bit edition, 64 bit, Little endian, wxMSW
Build Info:
Date: Mar 22 2021 10:02:28
wxWidgets: 3.0.5 (wchar_t,wx containers,compatible with 2.8)
Boost: 1.73.0
OCE: 6.9.1
Curl: 7.71.0
ngspice: 34
Compiler: GCC 10.2.0 with C++ ABI 1014
Build settings:
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=OFF
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=OFF
KICAD_SCRIPTING_ACTION_MENU=ON
KICAD_USE_OCE=ON
KICAD_SPICE=ON