Skip to content

Commit

Permalink
Add unique references for holes added by KiKit
Browse files Browse the repository at this point in the history
  • Loading branch information
yaqwsx committed Jun 27, 2023
1 parent f3ec40f commit d6b7294
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions kikit/panelize.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ def __init__(self, panelFilename):
self.vCutLayer = Layer.Cmts_User
self.vCutClearance = 0
self.copperLayerCount = None
self.renderedMousebiteCounter = 0
self.zonesToRefill = pcbnew.ZONES()
self.pageSize: Union[None, str, Tuple[int, int]] = None

Expand Down Expand Up @@ -1471,6 +1472,7 @@ def makeMouseBites(self, cuts, diameter, spacing, offset=fromMm(0.25),
offsetCuts.append(offsetCut)

for cut in listGeometries(shapely.ops.unary_union(offsetCuts).simplify(SHP_EPSILON)):
self.renderedMousebiteCounter += 1
length = cut.length
count = int(length / spacing) + 1
for i in range(count):
Expand All @@ -1479,7 +1481,8 @@ def makeMouseBites(self, cuts, diameter, spacing, offset=fromMm(0.25),
else:
hole = cut.interpolate( i * length / (count - 1) )
if bloatedSubstrate.intersects(hole):
self.addNPTHole(toKiCADPoint((hole.x, hole.y)), diameter)
self.addNPTHole(toKiCADPoint((hole.x, hole.y)), diameter,
ref=f"KiKit_MB_{self.renderedMousebiteCounter}_{i+1}")

def makeCutsToLayer(self, cuts, layer=Layer.Cmts_User, prolongation=fromMm(0)):
"""
Expand All @@ -1501,7 +1504,8 @@ def makeCutsToLayer(self, cuts, layer=Layer.Cmts_User, prolongation=fromMm(0)):
segment.SetWidth(fromMm(0.3))
self.board.Add(segment)

def addNPTHole(self, position: VECTOR2I, diameter: KiLength, paste: bool=False) -> None:
def addNPTHole(self, position: VECTOR2I, diameter: KiLength,
paste: bool=False, ref: Optional[str]=None) -> None:
"""
Add a drilled non-plated hole to the position (`VECTOR2I`) with given
diameter. The paste option allows to place the hole on the paste layers.
Expand All @@ -1516,6 +1520,8 @@ def addNPTHole(self, position: VECTOR2I, diameter: KiLength, paste: bool=False)
layerSet.AddLayer(Layer.F_Paste)
layerSet.AddLayer(Layer.B_Paste)
pad.SetLayerSet(layerSet)
if ref is not None:
footprint.SetReference(ref)
self.board.Add(footprint)

def addFiducial(self, position: VECTOR2I, copperDiameter: KiLength,
Expand Down Expand Up @@ -1581,8 +1587,8 @@ 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)
for i, pos in enumerate(self.panelCorners(horizontalOffset, verticalOffset)[:holeCount]):
self.addNPTHole(pos, diameter, paste, ref=f"KiKit_TO_{i+1}")

def addMillFillets(self, millRadius):
"""
Expand Down

0 comments on commit d6b7294

Please sign in to comment.