Commit Graph

20030 Commits

Author SHA1 Message Date
Jeff Young e2bc7557cc Clean up arc/circle polygonization.
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
2020-09-11 11:23:49 +01:00
Seth Hillbrand f493e270ea ADDED: Menu option to enable/disable snap to grid
You can now enable and disable snap to grid when drawing/editing across
all apps.  You can also tie snap to grid to the visibility of the grid
to allow rapid enable/disable via grid display.
2020-09-10 20:09:30 -07:00
Jean-Samuel Reynaud d6322dcf0d Ensure Tools->External plugins is populated
Since the commit e8b11c911e, the menu tools->external plugins is empty.
This is because on new system, an added submenu is cloned when added. So any update  on the object
after Add it as no effect. The menu stay empty.
With this commit the menu filling is made before adding submenu.
2020-09-11 03:04:27 +00:00
Jeff Young fc1665ff28 ADDED Clearance Inspector. 2020-09-10 20:58:38 +01:00
Jeff Young e31705d4b3 More source reporting for clearance rules. 2020-09-10 20:58:38 +01:00
Jeff Young 2a2b842707 HTML_REPORTER dialog. 2020-09-10 20:58:38 +01:00
Seth Hillbrand 08d4e91f3b Change partitions to fixed size
Partititioning small polygons causes excessive partitions when we use a
fixed number of cells per side.  Partitioning by size keeps the
partition count limited and speeds the calculations.

Also adds an option to not partition the grid for elements (like 3d
raytracing) that do not need it.

Fixes https://gitlab.com/kicad/code/kicad/issues/5579
2020-09-10 09:31:20 -07:00
jean-pierre charras 6009414e22 Drill files export: ensure the Top to Bottom PTH drill file is always created,
even if there are no hole.
NPTH file is already always created.

Fixes #5566
https://gitlab.com/kicad/code/kicad/issues/5566
2020-09-10 16:42:04 +02:00
jean-pierre charras 6ab6c00f61 Plot solder mask: fix incorrect shape for rectangular pads.
It was noticeable only for pads having a large solder mask clearance.

Fixes #5570
https://gitlab.com/kicad/code/kicad/issues/5570
2020-09-10 13:22:16 +02:00
Seth Hillbrand 62433736bc Snap Eeschema moves to nearest anchor
Fixes https://gitlab.com/kicad/code/kicad/issues/3803
2020-09-09 10:48:15 -07:00
Seth Hillbrand 4026904cc4 Make grid snapping depend on grid visibility
Turning the grid view on enables snapping to the grid.  Turning it off
removes the snap and allows free draw
2020-09-09 10:18:15 -07:00
Seth Hillbrand 173b4ff588 Add snapping to eeschema
This generalizes both the SetPosition() function and ORIGIN_VIEWITEM
class away from the pcbnew-centric.
2020-09-09 10:18:15 -07:00
Wayne Stambaugh 467aa47bbb Update coding policy for control blocks.
All control blocks (if, for, while, etc.) should have a blank line
before the opening statement and after the closing curly brace or
statement so that it is clear where the control block begins and
ends.
2020-09-09 09:50:11 -04:00
Wayne Stambaugh d45c11b4b5 Exclude from bill of materials and board netlist to library symbols.
ADDED: Support for exclude from bill of materials and board netlist to
library symbols.

Fixes https://gitlab.com/kicad/code/kicad/issues/4915
2020-09-09 09:03:37 -04:00
Jeff Young 59c6635286 Add restrictions on copper layers for NPTH pads.
Also updates the stackup graphics to include NPTH pads.

Fixes https://gitlab.com/kicad/code/kicad/issues/5477
2020-09-09 10:22:17 +01:00
Jeff Young c090f1b646 Add restrictions on copper layers for NPTH pads.
Also updates the stackup graphics to include NPTH pads.
2020-09-09 01:49:50 +01:00
Jeff Young ab71ef9ec5 Try a different strategy at getting wxWidgets to honor stackup bitmaps.
Fixes https://gitlab.com/kicad/code/kicad/issues/5559
2020-09-08 23:34:43 +01:00
Jeff Young 0ec4c4fe65 A more targetted fix at the focus issue.
Fixes https://gitlab.com/kicad/code/kicad/issues/5477
2020-09-08 22:35:04 +01:00
Roberto Fernandez Bautista b1343ca281 Fix NormalizeAngleNeg to be (-360, 0] 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 6a82f23981 CADSTAR PCB Archive Importer: Load Component Copper and Component Areas 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista c1dec964be CADSTAR PCB Archive Importer: Fix Parsing errors
Change error displayed when a Library .cpa file is opened (instead of a Layout file)
Add warning if variants exist in original design.
Parse LAYERHEIGHT in LAYER (same thing a MAKE but without the MATERIAL_ID)
Parse PADEXCEPTION in COMPONENT
Add DESIGN as one of the valid UNITS
2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 05e5740504 CADSTAR PCB Archive Importer: Parse VARIANT data + add missing "REFPLANE" flag to layers 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 349ac06ee2 CADSTAR PCB Archive Importer: Fix compile error + BULLET pad is now correct 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 112da7828e CADSTAR PCB Archive Importer: Load Dimensions 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 8296b1d669 CADSTAR PCB Archive Importer: Load GROUPs 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 7ca4f0b375 CADSTAR PCB Archive Importer: Formatting fixes 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 94568e8699 CADSTAR PCB Archive Importer: Load Net Classes (Routing Widths in CADSTAR) 2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista a3531b02e7 CADSTAR PCB Archive Importer: Load documentation symbols and fix some import errors
Fix unnamed net import
Fix missing tokens
Fix zero-sized pads (make them really small instead)
2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista 7e65d443e8 CADSTAR PCB Archive Importer: Load TEXTS and fix loading speed
Loading speed fixed by changing the way CADSTAR_ARCHIVE_PARSER::InsertAttributeAtEnd works (we now have a new attribute in each node to keep track of how many attributes there are). Now loads a 30,000 line file in 10seconds instead of 25 minutes!
2020-09-08 21:21:21 +00:00
Roberto Fernandez Bautista fe3e20ddc7 CADSTAR PCB Archive Importer: Load design rules 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 866c069873 CADSTAR PCB Archive Importer: Load TEMPLATEs, COPPERs and NETs (including Tracks and Vias) 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 05de678f4e CADSTAR PCB Archive Importer: Rename CADSTAR_PCB class to CADSTAR_PCB_ARCHIVE_LOADER 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 08a77e0af8 CADSTAR PCB Archive Importer: Add import warnings for CADSTAR layers with no KiCad equivalent 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 3b3af5327f CADSTAR PCB Archive Importer: Move code into common/plugins and pcbnew/plugins folders 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista fc76bdfeb2 CADSTAR PCB Archive Importer: Load Component Footprints 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 1351f5bcf1 CADSTAR PCB Archive Importer: Fix Polygon with Holes 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 56080a0adc CADSTAR PCB Archive Importer: Load Layer Stackup, FIGURES and AREAS
(and map CADSTAR to KiCad Layers with best guess logic)
2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista a9ef38e6c8 CADSTAR PCB Archive Importer: Load Board shapes 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista a7effb7377 CADSTAR PCB Archive Importer: Parse LAYOUT section
Also general clean ups of comments / formatting
2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 632d45e833 CADSTAR PCB Archive Importer: Parse PARTS section 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 4c2f38f1ad CADSTAR PCB Archive Importer: Parse LIBRARY section + code refactoring
code refactoring:
- Renamed CADSTAR_COMMON to CADSTAR_ARCHIVE_COMMON
- Renamed CPA_FILE to CADSTAR_PCB_ARCHIVE_PARSER
- Made CADSTAR_PCB_ARCHIVE_PARSER a derived class of CADSTAR_ARCHIVE_COMMON
- Moved all structures in cadstar_pcb_archive_parser.h/.cpp to be defined inside CADSTAR_PCB_ARCHIVE_PARSER class
2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 0ce95f2803 CADSTAR PCB Archive Importer: Parse ASSIGNMENTS->TECHNOLOGY and ASSIGNMENTS->GRIDS sections 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 4fcba4d619 CADSTAR PCB Archive Importer: Parse HEADER and ASSIGNMENTS->CODEDEFS sections 2020-09-08 21:21:20 +00:00
Roberto Fernandez Bautista 86bf592bac ADDED: CADSTAR PCB Archive Importer
Initial commit
- Imports directly mappable layer stackup (only physical board fabrication layers for now)
2020-09-08 21:21:20 +00:00
Jeff Young 5d304cfa2a Uniformly apply focus hack to auto-preview.
Since the feature is controversial this also moves it into a single
function so that it's easy to disable.

Fixes https://gitlab.com/kicad/code/kicad/issues/5477
2020-09-08 22:19:29 +01:00
Seth Hillbrand 37e268c162 Remove incorrect short-circuit of rotate 2020-09-08 14:10:23 -07:00
Mario Luzeiro d52c475b27 3D-Viewer: implements plated copper texture
improves copper and board textures.
Related to https://gitlab.com/kicad/code/kicad/-/issues/2058
Use only one PerlinNoise class.
2020-09-08 21:02:20 +00:00
Mario Luzeiro f0edbd088c 3D-Viewer: fixing z-fight issues 2020-09-08 21:02:20 +00:00
Mario Luzeiro e288218c4f 3D-Viewer: subtract pads poly to F_Cu and B_Cu poly layers 2020-09-08 21:02:20 +00:00
Mario Luzeiro d7a95951e1 3D-Viewer: implement nonplated copper on raytracing 2020-09-08 21:02:19 +00:00