@@ -73,6 +73,7 @@ def args_parse(self, args):
73
73
)
74
74
parser .add_argument ("--hrail" , type = float , default = "0.0" , help = "Horizontal edge rail width (mm)" )
75
75
parser .add_argument ("--vrail" , type = float , default = "0.0" , help = "Vertical edge rail width (mm)" )
76
+
76
77
parser .add_argument ("--hrailtext" , help = "Text to put on the horizontal edge rail" )
77
78
parser .add_argument ("--vrailtext" , help = "Text to put on the vertical edge rail" )
78
79
parser .add_argument (
@@ -108,6 +109,11 @@ def args_parse(self, args):
108
109
parser .add_argument (
109
110
"--fiducialstb" , action = "store_true" , help = "Add panel fiducials top and bottom"
110
111
)
112
+ parser .add_argument (
113
+ "--fiducialpos" , type = float , default = "0.5" ,
114
+ help = "Position the fiducials at this fraction of the rail width, default 0.5"
115
+ )
116
+
111
117
parser .add_argument (
112
118
"--exposeedge" , action = "store_true" , help = "Expose PCB bottom edge - e.g. for M.2 cards"
113
119
)
@@ -190,6 +196,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
190
196
TITLE_Y = args .vtitle
191
197
FIDUCIALS_LR = args .fiducialslr
192
198
FIDUCIALS_TB = args .fiducialstb
199
+ FIDUCIAL_POS = args .fiducialpos
193
200
EXPOSED_EDGE = args .exposeedge
194
201
195
202
# Check if this is running in a plugin
@@ -280,21 +287,31 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
280
287
sysExit = 2
281
288
return sysExit , report
282
289
290
+ # Check the fiducial position
291
+ if (FIDUCIAL_POS < 0.0 ) or (FIDUCIAL_POS > 1.0 ):
292
+ report += "Invalid fiducial position. Quitting.\n "
293
+ sysExit = 2
294
+ return sysExit , report
295
+
283
296
# Check the fiducials
284
297
if FIDUCIALS_LR :
285
- if (VERTICAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1 )):
286
- report += "Cannot add L+R fiducials - edge rails not wide enough.\n "
298
+ fiducialExtent = (abs (0.5 - FIDUCIAL_POS ) * VERTICAL_EDGE_RAIL_WIDTH ) + (FIDUCIAL_MASK / 2 )
299
+ clampClearance = VERTICAL_EDGE_RAIL_WIDTH - ((FIDUCIAL_POS * VERTICAL_EDGE_RAIL_WIDTH ) + (FIDUCIAL_MASK / 2 ))
300
+ if fiducialExtent >= (VERTICAL_EDGE_RAIL_WIDTH / 2 ):
301
+ report += "Cannot add L+R fiducials at the selected position - edge rails not wide enough.\n "
287
302
FIDUCIALS_LR = False
288
303
sysExit = 1
289
- elif ((( VERTICAL_EDGE_RAIL_WIDTH - FIDUCIAL_MASK ) / 2 ) < FIDUCIAL_CLAMP_CLEARANCE ) :
304
+ elif clampClearance < FIDUCIAL_CLAMP_CLEARANCE :
290
305
report += "Vertical edge rails do not provide adequate clamp clearance.\n "
291
306
sysExit = 1
292
307
if FIDUCIALS_TB :
293
- if (HORIZONTAL_EDGE_RAIL_WIDTH < (FIDUCIAL_MASK + 1 )):
294
- report += "Cannot add T+B fiducials - edge rails not wide enough.\n "
308
+ fiducialExtent = (abs (0.5 - FIDUCIAL_POS ) * HORIZONTAL_EDGE_RAIL_WIDTH ) + (FIDUCIAL_MASK / 2 )
309
+ clampClearance = HORIZONTAL_EDGE_RAIL_WIDTH - ((FIDUCIAL_POS * HORIZONTAL_EDGE_RAIL_WIDTH ) + (FIDUCIAL_MASK / 2 ))
310
+ if fiducialExtent >= (HORIZONTAL_EDGE_RAIL_WIDTH / 2 ):
311
+ report += "Cannot add T+B fiducials at the selected position - edge rails not wide enough.\n "
295
312
FIDUCIALS_TB = False
296
313
sysExit = 1
297
- elif ((( HORIZONTAL_EDGE_RAIL_WIDTH - FIDUCIAL_MASK ) / 2 ) < FIDUCIAL_CLAMP_CLEARANCE ) :
314
+ elif clampClearance < FIDUCIAL_CLAMP_CLEARANCE :
298
315
report += "Horizontal edge rails do not provide adequate clamp clearance.\n "
299
316
sysExit = 1
300
317
@@ -1015,34 +1032,34 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1015
1032
fiducials = []
1016
1033
if FIDUCIALS_LR :
1017
1034
fiducials .append ([
1018
- int (panelCenter .x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1035
+ int (panelCenter .x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1019
1036
int (panelCenter .y + (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH ))),
1020
1037
FIDUCIAL_FOOTPRINT_BIG
1021
1038
])
1022
1039
fiducials .append ([
1023
- int (panelCenter .x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1040
+ int (panelCenter .x - (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1024
1041
int (panelCenter .y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH ))),
1025
1042
FIDUCIAL_FOOTPRINT_SMALL
1026
1043
])
1027
1044
fiducials .append ([
1028
- int (panelCenter .x + (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1045
+ int (panelCenter .x + (panelWidth / 2 - VERTICAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1029
1046
int (panelCenter .y - (panelHeight / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * HORIZONTAL_EDGE_RAIL_WIDTH ))),
1030
1047
FIDUCIAL_FOOTPRINT_SMALL
1031
1048
])
1032
1049
if FIDUCIALS_TB :
1033
1050
fiducials .append ([
1034
1051
int (panelCenter .x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH ))),
1035
- int (panelCenter .y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1052
+ int (panelCenter .y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1036
1053
FIDUCIAL_FOOTPRINT_BIG
1037
1054
])
1038
1055
fiducials .append ([
1039
1056
int (panelCenter .x - (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH ))),
1040
- int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1057
+ int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1041
1058
FIDUCIAL_FOOTPRINT_SMALL
1042
1059
])
1043
1060
fiducials .append ([
1044
1061
int (panelCenter .x + (panelWidth / 2 - (SCALE * FIDUCIAL_OFFSET_FROM_RAIL + SCALE * VERTICAL_EDGE_RAIL_WIDTH ))),
1045
- int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1062
+ int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH * ( 1.0 - FIDUCIAL_POS ) * SCALE )),
1046
1063
FIDUCIAL_FOOTPRINT_SMALL
1047
1064
])
1048
1065
for pos in fiducials :
0 commit comments