Skip to content

Commit 5b026d3

Browse files
authored
Merge pull request #16 from sparkfun/release_candidate
Increase the rail width for AOI of the panel fiducials
2 parents 0fb2422 + eaa6fa7 commit 5b026d3

File tree

2 files changed

+39
-25
lines changed

2 files changed

+39
-25
lines changed

SparkFunKiCadPanelizer/panelizer/panelizer.py

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,8 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
132132

133133
# Panel fiducial parameters
134134
FIDUCIAL_MASK = 3.0 # mm - Fiducial_1.5mm_Mask3mm
135-
FIDUCIAL_OFFSET = 2.5 # mm
135+
FIDUCIAL_OFFSET_FROM_RAIL = 2.5 # mm
136+
FIDUCIAL_CLAMP_CLEARANCE = 3.0 # mm
136137
FIDUCIAL_FOOTPRINT_BIG = "Fiducial_1.5mm_Mask3mm"
137138
FIDUCIAL_FOOTPRINT_SMALL = "Fiducial_1mm_Mask3mm"
138139

@@ -273,14 +274,22 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
273274
return sysExit, report
274275

275276
# Check the fiducials
276-
if (FIDUCIALS_LR and (VERTICAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1))):
277-
report += "Cannot add L+R fiducials - edge rails not wide enough.\n"
278-
FIDUCIALS_LR = False
279-
sysExit = 1
280-
if (FIDUCIALS_TB and (HORIZONTAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1))):
281-
report += "Cannot add T+B fiducials - edge rails not wide enough.\n"
282-
FIDUCIALS_TB = False
283-
sysExit = 1
277+
if FIDUCIALS_LR:
278+
if (VERTICAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1)):
279+
report += "Cannot add L+R fiducials - edge rails not wide enough.\n"
280+
FIDUCIALS_LR = False
281+
sysExit = 1
282+
elif (((VERTICAL_EDGE_RAIL_WIDTH - FIDUCIAL_MASK) / 2) < FIDUCIAL_CLAMP_CLEARANCE):
283+
report += "Vertical edge rails do not provide adequate clamp clearance.\n"
284+
sysExit = 1
285+
if FIDUCIALS_TB:
286+
if (HORIZONTAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1)):
287+
report += "Cannot add T+B fiducials - edge rails not wide enough.\n"
288+
FIDUCIALS_TB = False
289+
sysExit = 1
290+
elif (((HORIZONTAL_EDGE_RAIL_WIDTH - FIDUCIAL_MASK) / 2) < FIDUCIAL_CLAMP_CLEARANCE):
291+
report += "Horizontal edge rails do not provide adequate clamp clearance.\n"
292+
sysExit = 1
284293

285294
# Check smaller / larger
286295
if args.smaller and args.larger:
@@ -1002,32 +1011,32 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
10021011
if FIDUCIALS_LR:
10031012
fiducials.append([
10041013
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1005-
int(panelCenter.y + (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
1014+
int(panelCenter.y + (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
10061015
FIDUCIAL_FOOTPRINT_BIG
10071016
])
10081017
fiducials.append([
10091018
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1010-
int(panelCenter.y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
1019+
int(panelCenter.y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
10111020
FIDUCIAL_FOOTPRINT_SMALL
10121021
])
10131022
fiducials.append([
10141023
int(panelCenter.x + (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1015-
int(panelCenter.y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
1024+
int(panelCenter.y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH))),
10161025
FIDUCIAL_FOOTPRINT_SMALL
10171026
])
10181027
if FIDUCIALS_TB:
10191028
fiducials.append([
1020-
int(panelCenter.x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
1029+
int(panelCenter.x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
10211030
int(panelCenter.y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
10221031
FIDUCIAL_FOOTPRINT_BIG
10231032
])
10241033
fiducials.append([
1025-
int(panelCenter.x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
1034+
int(panelCenter.x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
10261035
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
10271036
FIDUCIAL_FOOTPRINT_SMALL
10281037
])
10291038
fiducials.append([
1030-
int(panelCenter.x + (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
1039+
int(panelCenter.x + (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH))),
10311040
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
10321041
FIDUCIAL_FOOTPRINT_SMALL
10331042
])
@@ -1056,7 +1065,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
10561065
hrail_text.SetHorizJustify(pcbnew.GR_TEXT_H_ALIGN_LEFT)
10571066
hrail_text.SetPosition(
10581067
pcbnew.VECTOR2I(
1059-
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2)),
1068+
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2)),
10601069
int(panelCenter.y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE))
10611070
)
10621071
)
@@ -1071,7 +1080,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
10711080
vrail_text.SetPosition(
10721081
pcbnew.VECTOR2I(
10731082
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1074-
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2))
1083+
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2))
10751084
)
10761085
)
10771086
vrail_text.SetTextAngle(pcbnew.EDA_ANGLE(-900, pcbnew.TENTHS_OF_A_DEGREE_T)) # rotate if on vrail
@@ -1102,7 +1111,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11021111
titleblock_text.SetHorizJustify(pcbnew.GR_TEXT_H_ALIGN_LEFT)
11031112
titleblock_text.SetPosition(
11041113
pcbnew.VECTOR2I(
1105-
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2)),
1114+
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2)),
11061115
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE))
11071116
)
11081117
)
@@ -1117,7 +1126,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11171126
titleblock_text.SetPosition(
11181127
pcbnew.VECTOR2I(
11191128
int(panelCenter.x + (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1120-
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2))
1129+
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2))
11211130
)
11221131
)
11231132
titleblock_text.SetTextAngle(pcbnew.EDA_ANGLE(-900, pcbnew.TENTHS_OF_A_DEGREE_T))
@@ -1133,7 +1142,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11331142
hrail_text.SetHorizJustify(pcbnew.GR_TEXT_H_ALIGN_LEFT)
11341143
hrail_text.SetPosition(
11351144
pcbnew.VECTOR2I(
1136-
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2)),
1145+
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2)),
11371146
int(panelCenter.y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE))
11381147
)
11391148
)
@@ -1147,7 +1156,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11471156
titleblock_text.SetHorizJustify(pcbnew.GR_TEXT_H_ALIGN_LEFT)
11481157
titleblock_text.SetPosition(
11491158
pcbnew.VECTOR2I(
1150-
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2)),
1159+
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2)),
11511160
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE))
11521161
)
11531162
)
@@ -1162,7 +1171,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11621171
vrail_text.SetPosition(
11631172
pcbnew.VECTOR2I(
11641173
int(panelCenter.x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1165-
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2))
1174+
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2))
11661175
)
11671176
)
11681177
vrail_text.SetTextAngle(pcbnew.EDA_ANGLE(-900, pcbnew.TENTHS_OF_A_DEGREE_T)) # rotate if on vrail
@@ -1177,7 +1186,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
11771186
titleblock_text.SetPosition(
11781187
pcbnew.VECTOR2I(
11791188
int(panelCenter.x + (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE)),
1180-
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET * 2))
1189+
int(panelCenter.y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * SCALE - SCALE * FIDUCIAL_OFFSET_FROM_RAIL * 2))
11811190
)
11821191
)
11831192
titleblock_text.SetTextAngle(pcbnew.EDA_ANGLE(-900, pcbnew.TENTHS_OF_A_DEGREE_T))

SparkFunKiCadPanelizer/plugin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,19 @@ def run_panelizer(dlg, p_panelizer):
134134
leftright = dlg.CurrentSettings()["productionFiducialsCheck"]
135135
if not exposeedge:
136136
if fiducials:
137-
command.extend(['--hrail','6.35','--vrail','6.35'])
137+
# Default the rail width to 3/8".
138+
# This provides the clearance needed for clamping and AOI Inspection of the fiducials.
139+
# This is nasty. The default should be in panelizer.py. But I can't think of a solution
140+
# which is good for everyone - including anyone running the panelizer from the command line.
141+
command.extend(['--hrail','9.525','--vrail','9.525'])
138142
if leftright:
139143
command.append('--fiducialslr')
140144
else:
141145
command.append('--fiducialstb')
142146
else:
143147
if fiducials:
144-
command.extend(['--vrail','6.35'])
148+
# Same comment as above
149+
command.extend(['--vrail','9.525'])
145150
command.append('--fiducialslr')
146151

147152
self.logger.log(logging.INFO, command)

0 commit comments

Comments
 (0)