[Report][Fixed] Problems for NPTH holes with some sizes
- When using NPTH holes with sizes that doesn't correspond to real drill tools. It generated bogus reports about wrong OARs. Close #326
This commit is contained in:
parent
96f7b4ee5b
commit
c2cd439bb6
|
|
@ -46,6 +46,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
Firefox.
|
Firefox.
|
||||||
- Diff: Problems when comparing to a repo point where the PCB/SCH didn't exist
|
- Diff: Problems when comparing to a repo point where the PCB/SCH didn't exist
|
||||||
yet. (#323)
|
yet. (#323)
|
||||||
|
- Report: Problems when using NPTH holes with sizes that doesn't correspond to
|
||||||
|
real drill tools. It generated bogus reports about wrong OARs. (#326)
|
||||||
|
|
||||||
## [1.4.0] - 2022-10-12
|
## [1.4.0] - 2022-10-12
|
||||||
### Added
|
### Added
|
||||||
|
|
|
||||||
|
|
@ -487,6 +487,36 @@ class ReportOptions(BaseOptions):
|
||||||
hole_ec = hole
|
hole_ec = hole
|
||||||
return oar, oar_ec, hole_ec
|
return oar, oar_ec, hole_ec
|
||||||
|
|
||||||
|
def analyze_oar(self, oar_t, oar_ec_t, is_pth, min_oar, pad, dr_x_real, dr_y_real, pad_sz, dr):
|
||||||
|
""" Check the computed OAR and choose if we use it or not.
|
||||||
|
Inform anomalies to the user. """
|
||||||
|
if oar_t > 0:
|
||||||
|
if is_pth:
|
||||||
|
# For plated holes we always use it and report anomalies
|
||||||
|
self.oar_pads = min(self.oar_pads, oar_t)
|
||||||
|
self.oar_pads_ec = min(self.oar_pads_ec, oar_ec_t)
|
||||||
|
if oar_t < min_oar:
|
||||||
|
logger.warning(W_WRONGOAR+"Really small OAR detected ({} mm) for pad {} using drill tool ({}, {})".
|
||||||
|
format(to_mm(oar_t, 4), get_pad_info(pad), to_mm(dr_x_real), to_mm(dr_y_real)))
|
||||||
|
if pad_sz == dr:
|
||||||
|
logger.warning(W_WRONGOAR+"Try adjusting the drill size to an available drill tool")
|
||||||
|
else:
|
||||||
|
# For non plated holes we don't use values resulting from the fact that the tool is smaller
|
||||||
|
if oar_t < min_oar and pad_sz == dr:
|
||||||
|
logger.warning(W_WRONGOAR+"Potential copper ring for pad {}, change the pad size to ({}, {})".
|
||||||
|
format(get_pad_info(pad), to_mm(dr_x_real), to_mm(dr_y_real)))
|
||||||
|
logger.warning(W_WRONGOAR+"Or enlarge both to the size of an available drill tool")
|
||||||
|
else:
|
||||||
|
self.oar_pads = min(self.oar_pads, oar_t)
|
||||||
|
self.oar_pads_ec = min(self.oar_pads_ec, oar_ec_t)
|
||||||
|
elif oar_t < 0:
|
||||||
|
# The negative value can be a result of converting the drill size to a real drill size
|
||||||
|
# So we inform it only if the pad and drill are different
|
||||||
|
if pad_sz != dr and is_pth:
|
||||||
|
logger.warning(W_WRONGOAR+"Negative OAR detected for pad "+get_pad_info(pad))
|
||||||
|
elif oar_t == 0 and is_pth:
|
||||||
|
logger.warning(W_WRONGOAR+"Plated pad without copper "+get_pad_info(pad))
|
||||||
|
|
||||||
def collect_data(self, board):
|
def collect_data(self, board):
|
||||||
ds = board.GetDesignSettings()
|
ds = board.GetDesignSettings()
|
||||||
self.extra_pth_drill = GS.global_extra_pth_drill*pcbnew.IU_PER_MM
|
self.extra_pth_drill = GS.global_extra_pth_drill*pcbnew.IU_PER_MM
|
||||||
|
|
@ -619,16 +649,7 @@ class ReportOptions(BaseOptions):
|
||||||
self.pad_drill_real_ec = min(dr_ec, self.pad_drill_real_ec)
|
self.pad_drill_real_ec = min(dr_ec, self.pad_drill_real_ec)
|
||||||
oar_t = min(oar_x, oar_y)
|
oar_t = min(oar_x, oar_y)
|
||||||
oar_ec_t = min(oar_ec_x, oar_ec_y)
|
oar_ec_t = min(oar_ec_x, oar_ec_y)
|
||||||
if oar_t > 0:
|
self.analyze_oar(oar_t, oar_ec_t, is_pth, min_oar, pad, dr_x_real, dr_y_real, pad_sz, dr)
|
||||||
self.oar_pads = min(self.oar_pads, oar_t)
|
|
||||||
self.oar_pads_ec = min(self.oar_pads_ec, oar_ec_t)
|
|
||||||
if oar_t < min_oar:
|
|
||||||
logger.warning(W_WRONGOAR+"Really small OAR detected ({} mm) for pad {}".
|
|
||||||
format(to_mm(oar_t, 4), get_pad_info(pad)))
|
|
||||||
elif oar_t < 0:
|
|
||||||
logger.warning(W_WRONGOAR+"Negative OAR detected for pad "+get_pad_info(pad))
|
|
||||||
elif oar_t == 0 and is_pth:
|
|
||||||
logger.warning(W_WRONGOAR+"Plated pad without copper "+get_pad_info(pad))
|
|
||||||
self._vias_m = sorted(self._vias.keys())
|
self._vias_m = sorted(self._vias.keys())
|
||||||
self._vias_ec_m = sorted(self._vias_ec.keys())
|
self._vias_ec_m = sorted(self._vias_ec.keys())
|
||||||
# Via Pad size
|
# Via Pad size
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue