1) For a while now we've been using a calculated seg count from a given maxError, and a correction factor to push the radius out so that all the error is outside the arc/circle. However, the second calculation (which pre-dates the first) is pretty much just the inverse of the first (and yields nothing more than maxError back). This is particularly sub-optimal given the cost of trig functions. 2) There are a lot of old optimizations to reduce segcounts in certain situations, someting that our error-based calculation compensates for anyway. (Smaller radii need fewer segments to meet the maxError condition.) But perhaps more importantly we now surface maxError in the UI and we don't really want to call it "Max deviation except when it's not". 3) We were also clamping the segCount twice: once in the calculation routine and once in most of it's callers. Furthermore, the caller clamping was inconsistent (both in being done and in the clamping value). We now clamp only in the calculation routine. 4) There's no reason to use the correction factors in the 3Dviewer; it's just a visualization and whether the polygonization error is inside or outside the shape isn't really material. 5) The arc-correction-disabling stuff (used for solder mask layer) was somewhat fragile in that it depended on the caller to turn it back on afterwards. It's now only exposed as a RAII object which automatically cleans up when it goes out of scope. 6) There were also bugs in a couple of the polygonization routines where we'd accumulate round-off error in adding up the segments and end up with an overly long last segment (which of course would voilate the error max). This was the cause of the linked bug and also some issues with vias that we had fudged in the past with extra clearance. Fixes https://gitlab.com/kicad/code/kicad/issues/5567 |
||
---|---|---|
.githooks | ||
.gitlab | ||
3d-viewer | ||
CMakeModules | ||
Documentation | ||
bitmap2component | ||
bitmaps_png | ||
common | ||
cvpcb | ||
demos | ||
eeschema | ||
gerbview | ||
helpers | ||
include | ||
kicad | ||
libs | ||
pagelayout_editor | ||
patches | ||
pcb_calculator | ||
pcbnew | ||
plugins | ||
qa | ||
resources | ||
scripting | ||
scripts | ||
template | ||
thirdparty | ||
tools | ||
utils | ||
.clang-tidy | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
AUTHORS.txt | ||
CMakeLists.txt | ||
CTestConfig.cmake | ||
Doxyfile | ||
INSTALL.txt | ||
LICENSE | ||
LICENSE.BOOSTv1_0 | ||
LICENSE.CC-BY-SA-4.0 | ||
LICENSE.GPLv3 | ||
LICENSE.ISC | ||
LICENSE.MIT | ||
LICENSE.README | ||
README.md | ||
_clang-format | ||
code-of-conduct.md | ||
copyright.h | ||
uncrustify.cfg |
README.md
KiCad README
For specific documentation like Compiling, GUI translation, old changelogs see the Documentation subfolder.
You may also take a look into the Wiki, the Developers section on our Website and our Forum.
Build state
Release status
Files
- AUTHORS.txt - The authors, contributors, document writers and translators list
- CMakeLists.txt - Main CMAKE build tool script
- copyright.h - A very short copy of the GNU General Public License to be included in new source files
- CTestConfig.cmake - Support for CTest and CDash testing tools
- Doxyfile - Doxygen config file for KiCad
- INSTALL.txt - The release (binary) installation instructions
- uncrustify.cfg - Uncrustify config file for uncrustify sources formatting tool
- _clang-format - clang config file for clang-format sources formatting tool
Subdirectories
- 3d-viewer - Sourcecode of the 3D viewer
- bitmap2component - Sourcecode of the bitmap to pcb artwork converter
- bitmaps_png - Menu and program icons
- CMakeModules - Modules for the CMAKE build tool
- common - Sourcecode of the common library
- cvpcb - Sourcecode of the CvPCB tool
- demos - Some demo examples
- Documentation - Developer documentation. Old changelogs etcetera.
- eeschema - Sourcecode of the schematic editor
- gerbview - Sourcecode of the gerber viewer
- helpers - Helper tools and utilities for development
- include - Interfaces to the common library
- kicad - Sourcecode of the project manager
- libs - Sourcecode of kicad utilities (geometry and others)
- pagelayout_editor - Sourcecode of the pagelayout editor
- patches - Collection of patches for external dependencies
- pcbnew - Sourcecode of the printed circuit board editor
- plugins - Sourcecode for the 3d viewer plugins
- qa - Unit testing framework for KiCad
- resources - Resources for freedesktop mime-types for linux
- scripting - SWIG Python scripting definitions and build scripts
- scripts - Example scripts for distribution with KiCad
- template - Project template
- thirdparty - Sourcecode of external libraries used in kicad but not written by Kicad team
- tools - Other miscellaneous helpers for testing
- utils - Small utils for kicad, e.g. IDF, STEP and OGL tools and converters