[Templates][Added] CheckZoneFill aborts on big changes
- Enables the check_zone_fill preflight - Creates graphical diff - Computes the number of changes Closes #431
This commit is contained in:
parent
d6e008ff48
commit
a35e9fc2c7
|
|
@ -41,6 +41,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
- `_value_split` splits the Value field but the field remains and the extra
|
- `_value_split` splits the Value field but the field remains and the extra
|
||||||
data is not visible
|
data is not visible
|
||||||
- `_value_split_replace` splits the Value field and replaces it
|
- `_value_split_replace` splits the Value field and replaces it
|
||||||
|
- Internal templates:
|
||||||
|
- CheckZoneFill: Used to check if a zone fill operation makes the PCB quite
|
||||||
|
different (#431)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Command line:
|
- Command line:
|
||||||
|
|
|
||||||
|
|
@ -421,7 +421,8 @@ This section is used to specify tasks that will be executed before generating an
|
||||||
This preflight modifies the schematic, use it only in revision control environments.
|
This preflight modifies the schematic, use it only in revision control environments.
|
||||||
Used to solve ERC problems when using filters that remove power reference numbers.
|
Used to solve ERC problems when using filters that remove power reference numbers.
|
||||||
- `check_zone_fills`: [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
- `check_zone_fills`: [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
||||||
The original PCB remains unchanged.
|
The original PCB remains unchanged. If you need to abort when the zone fill
|
||||||
|
creates significant changes to a layer use the CheckZoneFill internal template.
|
||||||
- `erc_warnings`: [boolean=false] Option for `run_erc`. ERC warnings are considered errors.
|
- `erc_warnings`: [boolean=false] Option for `run_erc`. ERC warnings are considered errors.
|
||||||
- `fill_zones`: [boolean=false] Fill all zones again and save the PCB.
|
- `fill_zones`: [boolean=false] Fill all zones again and save the PCB.
|
||||||
- `filters`: [list(dict)] A list of entries to filter out ERC/DRC messages.
|
- `filters`: [list(dict)] A list of entries to filter out ERC/DRC messages.
|
||||||
|
|
@ -5403,6 +5404,10 @@ Here is a list of currently defined templates:
|
||||||
|
|
||||||
They include support for:
|
They include support for:
|
||||||
|
|
||||||
|
- CheckZoneFill: enables the `check_zone_fills` preflight and checks the refilled PCB doesn't changed too much.
|
||||||
|
- _diff_cur_pcb_show: Makes a diff between the PCB in memory and the one on disk
|
||||||
|
- _diff_cur_pcb_check: Computes the difference between PCB in memory and the one on disk. Aborts if more than
|
||||||
|
100 pixels changed.
|
||||||
- [Elecrow](https://www.elecrow.com/): contain fabrication outputs compatible with Elecrow
|
- [Elecrow](https://www.elecrow.com/): contain fabrication outputs compatible with Elecrow
|
||||||
- _Elecrow_gerbers: Gerbers
|
- _Elecrow_gerbers: Gerbers
|
||||||
- _Elecrow_drill: Drill files
|
- _Elecrow_drill: Drill files
|
||||||
|
|
|
||||||
|
|
@ -1295,6 +1295,10 @@ Here is a list of currently defined templates:
|
||||||
|
|
||||||
They include support for:
|
They include support for:
|
||||||
|
|
||||||
|
- CheckZoneFill: enables the `check_zone_fills` preflight and checks the refilled PCB doesn't changed too much.
|
||||||
|
- _diff_cur_pcb_show: Makes a diff between the PCB in memory and the one on disk
|
||||||
|
- _diff_cur_pcb_check: Computes the difference between PCB in memory and the one on disk. Aborts if more than
|
||||||
|
100 pixels changed.
|
||||||
- [Elecrow](https://www.elecrow.com/): contain fabrication outputs compatible with Elecrow
|
- [Elecrow](https://www.elecrow.com/): contain fabrication outputs compatible with Elecrow
|
||||||
- _Elecrow_gerbers: Gerbers
|
- _Elecrow_gerbers: Gerbers
|
||||||
- _Elecrow_drill: Drill files
|
- _Elecrow_drill: Drill files
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@ preflight:
|
||||||
# Used to solve ERC problems when using filters that remove power reference numbers.
|
# Used to solve ERC problems when using filters that remove power reference numbers.
|
||||||
annotate_power: true
|
annotate_power: true
|
||||||
# [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
# [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
||||||
# The original PCB remains unchanged.
|
# The original PCB remains unchanged. If you need to abort when the zone fill
|
||||||
|
# creates significant changes to a layer use the CheckZoneFill internal template.
|
||||||
check_zone_fills: true
|
check_zone_fills: true
|
||||||
# [boolean=false] Option for `run_erc`. ERC warnings are considered errors.
|
# [boolean=false] Option for `run_erc`. ERC warnings are considered errors.
|
||||||
erc_warnings: false
|
erc_warnings: false
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright (c) 2020-2022 Salvador E. Tropea
|
# Copyright (c) 2020-2023 Salvador E. Tropea
|
||||||
# Copyright (c) 2020-2022 Instituto Nacional de Tecnología Industrial
|
# Copyright (c) 2020-2023 Instituto Nacional de Tecnología Industrial
|
||||||
# License: GPL-3.0
|
# License: GPL-3.0
|
||||||
# Project: KiBot (formerly KiPlot)
|
# Project: KiBot (formerly KiPlot)
|
||||||
from .error import (KiPlotConfigurationError)
|
from .error import (KiPlotConfigurationError)
|
||||||
|
|
@ -10,7 +10,8 @@ from .macros import macros, pre_class # noqa: F401
|
||||||
@pre_class
|
@pre_class
|
||||||
class Check_Zone_Fills(BasePreFlight): # noqa: F821
|
class Check_Zone_Fills(BasePreFlight): # noqa: F821
|
||||||
""" [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
""" [boolean=false] Zones are filled before doing any operation involving PCB layers.
|
||||||
The original PCB remains unchanged """
|
The original PCB remains unchanged. If you need to abort when the zone fill
|
||||||
|
creates significant changes to a layer use the CheckZoneFill internal template """
|
||||||
def __init__(self, name, value):
|
def __init__(self, name, value):
|
||||||
super().__init__(name, value)
|
super().__init__(name, value)
|
||||||
if not isinstance(value, bool):
|
if not isinstance(value, bool):
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Run a diff between the current PCB on disk and the one loaded in memory after
|
||||||
|
# refilling the zones.
|
||||||
|
# Can be used to implement a check to detect if the committed file needs a
|
||||||
|
# zone refill.
|
||||||
|
kibot:
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
preflight:
|
||||||
|
check_zone_fills: true
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
- name: '_diff_cur_pcb_show'
|
||||||
|
comment: "Show differences for the zone fill"
|
||||||
|
type: diff
|
||||||
|
layers: copper
|
||||||
|
options:
|
||||||
|
cache_dir: .cache
|
||||||
|
old: ''
|
||||||
|
old_type: file
|
||||||
|
new_type: current
|
||||||
|
|
||||||
|
- name: '_diff_cur_pcb_check'
|
||||||
|
comment: "Check the zone fill doesn't generate important changes"
|
||||||
|
type: diff
|
||||||
|
layers: copper
|
||||||
|
options:
|
||||||
|
cache_dir: .cache
|
||||||
|
diff_mode: stats
|
||||||
|
threshold: 100
|
||||||
|
old: ''
|
||||||
|
old_type: file
|
||||||
|
new_type: current
|
||||||
Loading…
Reference in New Issue