@@ -306,8 +306,32 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
306
306
# Set up layer table
307
307
layertable = {}
308
308
numlayers = pcbnew .PCB_LAYER_ID_COUNT
309
+ edgeLayerNumber = None
310
+ vScoreLayerNumber = None
311
+ vScoreTextLayerNumber = None
309
312
for i in range (numlayers ):
310
- layertable [board .GetLayerName (i )] = i
313
+ layertable [i ] = {'standardName' : board .GetStandardLayerName (i ), 'actualName' : board .GetLayerName (i )}
314
+ if "Edge.Cuts" in board .GetStandardLayerName (i ):
315
+ edgeLayerNumber = i
316
+ if V_SCORE_LAYER in board .GetStandardLayerName (i ):
317
+ vScoreLayerNumber = i
318
+ if V_SCORE_TEXT_LAYER in board .GetStandardLayerName (i ):
319
+ vScoreTextLayerNumber = i
320
+
321
+ if edgeLayerNumber is None :
322
+ report += "Edge.Cuts not found in layertable. Quitting.\n "
323
+ sysExit = 2
324
+ return sysExit , report
325
+
326
+ if vScoreLayerNumber is None :
327
+ report += V_SCORE_LAYER + " not found in layertable. Quitting.\n "
328
+ sysExit = 2
329
+ return sysExit , report
330
+
331
+ if vScoreTextLayerNumber is None :
332
+ report += V_SCORE_TEXT_LAYER + " not found in layertable. Quitting.\n "
333
+ sysExit = 2
334
+ return sysExit , report
311
335
312
336
# Get dimensions of board
313
337
# Note: the bounding box width and height _include_ the Edge.Cuts line width.
@@ -324,7 +348,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
324
348
cutWidth = 0
325
349
drawings = board .GetDrawings ()
326
350
for drawing in drawings :
327
- if drawing .IsOnLayer (layertable [ "Edge.Cuts" ] ):
351
+ if drawing .IsOnLayer (edgeLayerNumber ):
328
352
if drawing .GetWidth () > cutWidth :
329
353
cutWidth = drawing .GetWidth ()
330
354
#report += "Subtracting Edge.Cuts line width of {}mm.\n".format(cutWidth / SCALE)
@@ -404,7 +428,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
404
428
sparkxLogoSeen = False
405
429
solderMask = None
406
430
silkscreen = None
407
- numLayers = None
431
+ numLayers = "Layers: {}" . format ( board . GetCopperLayerCount ())
408
432
controlledImpedance = None
409
433
finish = None
410
434
thickness = None
@@ -427,11 +451,6 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
427
451
drill = sourceTrack .GetDrill ()
428
452
if drill < minViaDrill :
429
453
minViaDrill = drill
430
- layer = sourceTrack .GetLayerName ()
431
- if numLayers is None and ("In1.Cu" in layer or "In2.Cu" in layer ):
432
- numLayers = "Layers: 4"
433
- if "In3.Cu" in layer or "In4.Cu" in layer :
434
- numLayers = "Layers: 6"
435
454
for x in range (0 , NUM_X ): # iterate through x direction
436
455
for y in range (0 , NUM_Y ): # iterate through y direction
437
456
if (x != 0 ) or (y != 0 ): # do not duplicate source object to location
@@ -619,7 +638,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
619
638
# Erase all existing edgeCuts objects (individual board outlines)
620
639
#drawings = board.GetDrawings()
621
640
#for drawing in drawings:
622
- # if drawing.IsOnLayer(layertable["Edge.Cuts"] ):
641
+ # if drawing.IsOnLayer(edgeLayerNumber ):
623
642
# drawing.DeleteStructure()
624
643
625
644
# Rail Edge.Cuts
@@ -742,7 +761,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
742
761
board .Add (edge )
743
762
edge .SetStart (pcbnew .VECTOR2I (int (cut [0 ]), int (cut [1 ])))
744
763
edge .SetEnd (pcbnew .VECTOR2I (int (cut [2 ]), int (cut [3 ])))
745
- edge .SetLayer (layertable [ "Edge.Cuts" ] )
764
+ edge .SetLayer (edgeLayerNumber )
746
765
747
766
# Re-calculate board dimensions with new edge cuts
748
767
panelWidth = board .GetBoardEdgesBoundingBox ().GetWidth ()
@@ -806,7 +825,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
806
825
v_score_line = pcbnew .PCB_SHAPE (board )
807
826
v_score_line .SetStart (pcbnew .VECTOR2I (int (x_loc ), int (vscore_top )))
808
827
v_score_line .SetEnd (pcbnew .VECTOR2I (int (x_loc ), int (vscore_bottom )))
809
- v_score_line .SetLayer (layertable [ V_SCORE_LAYER ] )
828
+ v_score_line .SetLayer (vScoreLayerNumber )
810
829
v_score_line .SetWidth (int (V_SCORE_WIDTH * SCALE ))
811
830
board .Add (v_score_line )
812
831
v_score_text = pcbnew .PCB_TEXT (board )
@@ -818,7 +837,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
818
837
v_score_text .SetTextSize (
819
838
pcbnew .VECTOR2I (SCALE * V_SCORE_TEXT_SIZE , SCALE * V_SCORE_TEXT_SIZE )
820
839
)
821
- v_score_text .SetLayer (layertable [ V_SCORE_TEXT_LAYER ] )
840
+ v_score_text .SetLayer (vScoreTextLayerNumber )
822
841
v_score_text .SetTextAngle (pcbnew .EDA_ANGLE (900 , pcbnew .TENTHS_OF_A_DEGREE_T ))
823
842
board .Add (v_score_text )
824
843
@@ -856,7 +875,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
856
875
v_score_line = pcbnew .PCB_SHAPE (board )
857
876
v_score_line .SetStart (pcbnew .VECTOR2I (int (vscore_left ), int (y_loc )))
858
877
v_score_line .SetEnd (pcbnew .VECTOR2I (int (vscore_right ), int (y_loc )))
859
- v_score_line .SetLayer (layertable [ V_SCORE_LAYER ] )
878
+ v_score_line .SetLayer (vScoreLayerNumber )
860
879
v_score_line .SetWidth (int (V_SCORE_WIDTH * SCALE ))
861
880
board .Add (v_score_line )
862
881
v_score_text = pcbnew .PCB_TEXT (board )
@@ -868,7 +887,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
868
887
v_score_text .SetTextSize (
869
888
pcbnew .VECTOR2I (SCALE * V_SCORE_TEXT_SIZE , SCALE * V_SCORE_TEXT_SIZE )
870
889
)
871
- v_score_text .SetLayer (layertable [ V_SCORE_TEXT_LAYER ] )
890
+ v_score_text .SetLayer (vScoreTextLayerNumber )
872
891
v_score_text .SetTextAngle (pcbnew .EDA_ANGLE (0 , pcbnew .TENTHS_OF_A_DEGREE_T ))
873
892
board .Add (v_score_text )
874
893
@@ -919,7 +938,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
919
938
route_text = pcbnew .PCB_TEXT (board )
920
939
route_text .SetText ("ROUTE OUT" )
921
940
route_text .SetTextSize (pcbnew .VECTOR2I (SCALE * V_SCORE_TEXT_SIZE , SCALE * V_SCORE_TEXT_SIZE ))
922
- route_text .SetLayer (layertable [ V_SCORE_TEXT_LAYER ] )
941
+ route_text .SetLayer (vScoreLayerNumber )
923
942
route_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_CENTER )
924
943
route_text .SetPosition (pcbnew .VECTOR2I (pos [0 ], pos [1 ]))
925
944
route_text .SetTextAngle (pcbnew .EDA_ANGLE (pos [2 ], pcbnew .TENTHS_OF_A_DEGREE_T ))
@@ -930,7 +949,7 @@ def startPanelizer(self, args, board=None, ordering=None, logger=None):
930
949
route_text = pcbnew .PCB_TEXT (board )
931
950
route_text .SetText ("DO NOT REMOVE" )
932
951
route_text .SetTextSize (pcbnew .VECTOR2I (SCALE * V_SCORE_TEXT_SIZE , SCALE * V_SCORE_TEXT_SIZE ))
933
- route_text .SetLayer (layertable [ V_SCORE_TEXT_LAYER ] )
952
+ route_text .SetLayer (vScoreTextLayerNumber )
934
953
route_text .SetHorizJustify (pcbnew .GR_TEXT_H_ALIGN_CENTER )
935
954
route_text .SetPosition (pcbnew .VECTOR2I (arrayCenter .x , arrayCenter .y ))
936
955
board .Add (route_text )
0 commit comments