Commit graph

113 commits

Author SHA1 Message Date
Paulo Henrique Silva
670d3fbbd7 Add aperture macro parsing and evaluation.
Aperture macros can get complex with arithmetical operations,
variables and variables substitution.

Current pcb-tools code just read each macro block as an independent
unit, this cannot deal with variables that get changed after used.

This patch splits the task in two: first we parse all macro content
and creates a bytecode representation of all operations. This bytecode
representation will be executed when an AD command is issues passing
the required parameters.

Parsing is heavily based on gerbv using a Shunting Yard approach to
math parsing.

Integration with rs274x.py code is not finished as I need to figure out
how to integrate the final macro primitives with the graphical primitives
already in use.
2015-03-03 03:41:55 -03:00
Paulo Henrique Silva
b8dcc86cb4 Merge pull request #20 from curtacircuitos/ipc-d-356
Add IPC-D-356 Netlist Parsing
2015-02-21 02:48:55 -02:00
Hamilton Kibbe
b3e0ceb5c3 Add IPC-D-356 Netlist Parsing 2015-02-20 22:24:34 -05:00
Paulo Henrique Silva
dbe93f77e5 Fix floating point equality test 2015-02-20 14:19:43 -02:00
Paulo Henrique Silva
2ea9b8ad97 Fix size test, board is slight out of origin, so size does change now that we properly handle non-zero origins 2015-02-20 14:06:45 -02:00
Paulo Henrique Silva
5d764a6890 Fix GerberFile.bounds when board origin is negative 2015-02-20 13:58:08 -02:00
Hamilton Kibbe
d830375c4c Fix arc width per comment in #12 2015-02-20 10:07:26 -05:00
Hamilton Kibbe
4db7302485 Doc update 2015-02-18 23:23:53 -05:00
Hamilton Kibbe
5966d7830b Add offset operation 2015-02-18 23:13:23 -05:00
Hamilton Kibbe
e71d7a24b5 Python 3 tests passing 2015-02-18 21:14:30 -05:00
Philipp Klaus
ed7d9ceb34 accidentially changed import order in 7ace94b 2015-02-18 16:14:46 +01:00
Philipp Klaus
e6fa61c82b Fixing more relative import statements 2015-02-18 16:14:46 +01:00
Philipp Klaus
7ace94b023 Make gerber.render a package & fix more relative import statements 2015-02-18 15:44:57 +01:00
Philipp Klaus
0e98a3f0d4 Python3 needs print() 2015-02-18 14:42:10 +01:00
Hamilton Kibbe
288ac27084 Get unit conversion working for Gerber/Excellon files
Started operations module for file operations/transforms
2015-02-18 04:31:23 -05:00
Hamilton Kibbe
d63bf0d68a Fix cairo image size 2015-02-15 13:29:50 -05:00
Hamilton Kibbe
bfe1484160 Add cairo example code, and use example-generated image in readme 2015-02-15 03:29:47 -05:00
Hamilton Kibbe
5cf1fa74b4 Tests and bugfixes 2015-02-15 02:20:02 -05:00
Hamilton Kibbe
5e23d07bcb Fix rendering for line with rectangular aperture per #12. Still need to do the same for arcs. 2015-02-13 09:37:27 -05:00
Hamilton Kibbe
8f69c1dfa2 Update line primitive to take aperture parameter
This fixes the exception referenced in #12. Still need to add rendering
code for rectangle aperture lines and arcs.

Rectangle strokes will be drawn as polygons by the rendering backends.
2015-02-12 11:28:50 -05:00
Hamilton Kibbe
41f9475b13 Tests and bugfixes 2015-02-09 17:39:24 -05:00
Hamilton Kibbe
b0c55082b0 Add aperture macro statement tests 2015-02-09 13:57:15 -05:00
Hamilton Kibbe
aea1f38597 Fix write_gerber_value bug 2015-02-08 22:27:24 -05:00
Hamilton Kibbe
a4c8a4cbcf add rest of aperture macro primitives 2015-02-08 21:54:05 -05:00
Hamilton Kibbe
3435fecd3b Add rest of Aperture Macro Primitives 2015-02-08 21:52:09 -05:00
Paulo Henrique Silva
e38071868a Fix copy-paste error on ASParamStmt 2015-02-08 00:29:08 -02:00
Paulo Henrique Silva
d7a453e5ab Remove unused file 2015-02-08 00:28:17 -02:00
Hamilton Kibbe
f98b918634 Added some Aperture Macro Primitives. Moved AM primitives to seperate file 2015-02-02 20:03:26 -05:00
Hamilton Kibbe
1cc20b351c tests 2015-02-02 11:42:47 -05:00
Hamilton Kibbe
d98d23f8b5 More tests and bugfixes 2015-02-02 00:43:08 -05:00
Hamilton Kibbe
360eddc3c4 Added primitives and tests 2015-02-01 13:40:08 -05:00
Hamilton Kibbe
208149d676 merge upstream changes 2015-01-26 22:24:45 -05:00
Hamilton Kibbe
c054136a65 Added some tests 2015-01-26 22:17:09 -05:00
Hamilton Kibbe
939f782728 ...oops 2015-01-25 14:22:27 -05:00
Hamilton Kibbe
b495d51354 Changed zeros/zero suppression conventions to match file format specs 2015-01-25 14:19:48 -05:00
Hamilton Kibbe
d5157c1d07 Fix tests for leading zero suppression 2015-01-23 13:05:25 -05:00
Paulo Henrique Silva
0f36084aad Add Repeat Hole Stmt and fix UnitStmt parsing
* Repeat hole support (with no real parsing, just a copy)
* Fix UnitStmt to works even when a ,TZ or ,LZ information is not provided.
2015-01-15 05:01:40 -02:00
Paulo Henrique Silva
137c73f3e4 Many additions to Excellon parsing/creation.
CAUTION: the original code used zero_suppression flags
         in the opposite sense as Gerber functions. This
         patch changes it to behave just like Gerber code.

* Add metric/inch conversion support
* Add settings context variable to to_gerber just like Gerber code.
* Add some missing Excellon values.

Tests are not entirely updated.
2015-01-14 14:33:00 -02:00
Paulo Henrique Silva
ac89a3c365 Fix for cases whee the coordinate precision is decreased.
If we parse a file with 5.5 INCH format and ask to write
it back as 2.4 INCH we are going to loose precision and
write_gerber_value was not handling these cases write.
2015-01-14 14:31:03 -02:00
Paulo Henrique Silva
a9b5a17c53 Fix Mirror (deprecated) param generation 2015-01-14 14:30:53 -02:00
Paulo Henrique Silva
cbb662491c Refactor AM aperture handling and add unit conversion support
* Add support to convert between metric/impertial
* AM primitives are now properly created and can be
  converted between metric/imperial.
  (only Outline primitive is supported, no rendering yet)
2015-01-14 03:15:52 -02:00
Paulo Henrique Silva
53ee756609 Fix region primitive creation 2015-01-13 23:12:27 -02:00
Paulo Henrique Silva
be5b94b8c0 Fix parsing for OrCAD.
* Modify the way we parse parameters to allow more than
  one parameter in a single line as in the following example:

  %FSLAX55Y55*MOIN*%
  %IR0*IPPOS*OFA0.00000B0.00000*MIA0B0*SFA1.00000B1.00000*%

  (this is from OrCAD 16 default output)

* Add missing deprecated parameters.

* Change API to use given FileSettings on output. This allows
  us to use pcb-tools to convert between FS formats.
2014-12-15 23:44:12 -02:00
Paulo Henrique Silva
4bb2e5f8a0 Fix parsing for very short (less 20 lines) files. 2014-12-15 23:44:12 -02:00
Hamilton Kibbe
29deffcf77 add ipc2581 primitives 2014-12-05 23:59:28 -05:00
Paulo Henrique Silva
ab69ee0172 Bunch of small fixes to improve Gerber read/write. 2014-11-10 12:24:09 -02:00
Hamilton Kibbe
f5abd5b0bd Add arc rendering and tests 2014-10-28 22:11:43 -04:00
Hamilton Kibbe
95de179bb0 Fix rendering of 0-width lines (e.g. board outlines) in SVG and Cairo renderer 2014-10-27 08:29:43 -04:00
Hamilton Kibbe
c08cdf84bc removed dead code 2014-10-26 22:40:55 -04:00
Hamilton Kibbe
0437e4198a cairo working 2014-10-26 22:36:47 -04:00