From a221bb647d7b441be16f0dc37d00b4e71981de68 Mon Sep 17 00:00:00 2001 From: Wannes Sels Date: Wed, 2 Nov 2022 21:25:24 +0100 Subject: [PATCH] add adhesive option for panelize tooling section --- kikit/panelize.py | 17 +++++++++++------ kikit/panelize_ui_impl.py | 5 +++-- kikit/panelize_ui_sections.py | 3 +++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/kikit/panelize.py b/kikit/panelize.py index 9ec30981..dec730cf 100644 --- a/kikit/panelize.py +++ b/kikit/panelize.py @@ -1312,20 +1312,25 @@ def makeCutsToLayer(self, cuts, layer=Layer.Cmts_User, prolongation=fromMm(0)): segment.SetWidth(fromMm(0.3)) self.board.Add(segment) - def addNPTHole(self, position, diameter, paste=False): + def addNPTHole(self, position, diameter, paste=False, adhesive=False): """ Add a drilled non-plated hole to the position (`wxPoint`) with given diameter. The paste option allows to place the hole on the paste layers. + The adhesive option allows to place the hole on the adhesive layers. """ footprint = pcbnew.FootprintLoad(KIKIT_LIB, "NPTH") footprint.SetPosition(position) for pad in footprint.Pads(): pad.SetDrillSize(pcbnew.wxSize(diameter, diameter)) pad.SetSize(pcbnew.wxSize(diameter, diameter)) - if paste: + if paste or adhesive: layerSet = pad.GetLayerSet() - layerSet.AddLayer(Layer.F_Paste) - layerSet.AddLayer(Layer.B_Paste) + if paste: + layerSet.AddLayer(Layer.F_Paste) + layerSet.AddLayer(Layer.B_Paste) + if adhesive: + layerSet.AddLayer(Layer.F_Adhes) + layerSet.AddLayer(Layer.B_Adhes) pad.SetLayerSet(layerSet) self.board.Add(footprint) @@ -1378,7 +1383,7 @@ def addCornerFiducials(self, fidCount, horizontalOffset, verticalOffset, self.addFiducial(pos, copperDiameter, openingDiameter, True) def addCornerTooling(self, holeCount, horizontalOffset, verticalOffset, - diameter, paste=False): + diameter, paste=False, adhesive=False): """ Add up to 4 tooling holes to the top-left, top-right, bottom-left and bottom-right corner of the board (in this order). This function expects @@ -1387,7 +1392,7 @@ def addCornerTooling(self, holeCount, horizontalOffset, verticalOffset, The offsets are measured from the outer edges of the substrate. """ for pos in self.panelCorners(horizontalOffset, verticalOffset)[:holeCount]: - self.addNPTHole(pos, diameter, paste) + self.addNPTHole(pos, diameter, paste, adhesive) def addMillFillets(self, millRadius): """ diff --git a/kikit/panelize_ui_impl.py b/kikit/panelize_ui_impl.py index 9eb692f8..83363943 100644 --- a/kikit/panelize_ui_impl.py +++ b/kikit/panelize_ui_impl.py @@ -491,11 +491,12 @@ def buildTooling(preset, panel): hoffset, voffset = toolingPreset["hoffset"], toolingPreset["voffset"] diameter = toolingPreset["size"] paste = toolingPreset["paste"] + adhesive = toolingPreset["adhesive"] if type == "3hole": - panel.addCornerTooling(3, hoffset, voffset, diameter, paste) + panel.addCornerTooling(3, hoffset, voffset, diameter, paste, adhesive) return if type == "4hole": - panel.addCornerTooling(4, hoffset, voffset, diameter, paste) + panel.addCornerTooling(4, hoffset, voffset, diameter, paste, adhesive) return raise PresetError(f"Unknown type '{type}' of tooling specification.") except KeyError as e: diff --git a/kikit/panelize_ui_sections.py b/kikit/panelize_ui_sections.py index ffaa3c84..f9e63bc3 100644 --- a/kikit/panelize_ui_sections.py +++ b/kikit/panelize_ui_sections.py @@ -477,6 +477,9 @@ def ppFraming(section): "paste": SBool( typeIn(["3hole", "4hole"]), "Include holes on the paste layer"), + "adhesive": SBool( + typeIn(["3hole", "4hole"]), + "Include holes on the adhesive layer"), "code": SPlugin( plugin.ToolingPlugin, typeIn(["plugin"]),