summaryrefslogtreecommitdiff
path: root/gerber/gerber_statements.py
AgeCommit message (Collapse)AuthorFilesLines
2021-06-13Repo re-org, make gerberex tests runjaseg1-1189/+0
2019-02-03Make primitives with unset level polarity inherit from regionjaseg1-5/+0
This fixes region rendering with programatically generated primitives such that clear level polarity works in an intuitive way. This is useful for e.g. cutouts in regions. Before, the renderer would set level polarity twice, both when starting the region and then again once for each region primitive (line or arc). The problem was that the primitives in a region with "clear" polarity would when constructed with unset polarity default to "dark". Thus the renderer would emit something like LPC (clear polarity) -> G36 (start region) -> LPD (dark polarity) -> {lines...} instead of LPC -> G36 -> {lines...}. After this commit, Line and Arc will retain None as level polarity when created with unset level polarity, and region rendering will override None with the region's polarity. Outside regions, the old dark default remains unchanged. Note on verification: Somehow, gEDA gerbv would still render the broken regions the way one would have intended, but other viewers (KiCAD gerbview, the online EasyEDA one and whatever JLC uses to make their silkscreens) would not.
2017-11-25Add hole support to ADParamStmt.rectjaseg1-2/+6
2016-11-18Add support for square holes in basic primitivesHamilton Kibbe1-5/+19
2016-11-06Merge upstream changesHamilton Kibbe1-2/+3
2016-11-05Finish Merge, most tests passingHamilton Kibbe1-26/+26
2016-09-24Commit partial merge so I can work on the planeHamilton Kibbe1-1/+2
2016-08-06Manually mere rendering changesHamilton Kibbe1-17/+30
2016-07-24Add more tests for rendering to PNG. Start adding tests for rendering to ↵Garret Fick1-1/+4
Gerber format. Changed definition of no hole to use None instead of 0 so we can differentiate when writing to Gerber format. Makde polygon use hole diameter instead of hole radius to match other primitives
2016-07-24Add many render tests based on the Umaco gerger specification. Fix multiple ↵Garret Fick1-2/+2
rendering bugs, especially related to holes in flashed apertures
2016-07-10Fix issue with chaning region mode via flash. Add options for controlling ↵Garret Fick1-2/+8
output from rendered gerber
2016-06-28Don't flash G03-only commandsGarret Fick1-0/+10
2016-06-25Add support for polygon aperturesGarret Fick1-1/+6
2016-05-28Fix AMParamStmt to_gerber to write changes back.Paulo Henrique Silva1-1/+1
AMParamStmt was not calling to_gerber on each of its primitives on his own to_gerber method. That way primitives that changes after reading, such as when you call to_inch/to_metric was failing because it was writing only the original macro back.
2016-05-28Fix units statement. Keep track of original macro statement in the AMGroupGarret Fick1-2/+2
2016-05-19Fix issue where did not always switch into the G01 mode after G03 when the ↵Garret Fick1-0/+4
point was unchanged
2016-03-01More rendering of AMGroup to statementsGarret Fick1-0/+10
2016-02-27Fix critical issue with rotatin points (when the angle is zero the y would ↵Garret Fick1-0/+4
be flipped). Render AM with outline to gerber
2016-02-27RS274X backend for rendering. Incompelte stillGarret Fick1-2/+63
2016-01-21Fix a bunch of rendering bugs.Hamilton Kibbe1-19/+35
- 'clear' polarity primitives no longer erase background - Added aperture macro support for polygons - Added aperture macro rendring support - Renderer now creates a new surface for each layer and merges them instead of working directly on a single surface - Updated examples accordingly
2015-12-30First time any macro rendersGarret Fick1-0/+3
2015-11-23Fix AMParamStmt to_gerber to write changes back.Paulo Henrique Silva1-1/+1
AMParamStmt was not calling to_gerber on each of its primitives on his own to_gerber method. That way primitives that changes after reading, such as when you call to_inch/to_metric was failing because it was writing only the original macro back.
2015-05-20Add support for PCBmodE generated files.Paulo Henrique Silva1-1/+1
PCBmodE uses a standard but probably undefined behaviour issue on Gerber where it defines circle apertures with a single modifier but leaves a trilling 'X' after it. 'X' is modifiers separator but when there is only one modifier the behaviour is undefined. For parsing we are just ignoring blank modifiers. Test updated to catch this case.
2015-05-16Add checks to ensure statement unit conversions are idempotentHamilton Kibbe1-45/+68
2015-04-14AMStatement are used as is when gerbers are generatedPaulo Henrique Silva1-2/+2
2015-04-07(really) Fix parsing for AM macros with zero modifiersPaulo Henrique Silva1-1/+1
2015-04-07Fix CommentStmt for multi-line commentsPaulo Henrique Silva1-1/+5
2015-04-07Add some deprecated but still found statementsPaulo Henrique Silva1-0/+31
2015-04-07Small change on __str__ for SF StatementPaulo Henrique Silva1-1/+1
2015-04-07Fix parsing for AM macros with zero modifiersPaulo Henrique Silva1-2/+2
2015-04-07Add unspecified FS D leading zeros formatPaulo Henrique Silva1-2/+9
FS D leading zero format (probably form Direct) is an unspecified coordinate format where all numbers are specified with both leading and trailing zeros.
2015-03-05Fix tests for macros with no variables.Paulo Henrique Silva1-14/+13
All AM*Primitive classes now handles float for all but the code modifiers. This simplifies the reading/parsing.
2015-03-03Add aperture macro parsing and evaluation.Paulo Henrique Silva1-26/+32
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-02-18Add offset operationHamilton Kibbe1-0/+25
2015-02-18Python 3 tests passingHamilton Kibbe1-2/+1
2015-02-18Get unit conversion working for Gerber/Excellon filesHamilton Kibbe1-11/+51
Started operations module for file operations/transforms
2015-02-15Tests and bugfixesHamilton Kibbe1-5/+5
2015-02-09Tests and bugfixesHamilton Kibbe1-16/+31
2015-02-08Fix copy-paste error on ASParamStmtPaulo Henrique Silva1-1/+1
2015-02-02Added some Aperture Macro Primitives. Moved AM primitives to seperate fileHamilton Kibbe1-75/+8
2015-02-02testsHamilton Kibbe1-7/+9
2015-01-26merge upstream changesHamilton Kibbe1-1/+1
2015-01-26Added some testsHamilton Kibbe1-2/+3
2015-01-14Fix Mirror (deprecated) param generationPaulo Henrique Silva1-1/+1
2015-01-14Refactor AM aperture handling and add unit conversion supportPaulo Henrique Silva1-4/+124
* 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)
2014-12-15Fix parsing for OrCAD.Paulo Henrique Silva1-137/+297
* 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-05add ipc2581 primitivesHamilton Kibbe1-1/+15
2014-11-10Bunch of small fixes to improve Gerber read/write.Paulo Henrique Silva1-27/+27
2014-10-26Fix ValueError, missing self.Paulo Henrique Silva1-1/+1
2014-10-26Merge aperture fixses from upstreamHamilton Kibbe1-4/+4