Commit Graph

507 Commits

Author SHA1 Message Date
Jeff Young 5b9519da6c Fix arc formatting in Fabmaster import. 2021-10-26 17:52:10 +01:00
Seth Hillbrand d44e0ab765 Limit use of non-copper layers
When importing, we should not use Eco1 for other purposes as the
importer uses it to place unknown layer objects.  We also need to avoid
placing objects on the courtyard layers that do not relate to the layer
purpose in DRC

Fixes https://gitlab.com/kicad/code/kicad/issues/9442
2021-10-22 12:31:11 -07:00
Jeff Young 57f907f6e7 Make sure PCB_PARSER is fully initialized between footprints.
Fixes https://gitlab.com/kicad/code/kicad/issues/9424
2021-10-19 17:14:04 +01:00
Seth Hillbrand 10ac675905 Fix shadowing 2021-10-18 09:00:24 -07:00
Roberto Fernandez Bautista 99442350a4 CADSTAR PCB: Fix loading of arc tracks following recent PCB_ARC changes
We no longer have any knowledge of the original start/end of the arc,
since SetArcAngleAndEnd swaps the start and end to ensure the arc is
always clockwise at the end.

Adds a method EDA_SHAPE::EndsSwapped() to notify whether the start/end
point of the shape were swapped.
2021-10-17 17:57:51 +01:00
Roberto Fernandez Bautista e867a4fd27 CADSTAR PCB: Fix Zone fill priorities
The algorithm now correctly determines fill priorities when the zone
outlines are close together and within the minimum clearance between
zones.
2021-10-16 21:50:56 +01:00
Jeff Young f9861b4a6c Finish arc rework and push out to file formats. 2021-10-15 12:45:43 +01:00
Jeff Young 9b9e379aa0 Overhaul arc internal model to not over-specify information. 2021-10-15 12:45:43 +01:00
Jeff Young 8b08c9e53f Shorter names before things get out of hand.
Also, remove comments indicating CURVE is a Bezier.  Just call it a
BEZIER.
2021-10-15 12:45:43 +01:00
Jeff Young a41944020d Push most of PCB_SHAPE impl down in to EDA_SHAPE. 2021-10-15 12:45:43 +01:00
Roberto Fernandez Bautista 43e59b0ea7 CADSTAR PCB: Correctly handle associated pad ids and PCB Only pads
Fixes https://gitlab.com/kicad/code/kicad/-/issues/9372
2021-10-11 18:30:20 +01:00
Roberto Fernandez Bautista 7a71ebf9ac CADSTAR PCB: Load all three net properties into a single Netclass
The final netclass name will be a bit long but it will allow for custom
DRC rules to individually target each of the three properties available
in CADSTAR:
- Route Code (which specifies width of the track in min, max, opt)
- Net class (only used in signal integrity analysis)
- Spacing class (for specifying clearance requirements between classes)
2021-10-10 22:16:08 +01:00
Roberto Fernandez Bautista ac3ade874e CADSTAR PCB: Set Copper-to-Hole clearance as 0
Testing suggests that CADSTAR doesn't actually have any clearance to the
hole (other than electrical clearance to the barrel of the padstack/
viastack).

This removes a large amount of DRC violations on imported designs.
2021-10-10 00:20:13 +01:00
Roberto Fernandez Bautista eb7d0fdf8a CADSTAR PCB: Use board clearance + additional isolation as zone clearance
Copper-to-copper clearance is too onerous and results in large amount
of DRC errors for the majority of imported designs.
2021-10-10 00:18:36 +01:00
Roberto Fernandez Bautista f4ff01a5ab CADSTAR PCB: Copy default netclass settings when creating new ones
Ensures that the global clearance is preserved in the newly created
netclass.
2021-10-09 23:10:55 +01:00
Roberto Fernandez Bautista 8f74085ca4 CADSTAR PCB: Handle older boards without construction layers
Use KiCad default stackup for older CADSTAR boards that do not
define any dielectric layers between the electrical layers.

Also fix default stackup calculation to ensure finished board thickness
is 1.6mm
2021-10-09 21:26:16 +01:00
Roberto Fernandez Bautista 33a3cfc87b CADSTAR PCB: Update Board Design Settings to notify that a stackup exists
Also update thickness of the PCB

Fixes https://gitlab.com/kicad/code/kicad/-/issues/9307
2021-10-09 20:33:14 +01:00
Roberto Fernandez Bautista e80a1c2679 CADSTAR PCB: Don't load items on invalid layers
This was happening in two cases:
- Loading documentation symbols (CADSTAR on purpose defines these in an
  invalid layer)
- When an item was in a "layer set" such as ALLELEC or ALLLAYER - need to
  make sure we remove the copper layers that are not active in the design
2021-10-09 20:07:23 +01:00
Roberto Fernandez Bautista 677166f0b8 CADSTAR PCB: Rule Areas have zero width
Cadstar areas have a line width but this is only for display purposes.
Instead CADSTAR uses the center line when determining whether a DRC
violation occurred.
2021-10-08 21:27:32 +01:00
Roberto Fernandez Bautista 2dfbd42be6 CADSTAR PCB: Legacy netclass and design settings loading is required 2021-10-08 20:48:10 +01:00
Roberto Fernandez Bautista ae0229b7c9 CADSTAR PCB: Add imported nets to the imported netclass. 2021-10-08 20:25:09 +01:00
Roberto Fernandez Bautista 58fc4f512d CADSTAR PCB: Don't create zero width tracks
Fixes a bug in the route offsetting part of the import
that was resulting in zero-width tracks being imported.
2021-10-08 20:25:09 +01:00
Roberto Fernandez Bautista 16b61e47cd CADSTAR PCB: Clear arcs from polys before boolean ops (e.g. zone fills) 2021-10-08 20:25:09 +01:00
Roberto Fernandez Bautista fb588da875 CADSTAR PCB: Fix loading of thermal relief gap in zones
We were loading as solid fill when the relief gap was exactly the
same as the minimum width.

Also we can do better than just load as solid fill when it is smaller:
we can instead just use the minimum width and at least it still will
have thermal reliefs.
2021-10-08 17:39:08 +01:00
Roberto Fernandez Bautista cb47bf25c0 CADSTAR PCB: Actually load the original route code as a KiCad NETCLASS
We weren't actually loading it into the design settings even though
everything else was already being correctly loaded.
2021-10-07 22:13:06 +01:00
Seth Hillbrand 9a8d1246cc We don't keep a CHANGELOG.TXT
Direct interested readers to AUTHORS.TXT instead.
2021-10-05 19:46:53 -07:00
Seth Hillbrand 548e5f49bd Clean up unused variable usage
Unused variables in function calls can be commented out.  Unused
return variables get a new routine `ignore_unused()` that silences the
warnings with zero overhead.
2021-10-05 10:00:30 -07:00
Jeff Young f606679164 Proper numeric sorting for intersheet refs.
Also expunges the horrifically named std::remove and std::remove_if
(neither of which remove anything).
2021-10-01 18:29:21 +01:00
Jeff Young 6b25099df7 Read/write lock status for fp text.
Fixes https://gitlab.com/kicad/code/kicad/issues/9325
2021-09-25 20:37:56 +01:00
Jeff Young 04aff93248 Eagle doesn't use netclass clearance so make them the board clearance.
Fixes https://gitlab.com/kicad/code/kicad/issues/2442
2021-09-20 21:31:19 +01:00
Jeff Young f66654247a Read netclasses when importing Eagle projects.
Also creates a DRU file with the various netclass-to-netclass
clearance rules from the Eagle clearance matrix.

Fixes https://gitlab.com/kicad/code/kicad/issues/1774
2021-09-20 12:38:56 +01:00
Jeff Young b84d1456d5 KIFACE_I -> KIFACE_BASE. 2021-09-14 23:45:14 +01:00
Roberto Fernandez Bautista 625e56676a Add progress reporting to CADSTAR Schematic & PCB importers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8685
2021-09-11 17:50:19 +01:00
jean-pierre charras d2bff137ee .kicad_pcb file: fix incorrect keyword stored for some (not all) PAD properties.
( a copy-paste error? )
Fixes #9102
https://gitlab.com/kicad/code/kicad/issues/9102
2021-09-06 09:15:18 +02:00
jean-pierre charras ee5f9034f7 pcb parser: ensure the parser is reinitialized before parsing a new fp file
Because the same parser is used to read all footprint files of a library,
the parser must be reinitialized (internal variable cleared) before reading
a new file, otherwise the previous parser state is applied to the next file.
Fixes #7627
https://gitlab.com/kicad/code/kicad/issues/7627
2021-08-26 19:38:20 +02:00
Jeff Young 2b3477ca28 Handle RGBA conversion to hexadecimal format for wxWidgets 3.0 2021-08-25 02:40:17 +01:00
Jeff Young a02ea1609b A more robust solution to the 3D color opacity issue.
(This also fixes a typo in the previous fix that assigned the opacities
backwards.)
2021-08-24 11:24:25 +01:00
Jeff Young e6ca9837a2 Clear numbers from non-numberable pads and don't run DRC on them.
This was also the last straw on the misnamed PAD::GetName() and
PAD::SetName(), which are now PAD::GetNumber() and PAD::SetNumber().

Fixes https://gitlab.com/kicad/code/kicad/issues/9017
2021-08-24 01:03:06 +01:00
Jeff Young 21f2b235ce Rework stackup colors a bit to support opacity for 3D viewer.
Fixes https://gitlab.com/kicad/code/kicad/issues/9012
2021-08-23 20:00:17 +01:00
Jeff Young fec34e8dd8 Get rid of an extraneous layer parameter.
Also adds a bit of nullptr safety.
2021-08-23 20:00:17 +01:00
Jeff Young 41619ebbe2 Decouple PROGRESS_REPORTER interface from implementations. 2021-08-14 21:05:49 +01:00
Jeff Young 54942a1401 Fix typos that would result in fp zone setting written into pads. 2021-08-08 18:12:29 +01:00
Jeff Young 46bdce2747 Don't allow pads in groups in the board editor.
Bad stuff happens, including crashes.
2021-08-04 13:55:42 +01:00
Jeff Young 0f5a8f87d3 Add writing of pad primitive polys with arcs, and fix a bug in reading.
Fixes https://gitlab.com/kicad/code/kicad/issues/8827
2021-08-01 10:47:00 +01:00
Jeff Young 6aaf4413b3 Fix kicad_string.h / string.cpp mismatch.
They don't define a KiCad string class, so the header file name was
somewhat misleading. But the fact that they didn't match definitely
made coding more difficult.
2021-07-29 16:03:25 +01:00
Jeff Young f221220fe2 Rename layer ids file.
It hasn't had anything to do with colors or visibility for some time
now.
2021-07-29 16:03:25 +01:00
Jeff Young 46338403e7 Unwrap some std::library typedefs. 2021-07-28 22:16:38 +01:00
Wayne Stambaugh 369d813a32 Pass std::string by reference instead of on the stack where applicable. 2021-07-27 13:30:05 -04:00
Wayne Stambaugh 37b200cb3e Pass wxString objects by reference instead of on the stack. 2021-07-27 08:41:27 -04:00
Wayne Stambaugh 8fd83cbb95 Pass wxPoint objects by reference instead of on the stack. 2021-07-26 15:35:33 -04:00
Jeff Young 373f0335c8 Convert Altium radial dimensions to leaders.
This is because we don't yet support radial dimensions.

Also fixes a bug where we fail to read an Altium circular track.  We
now convert it to a pair of 180-degree arcs.

Also fixes a bug where we were failing to import prefixes on linear
dimensions.

Fixes https://gitlab.com/kicad/code/kicad/issues/8789
2021-07-24 14:25:59 +01:00
Jeff Young 531f5480a7 Reduce line-breaks and increase SNR. 2021-07-24 14:25:59 +01:00
Jeff Young 04b9b15255 Fix copy/paste error. 2021-07-23 01:11:22 +01:00
Jeff Young a16b85db67 Read/write group locked state. Show locked state in dialog & statusbar.
Fixes https://gitlab.com/kicad/code/kicad/issues/8796
2021-07-22 12:49:30 +01:00
Jeff Young 0fb864d596 Pull some name changes back from 7.0 to ease merging. 2021-07-21 20:58:59 +01:00
david-beinder af90d47edc Altium: Fix calculating third arc point from uninitialized memory
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8671
2021-07-20 19:13:32 +00:00
Wayne Stambaugh cf00319c85 More NULL expunging. 2021-07-20 07:27:18 -04:00
Jeff Young e61822c9e0 Naming conventions and a bug fix on arc points. 2021-07-19 13:17:12 +01:00
jean-pierre charras 56412cc843 PCB_TEXT: remove "hide" option, because they are never hidden.
- avoid write "hide" option in file
- always return true when calling IsVisible()
Fixes #8806
https://gitlab.com/kicad/code/kicad/issues/8806
2021-07-18 14:58:21 +02:00
Jeff Young 01d3a88faa Allow unnamed embedded step files in altium boards.
Fixes https://gitlab.com/kicad/code/kicad/issues/7898
2021-07-10 16:37:45 +01:00
jean-pierre charras 17ab2c7197 .kicad_pcb files: minor enhancements: add missing new lines in file.
No actual change, this is only a cosmetic change.
2021-07-07 11:44:11 +02:00
Jon Evans 576d70fab0 Fix file format syntax of arcs in polygons
No format bump as there is no way to create these files yet.
2021-07-04 12:10:59 -04:00
Jeff Young 0116e9c94e Silence Altium polygon-needs-at-least-3-verticies warning.
Too many Altium files appear to have these.  Just ignore them instead.

Fixes https://gitlab.com/kicad/code/kicad/issues/8183
2021-07-04 11:02:59 +01:00
Jon Evans ab38dfd7ae Fix build 2021-07-03 19:47:58 -04:00
Jon Evans 77b68a827c Remove unused variable 2021-07-03 19:20:54 -04:00
Seth Hillbrand 4f4deece6d ADDED support for reading/writing arcs in polys
This adds support for reading and writing arc elements in polygons.
2021-07-03 19:37:50 +00:00
Jeff Young bc65b7173f Don't use SCH version number when inspecting PCB files. 2021-07-03 15:24:54 +01:00
Marek Roszko eff75b630f Get rid of anonymous struct typedefs
We are using C++14 where there is no reason for this and is banned in C++20 under P1766R1. MSVC generates a warning under C++14 as a reminder.
2021-07-01 18:28:41 -04:00
Jeff Young 6810912f09 Refuse to load schematics from the future.
Also fixes a bug where an empty window would get left when loading
a file from the KiCad manager window errored out.

Also fixes a bug where we were getting the wrong exception because
we were rethrowing the type-casted one (rather than just calling
throw).

Fixes https://gitlab.com/kicad/code/kicad/issues/8604
2021-06-30 18:32:07 +01:00
Jeff Young 5cac8afe1d Remove long-dead revision support for LIB_IDs. 2021-06-30 13:12:57 +01:00
Jeff Young a1dfc36233 More error message regularization. 2021-06-29 01:08:26 +01:00
Jeff Young 062c4fda62 More error message regularization (and translatability improvements). 2021-06-28 00:45:24 +01:00
Jeff Young 4aa8318dc2 More error message regularization. 2021-06-27 14:24:02 +01:00
Jeff Young 0dfb5fcaf9 Error message cleanup.
wxString::Format is redundant in a wxLogXXX call.
Error messages should generally be translatable.
Error messages should use generally consistent sentence forms.
2021-06-26 22:53:24 +01:00
Jeff Young 5c21f93803 Consistency in progress and error messages. 2021-06-26 13:23:43 +01:00
Thomas Pointhuber e50eaed7b9 altium: Improve parsing of UTF-8 data
This is an implementation based on d4ccec05 from @fxtentacle
2021-06-26 13:58:56 +02:00
Thomas Pointhuber e6c047896c altium: introduce progress reporting, fix possible nullptr when reading 3D models 2021-06-26 12:54:31 +02:00
Jeff Young 81fc710a5d Use consistent terminology.
Fixes https://gitlab.com/kicad/code/kicad/issues/8681
2021-06-26 10:11:41 +01:00
Jeff Young 8502fd6877 Divide-by-zero safety. 2021-06-24 12:18:22 +01:00
Jeff Young a8028e3bd1 Fix uninitialized variables. 2021-06-24 12:18:22 +01:00
Roberto Fernandez Bautista b532ecec52 Fix ALTIUM_RULE_TOKEN qa test failure 2021-06-24 05:58:24 +00:00
Jeff Young 50eea4f487 Import progress dialog for FabMaster.
Fixes https://gitlab.com/kicad/code/kicad/issues/5315
2021-06-24 00:21:37 +01:00
Jeff Young 5fa5a73c6d File open/import progress dialogs.
Fixes https://gitlab.com/kicad/code/kicad/issues/6864

Fixes https://gitlab.com/kicad/code/kicad/issues/2166
2021-06-23 23:55:54 +01:00
Jeff Young 1a35d8ba5d Setup layer mapping when importing Eagle library.
Fixes https://gitlab.com/kicad/code/kicad/issues/7891
2021-06-15 19:20:17 +01:00
Jeff Young 4418707e5e Add a few more overbar syntax conversion calls.
Fixes https://gitlab.com/kicad/code/kicad/issues/8606
2021-06-15 13:09:18 +01:00
Jeff Young 096e342386 Prefix TRACK, ARC and VIA. 2021-06-11 22:07:02 +01:00
Mikolaj Wielgus ade38f48bc Add conversion from old `~...~` to new `~{...}` notation 2021-06-11 18:40:57 +00:00
Jeff Young 16b0147af8 Prefix DIMENSION types. 2021-06-11 17:59:44 +01:00
luz paz 5f1e9bc8a7 Fix typos in source code 2021-06-10 01:24:15 +00:00
luz paz f968fc8719 Fix source comment / documentation typos 2021-06-09 19:32:58 +00:00
Marek Roszko 6e01ce84b9 Break out eda_item_flags.h, fix the typedef to std::uint32_t, fix some signed vars 2021-06-08 19:12:30 -04:00
Jeff Young 2aaec31832 Don't put up "old version" warning for gerbview-generated PCBs.
Fixes https://gitlab.com/kicad/code/kicad/issues/8574
2021-06-08 22:12:44 +01:00
Marek Roszko 9268340dcc Kick wx.h out of pcbnew 2021-06-07 18:38:51 -04:00
Johannes Maibaum 022dd6072c Add utility method to resolve symlinks
The same logic block to resolve possible symlinks exists in 5 different
places now. This change moves this duplicated code to a static member
function of WX_FILENAME instead.
2021-06-07 20:59:59 +00:00
Jon Evans 83080b67f5 Fix build on wx 3.0 2021-06-06 20:21:21 -04:00
Marek Roszko 5bb6f8c5e3 hashtables.h doesn't need eda_item.h 2021-06-06 19:11:35 -04:00
Marek Roszko 10e60acf34 Clean up including of board_design_settings.h 2021-06-06 15:03:42 -04:00
Marek Roszko 581ba21865 Remove wx includes out of cadstar_archive_loader.h 2021-06-06 09:28:02 -04:00
Johannes Maibaum 06e967354f Fix symlink read-/write-through code
Use `realpath(3)` instead of `readlink(3)`, which offers support for
relative and absolute symlinks alike, since all symbolic links will be
resolved to the absolute path of the linked-to file.

Fixes #8082
2021-06-05 14:22:50 +00:00
Ian McInerney 0c879eead3 Cleanup headers in pcbnew pcad importer 2021-06-04 01:28:40 +01:00
Ian McInerney 4f05262705 Cleanup includes in board.h and footprint.h 2021-06-03 20:19:52 +01:00
Ian McInerney 23f8851409 Remove pcb_group include from board header 2021-06-03 20:03:31 +01:00
Marek Roszko af2707929d Don't leak a wx header via eda_item.h
Turns out this provided the translation header globally :D
2021-06-02 19:18:48 -04:00
Marek Roszko eeb405c196 Cleanup some more excess math/util includes 2021-06-02 00:50:46 -04:00
Marek Roszko cf2bb5692a Remove the wxLog calls from math/util.h for now
This was leaking windows headers and partial wx headers to 1084 compilation units......
This also means math/util.h is leaking to 1084 compilation units which seems a bit high too.
2021-06-01 18:44:22 -04:00
Marek Roszko 65fee5b2ec Clear m_out pointer at end of save 2021-06-01 18:44:22 -04:00
Seth Hillbrand 208dd5cbd5 Cleanup string handling in fabmaster import
Avoids round-tripping std::string->c_str->std::string and makes a few
auto references explicit
2021-06-01 13:54:34 -07:00
Marek Roszko 5c543b62c5 Cleanup: Use make_unique for the legacy plugin board deleter 2021-05-30 20:56:44 -04:00
Marek Roszko a7d1ef9927 Fix some more uninitialized warnings
From PVS Studio
2021-05-30 20:05:37 -04:00
Jeff Young ed2f2257ce Remove footprint locking in the footprint editor.
(It doesn't make any sense there as the position is always {0, 0} in
the editor.)

For discussion see:
https://kicad.zulipchat.com/#narrow/stream/258851-Developer-Chat/topic/Is.20there.20a.20reason.20why.20kicad.20now.20seems.20to.20lock.20pads.3F
2021-05-18 23:14:17 +01:00
Simon Richter 810a717e4e Remove unused NETINFO_MAPPING member
The legacy plugin no longer implements saving, so no net code renumbering
is needed.
2021-05-17 11:54:06 +00:00
Ian McInerney 916a15793f Fix some OSX compiler warnings 2021-05-09 12:59:57 +01:00
Marek Roszko c7345096f8 Use wxFFileInputStream explicitly when loading xml documents
wxFFile (FILE, buffered) is better than wxFile (syscalls)
2021-05-03 19:39:56 -04:00
Marek Roszko 3a9a85b373 Enum class PAD_PROP_T
Renamed such that it does not affect python
2021-05-01 10:58:30 -04:00
Marek Roszko 03cf2b517f Enum class PAD_ATTR_T
Renamed such that python stays the same
2021-05-01 10:51:54 -04:00
Marek Roszko b243c2280d enum class PAD_SHAPE_T 2021-05-01 08:22:35 -04:00
Marek Roszko 21fde9b629 enum class PCB_SHAPE_TYPE_T 2021-04-30 22:36:12 -04:00
Jeff Young 1e8b23402c Bump board format version for locked syntax fix. 2021-04-24 19:11:17 +01:00
jean-pierre charras e27733587d Fix 2 minor Coverity warnings. 2021-04-23 19:57:36 +02:00
Ian McInerney ecd9bf696e Be consistent about using nullptr instead of 0
0 can be too easily overloaded into an int, so ensure we use nullptr
when we mean pointers.
2021-04-22 22:20:34 +01:00
Jeff Young 61ce1b35ec R/W dimension lock flags and update format for all lock flags.
Fixes https://gitlab.com/kicad/code/kicad/issues/8255
2021-04-21 19:59:27 +01:00
Wayne Stambaugh a7f956581c Pcbnew: fix board file formatting issues.
This does not required a board file version change.  All of the changes
are white space formatting fixes and improvements.
2021-04-20 10:18:31 -04:00
jean-pierre charras 2d9bac804c Pcbnew: minor fix: remove extra spaces when outputting pad primitives section.
No format change.
2021-04-18 15:25:14 +02:00
Jon Evans 433e148e08 Move some string formatting functions out of base_units
Keeping them in base_units means that we can't introduce
any dependence on these functions to anything that needs to
compile without one of the unit defines (EESCHEMA, PCBNEW, etc)
2021-04-14 23:21:10 -04:00
Roberto Fernandez Bautista edb2136a0d CADSTAR PCB: KiCad's minimum permitted Through Drill is 0.0508mm(2mils) 2021-04-12 20:25:05 +01:00
Roberto Fernandez Bautista a3196a11a7 CADSTAR PCB: Be more specific with "allow thermal pads" DRC hack
Only tag the footprint as such when we know it has overlaping copper
over the pads with different pad numbers
2021-04-12 20:25:05 +01:00
Roberto Fernandez Bautista b5edd5f6a5 CADSTAR PCB: Fix loading of thermal pads
- Create a pad if a component copper is associated with any other pads
  in the footprint.
- Rename/renumber 'PCB Only' pads that are associated with a component
  copper and make them all use the same pad name/number.
2021-04-12 20:25:05 +01:00
Jeff Young 2cde76a191 Don't do any hole clearance testing within a single footprint.
Fixes https://gitlab.com/kicad/code/kicad/issues/8141
2021-04-11 16:03:16 +01:00
Jeff Young 3450610977 Add ability to allow thermal vias to be implemented as pads.
This is mostly just for CADSTAR.  Since we don't (yet) have general
purpose footprint attributes, this reuses the "net tie" hack.

Fixes https://gitlab.com/kicad/code/kicad/issues/8141
2021-04-09 14:02:13 +01:00
Seth Hillbrand 7b3c7e1ef3 Fix some free/delete issues
Removes the C-format memory management
2021-04-08 16:58:45 -07:00
Roberto Fernandez Bautista 85efdb85b0 CADSTAR PCB: Ensure continuous track routes
When route offsetting, add an additional thin track to ensure
end point of one track and start point of the next are at the same
location.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/8131
2021-04-07 11:28:02 +00:00
Roberto Fernandez Bautista 9a764126ce CADSTAR PCB: Keep all tracks as a single chain where possible
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8119
2021-04-05 20:15:09 +01:00
Carsten Schoenert cb17c9f3dd Typo fix: Correct various misspelled words
agressive -> aggressive
decription -> description
miscellanous-> miscellaneous
rectange -> rectangle
Unkown -> Unknown
2021-04-03 13:39:50 +00:00
Roberto Fernandez Bautista b151dd02b9 CADSTAR PCB: Fix incorrect solder mask/paste clearance
Need to divide by two as this is a clearance, not diameter.
2021-03-30 13:03:56 +00:00
Roberto Fernandez Bautista ad2043eda6 CADSTAR PCB: DrillXoffset and DrillYoffset are zero when not specified
Fixes an issue that resulted in pads being loaded 100nm off from the
original CADSTAR position.
2021-03-30 13:03:56 +00:00
jean-pierre charras 6eb2e2a6e3 Fp editor: do not change item UUIDs when loading a footprint from library.
Fixes #8066
https://gitlab.com/kicad/code/kicad/issues/8066
2021-03-30 12:58:22 +02:00
Roberto Fernandez Bautista 34a435cd56 CADSTAR PCB: Handle import of pads with different paste and mask sizes
KiCad doesn't yet support full padstacks, but at least we can use the
solder mask / solder paste expansion to import a better result. Also
we can disable the specific layer if the shape has a size of zero.
2021-03-25 17:54:56 +00:00
Roberto Fernandez Bautista 107a1990c9 CADSTAR PCB: Handle route offset
The CADSTAR post processor has a peculiar feature called "route offset"
which effectively shortens tracks when the pad, track or via that it
connects to has a smaller width. This operation is not saved in the
design itself, but applied as a post processing operation meaning that
the importer has to apply it when loading on the board.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/6648
2021-03-25 17:50:33 +00:00
Roberto Fernandez Bautista 1468764f83 CADSTAR PCB: Lock footprint pads after import 2021-03-25 17:50:33 +00:00
jean-pierre charras 9a0f9575b6 Fix minor Coverity warnings 2021-03-25 09:12:24 +01:00
jean-pierre charras f0ed5fab39 add missing include for wxWidgets 3.1.4 2021-03-21 17:35:20 +01:00
Thomas Pointhuber 68f3d09ac1 altium: introduce tokenizer for query language
Based on this tokenizer, a LL1 parser will be built in the future.
2021-03-21 16:39:23 +01:00
Jon Evans c04e19f9ac Include optimization: move some things from common.h to point-of-use 2021-03-20 12:09:18 -04:00
Jeff Young fcb9af2b12 When saving footprint to library don't detach from board too early.
In particular, make sure it's been flipped to the front layer first.
We need to know the layers to do the flip.

Fixes https://gitlab.com/kicad/code/kicad/issues/7780
2021-03-03 15:07:01 +00:00
WhiteChairFromIkea bbd6a1db0e Formatting 2021-03-02 19:57:19 +00:00
WhiteChairFromIkea b33ec125ac use "pattern" instead of "sourcelibreference" for footprints 2021-03-02 19:57:19 +00:00
WhiteChairFromIkea a9ca1e4ebd use "pattern" instead of "sourcelibreference" for footprints 2021-03-02 19:57:19 +00:00
WhiteChairFromIkea 6533b47f0a use "pattern" instead of "sourcelibreference" for footprints 2021-03-02 19:57:19 +00:00
Jonathan Haas f90164f7cf Fix some typos and improve wording 2021-03-02 19:13:49 +01:00
Jon Evans dbb6d0fb4a Move paste and mask clearance settings back to board file
These are needed for correct Gerber plotting so need to be stored
along with the board file
2021-02-28 14:04:28 -05:00
Seth Hillbrand bcc3767c2a FABMASTER: Fill both kinds of silk polys
Silkscreen polygons are always filled (I think) in FABMASTER.  Other
layer polygons are not
2021-02-27 06:58:04 -08:00
Seth Hillbrand 5d352d2373 FABMASTER: Enforce KiCad limits on line width
We require unfilled polygons to have positive width
2021-02-26 17:16:54 -08:00
Seth Hillbrand 7e0168a99d FABMASTER: Process newer outline tag
Allegro uses the subclass "DESIGN_OUTLINE" in newer version for their
edge cuts instead of just "OUTLINE".  This handles both.

Fixes https://gitlab.com/kicad/code/kicad/issues/7735
2021-02-26 17:06:56 -08:00
Seth Hillbrand c9b39aaaed FABMASTER: Process REFDES position
The reference designator is stored separately with the Tracks, so we
need to extract position/size data from it there and match back to the
components later.

Fixes https://gitlab.com/kicad/code/kicad/issues/7733
2021-02-26 17:04:21 -08:00
Seth Hillbrand 75c525af4f FABMASTER: Handle polygons better
Polygons in non-etch layers need special handling to ensure they get
treated the same.

Fixes https://gitlab.com/kicad/code/kicad/issues/7731
2021-02-26 14:01:04 -08:00
Seth Hillbrand 2d5015c217 FABMASTER: Try harder to figure out nets
Find all intersecting points both forward and back between the filled
areas and the outlines in order to determine the proper net assignment
for the zones

Also creates rule areas for special zones instead of filled zones

Fixes https://gitlab.com/kicad/code/kicad/issues/7732
2021-02-26 13:06:06 -08:00
jean-pierre charras b31bf1e40f Always store via drill value in .kicad_pcb file.
Old boards were using UNDEFINED_DRILL_DIAMETER value in file for via drill when
the via drill value was the netclass value.
Recent boards always set the via drill to the actual value, but now we need
to be sure always store the drill value, because netclass value is not stored
in the board file. Otherwise the drill value of some (old) vias can be unknown
2021-02-26 20:57:43 +01:00
Seth Hillbrand 73dd93701a FABMASTER: demote odd graphics warning
Drill layers have many different shapes in FABMASTER.  These are not
used for board information, so we can ignore them.
2021-02-26 11:37:21 -08:00
Seth Hillbrand ae2a9ef538 Use std::locale::classic static local
Prevents performance issues when creating new locales under MSVC
2021-02-26 11:37:21 -08:00
Seth Hillbrand 103dde67f6 FABMASTER: Handle rotated/flipped custom pads
The rotate mirror actions need to line up with the expectation.
FABMASTER keeps elements board-referenced while KiCad has some elements
referenced to the board and some referenced to the footprint
2021-02-26 11:37:21 -08:00
Seth Hillbrand ff1300d13b FABMASTER: Preallocate vectors
Reserves memory for vector elements based on file size.  This helps
reduce the number of re-allocations needed when reading large files
2021-02-26 11:37:21 -08:00
Jeff Young 86aaa2e9cb Rationalize footprint bounding boxes and cache all of them.
Fixes https://gitlab.com/kicad/code/kicad/issues/7720
2021-02-26 13:50:27 +00:00
Seth Hillbrand c15a9e60d4 Used cached footprints without check in preview
Between the time the user loads the footprint preview in cvpcb or Add
Footprint in pcbnew, we don't need to verify cache integrity to display
the footprint.  We use the cache copy when displaying until we close the
selection window and re-open.  This limits our need to iterate over the
full directory on every footprint display.

Alternate solutions for v7 should include looking into libfswatch for
change detection
2021-02-25 15:46:52 -08:00
Seth Hillbrand 54539d2cd7 Calculate timestamp the same way both times
Timestamps were checked using a different routine than they were
generated with, leading to the cache always being out of date.

This uses the same routine for both.  While it iterates over the
directory twice during the initial load, this will never be dominant

Fixes https://gitlab.com/kicad/code/kicad/issues/7711
2021-02-25 14:36:49 -08:00
Seth Hillbrand 154d56b4f4 If items exist on the "Rescue" layer, prompt user
Don't allow Rescue items to enter the board design.  This prompts the
user to either delete them or move them to the Comments layer.
2021-02-23 09:25:00 -08:00
Roberto Fernandez Bautista 09ebfcd650 CADSTAR Importer: Fix Code Style
- Rename member variable names to use the 'm_' prefix
- Rename a few object types that clashed with KiCad object names, such
  as BOARD and SCHEMATIC, to avoid the use of '::' to access the KiCad
  objects.
- Remove some unused code.
2021-02-22 13:24:00 +00:00
Jon Evans 3bc9d7b95e Rework GAL layer enum to fix visibility import from legacy boards 2021-02-21 13:41:43 -05:00
Jeff Young 9dacd4abb7 Don't allow footprint children in groups outside their footprint.
Fixes https://gitlab.com/kicad/code/kicad/issues/7625
2021-02-20 18:09:56 +00:00
Marek Roszko 622baa6531 Silence more unused exception var warnings 2021-02-20 12:01:51 -05:00
Seth Hillbrand de7d9ef874 Fix tabs 2021-02-15 08:09:20 -08:00
Seth Hillbrand 55db1aa5f5 Fix minor Fabmaster issue 2021-02-13 16:32:39 -08:00
Roberto Fernandez Bautista 19d786852a CADSTAR PCB Archive Loader: Fix loading of zero sized pads
Some CADSTAR designs use zero sized pads because CADSTAR did not allow
arbitrarily assigning pad numbers: they had to be sequential. The
workaround to this was to use zero sized pads. However this causes DRC
errors in KiCad, so we load them just in a mask layer.
2021-02-10 18:49:21 +00:00
Roberto Fernandez Bautista aabe9c063f CADSTAR PCB Archive Loader: Some fixes to design rules
1. Make sure to convert to KiCad units
2. There are some KiCad rules that have no CADSTAR equivalent.
   Make a guess as to what an appropriate rule could be.
2021-02-10 18:49:21 +00:00
Roberto Fernandez Bautista 2d66abdc89 CADSTAR PCB Archive Importer: More improvements to loading of zones
Adds a new function Area() to SHAPE_POLY_SET
2021-02-10 18:49:21 +00:00
Roberto Fernandez Bautista 06c420a2a3 CADSTAR PCB Archive Importer: Improve loading of zones
Load fill state and guess zone priorities from fill state
2021-02-10 18:49:20 +00:00
Roberto Fernandez Bautista 80d8974f87 CADSTAR Archive Importer: Fix loading of non-cadstar font text sizes
Non-cadstar fonts use a width of 0.
2021-02-10 18:49:20 +00:00
Roberto Fernandez Bautista f559e94b00 Non-Kicad Project Importers: Fix the creation of project fp libraries
Adds a new function to PLUGIN GetImportedCachedLibraryFootprints() that
loads the library footprints of the board design that was imported
Fixes https://gitlab.com/kicad/code/kicad/-/issues/7449
2021-02-10 18:49:20 +00:00
Roberto Fernandez Bautista 297ff282f1 CADSTAR Importer: Update copyright years and remove white spaces 2021-02-10 18:49:20 +00:00
Marek Roszko 872184fe8b Revert "Bump minimum required CMake version to 3.10"
This reverts commit a475f45753.
2021-02-09 18:46:13 -05:00
Simon Richter a475f45753 Bump minimum required CMake version to 3.10
This allows us to remove even more workarounds
2021-02-08 12:23:08 +00:00
Thomas Pointhuber 088ff5b2bb altiium: set fill version, which allows us to do a copper pour without a line 2021-02-06 23:58:30 +01:00
Thomas Pointhuber 8ee6694c57 altium: Set smaller zone MinThickness by default to better account for missing design rules 2021-02-06 23:45:28 +01:00
Thomas Pointhuber d444ed80a5 altium: parse Regions6 to fill zone on import 2021-02-06 23:06:59 +01:00
Seth Hillbrand 016bffc899 Remove some more unneeded atof() calls 2021-02-05 10:18:34 -08:00
Seth Hillbrand 2e67cd2db8 Fix locale issue in Fabmaster import 2021-02-04 16:32:02 -08:00
Seth Hillbrand aa0db969ca Caching ConvexHull routine
Stores a cache of the convex hull similar to the bounding box.  Modifies
the hull based on actions to allow  complex footprint graphics without delay

Fixes https://gitlab.com/kicad/code/kicad/issues/7341
2021-02-04 15:56:52 -08:00
jean-pierre charras 0de3d48db5 typo 2021-02-04 09:00:35 +01:00
Seth Hillbrand 22d78a5827 FABMASTER: Handle flipped custom pads and rounded rects
Adds error messages for more cases and fallback for custom pads to
prevent invalid pad generation
2021-02-02 19:33:18 -08:00
Seth Hillbrand b54e951ed8 Fix a couple of checks in Fabmaster 2021-01-31 14:12:40 -08:00
Marek Roszko 21fe8542df Remove shadowing of identical base m_parser member 2021-01-31 12:56:27 -05:00
Thomas Pointhuber 70e6d0e79f altium: use those new fancy user definable layers and import the name from Altium 2021-01-31 11:15:08 +01:00
Thomas Pointhuber 6a9e1ecf9e altium: Center board after import 2021-01-30 17:43:02 +01:00
Seth Hillbrand 89a72df0b1 Fix a few FABMASTER issues
- Custom pads now properly supported with offset/rotation
- Fix missing pads from alternate layers

Fixes https://gitlab.com/kicad/code/kicad/issues/7299
2021-01-27 17:50:14 -08:00
Wayne Stambaugh 6a39b81647 Fix the last of broken Doxygen comment specifiers. 2021-01-27 17:39:44 -05:00
Jon Evans bea310569b Fix parsing of track/via user sizes from legacy boards
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6134
2021-01-26 21:51:36 -05:00
Jeff Young 1e9639e89c Save pintype alongside pinfunction (in pads).
Fixes https://gitlab.com/kicad/code/kicad/issues/7283
2021-01-26 15:28:48 +00:00
Seth Hillbrand 5a9c0a9b5a Quiet a few coverity warnings 2021-01-24 14:53:18 -08:00
Jeff Young 9ac807bdd2 Freeze implicit footprint file version at last before explicit.
We have been writing footprint versions for a while now, but we were
still interpreting the lack of a version as "current".  This changes
lack of a version to mean "last format before we started writing out
versions".

Fixes https://gitlab.com/kicad/code/kicad/issues/7143
2021-01-23 00:10:01 +00:00
Seth Hillbrand 060635b14c fabmaster: Fix graphic handling in geometry section 2021-01-19 12:16:40 -08:00
Ian McInerney d030d1667b Fix improper string creation in fabmaster importer 2021-01-18 18:35:10 +00:00