@@ -132,7 +132,8 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
132
132
133
133
# Panel fiducial parameters
134
134
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
136
137
FIDUCIAL_FOOTPRINT_BIG = "Fiducial_1.5mm_Mask3mm"
137
138
FIDUCIAL_FOOTPRINT_SMALL = "Fiducial_1mm_Mask3mm"
138
139
@@ -273,14 +274,22 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
273
274
return sysExit , report
274
275
275
276
# 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
284
293
285
294
# Check smaller / larger
286
295
if args .smaller and args .larger :
@@ -1002,32 +1011,32 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1002
1011
if FIDUCIALS_LR :
1003
1012
fiducials .append ([
1004
1013
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 ))),
1006
1015
FIDUCIAL_FOOTPRINT_BIG
1007
1016
])
1008
1017
fiducials .append ([
1009
1018
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 ))),
1011
1020
FIDUCIAL_FOOTPRINT_SMALL
1012
1021
])
1013
1022
fiducials .append ([
1014
1023
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 ))),
1016
1025
FIDUCIAL_FOOTPRINT_SMALL
1017
1026
])
1018
1027
if FIDUCIALS_TB :
1019
1028
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 ))),
1021
1030
int (panelCenter .y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1022
1031
FIDUCIAL_FOOTPRINT_BIG
1023
1032
])
1024
1033
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 ))),
1026
1035
int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1027
1036
FIDUCIAL_FOOTPRINT_SMALL
1028
1037
])
1029
1038
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 ))),
1031
1040
int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE )),
1032
1041
FIDUCIAL_FOOTPRINT_SMALL
1033
1042
])
@@ -1056,7 +1065,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1056
1065
hrail_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_LEFT )
1057
1066
hrail_text .SetPosition (
1058
1067
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 )),
1060
1069
int (panelCenter .y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE ))
1061
1070
)
1062
1071
)
@@ -1071,7 +1080,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1071
1080
vrail_text .SetPosition (
1072
1081
pcbnew .VECTOR2I (
1073
1082
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 ))
1075
1084
)
1076
1085
)
1077
1086
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):
1102
1111
titleblock_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_LEFT )
1103
1112
titleblock_text .SetPosition (
1104
1113
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 )),
1106
1115
int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE ))
1107
1116
)
1108
1117
)
@@ -1117,7 +1126,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1117
1126
titleblock_text .SetPosition (
1118
1127
pcbnew .VECTOR2I (
1119
1128
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 ))
1121
1130
)
1122
1131
)
1123
1132
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):
1133
1142
hrail_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_LEFT )
1134
1143
hrail_text .SetPosition (
1135
1144
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 )),
1137
1146
int (panelCenter .y + (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE ))
1138
1147
)
1139
1148
)
@@ -1147,7 +1156,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1147
1156
titleblock_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_LEFT )
1148
1157
titleblock_text .SetPosition (
1149
1158
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 )),
1151
1160
int (panelCenter .y - (panelHeight / 2 - HORIZONTAL_EDGE_RAIL_WIDTH / 2 * SCALE ))
1152
1161
)
1153
1162
)
@@ -1162,7 +1171,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
1162
1171
vrail_text .SetPosition (
1163
1172
pcbnew .VECTOR2I (
1164
1173
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 ))
1166
1175
)
1167
1176
)
1168
1177
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):
1177
1186
titleblock_text .SetPosition (
1178
1187
pcbnew .VECTOR2I (
1179
1188
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 ))
1181
1190
)
1182
1191
)
1183
1192
titleblock_text .SetTextAngle (pcbnew .EDA_ANGLE (- 900 , pcbnew .TENTHS_OF_A_DEGREE_T ))
0 commit comments