From 6e0deccdc177cd648afe93a6a06656d594e59f41 Mon Sep 17 00:00:00 2001 From: Frank Leon Rose Date: Mon, 5 Apr 2021 21:52:50 -0400 Subject: [PATCH] Add invert_bottom parameter --- README.md | 6 ++++-- docs/README.in | 3 ++- kibot/fil_rot_footprint.py | 6 +++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index fd4ed701..a9a34811 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,8 @@ Currently the only type available is `generic`. - `extend`: [boolean=true] Extends the internal list of rotations with the one provided. Otherwise just use the provided list. - `name`: [string=''] Used to identify this particular filter definition. - - `negative_bottom`: [boolean=true] Rotation for bottom components is computed substracting. + - `negative_bottom`: [boolean=true] Rotation for bottom components is computed via subtraction as `(component rot - angle)`. + - `invert_bottom`: [boolean=false] Rotation for bottom components is negated. - `rotations`: [list(list(string))] A list of pairs regular expression/rotation. Components matching the regular expression will be rotated the indicated angle. - subparts: Subparts @@ -2181,7 +2182,8 @@ Using it, instead of the internal filter named `_rot_footprint`, is the same her The filter supports the following options: - `extend`: [boolean=true] Extends the internal list of rotations with the one provided. Otherwise just use the provided list. -- `negative_bottom`: [boolean=true] Rotation for bottom components is computed substracting. Note that this should be coherent with the `bottom_negative_x` of the position output. +- `negative_bottom`: [boolean=true] Rotation for bottom components is computed via subtraction as `(component rot - angle)`. Note that this should be coherent with the `bottom_negative_x` of the position output. +- `invert_bottom`: [boolean=false] Rotation for bottom components is negated, resulting in either : `(- component rot - angle)` or when combined with `negative_bottom`, `(angle - component rot)`. - `rotations`: [list(list(string))] A list of pairs regular expression/rotation. Components matching the regular expression will be rotated the indicated angle. In order to add a new rotation or just change an existing one you just need to use the `rotations` option. diff --git a/docs/README.in b/docs/README.in index 25ec1d59..6e6ccc97 100644 --- a/docs/README.in +++ b/docs/README.in @@ -1175,7 +1175,8 @@ Using it, instead of the internal filter named `_rot_footprint`, is the same her The filter supports the following options: - `extend`: [boolean=true] Extends the internal list of rotations with the one provided. Otherwise just use the provided list. -- `negative_bottom`: [boolean=true] Rotation for bottom components is computed substracting. Note that this should be coherent with the `bottom_negative_x` of the position output. +- `negative_bottom`: [boolean=true] Rotation for bottom components is computed via substracting. Note that this should be coherent with the `bottom_negative_x` of the position output. +- `invert_bottom`: [boolean=false] Rotation for bottom components is negated, resulting in either : `(- component rot - angle)` or when combined with `negative_bottom`, `(angle - component rot)` - `rotations`: [list(list(string))] A list of pairs regular expression/rotation. Components matching the regular expression will be rotated the indicated angle. In order to add a new rotation or just change an existing one you just need to use the `rotations` option. diff --git a/kibot/fil_rot_footprint.py b/kibot/fil_rot_footprint.py index 9319d433..c4c54b01 100644 --- a/kibot/fil_rot_footprint.py +++ b/kibot/fil_rot_footprint.py @@ -61,7 +61,9 @@ class Rot_Footprint(BaseFilter): # noqa: F821 """ Extends the internal list of rotations with the one provided. Otherwise just use the provided list """ self.negative_bottom = True - """ Rotation for bottom components is computed substracting """ + """ Rotation for bottom components is computed via substracting """ + self.invert_bottom = False + """ Rotation for bottom components is negated """ self.rotations = Optionable """ [list(list(string))] A list of pairs regular expression/rotation. Components matching the regular expression will be rotated the indicated angle """ @@ -96,6 +98,8 @@ class Rot_Footprint(BaseFilter): # noqa: F821 comp.footprint_rot -= angle else: comp.footprint_rot += angle + if self.invert_bottom and comp.bottom: + comp.footprint_rot = -comp.footprint_rot comp.footprint_rot = comp.footprint_rot % 360 if GS.debug_level > 2: logger.debug('Rotating ref: {} {}: {} -> {}'.