diff --git a/demos/python_scripts_examples/plot_board.py b/demos/python_scripts_examples/plot_board.py index 6fd55d00be..fa397e2e70 100644 --- a/demos/python_scripts_examples/plot_board.py +++ b/demos/python_scripts_examples/plot_board.py @@ -44,12 +44,14 @@ popt.SetScale(1) popt.SetUseAuxOrigin(True) # This by gerbers only (also the name is truly horrid!) -popt.SetSubtractMaskFromSilk(False) +popt.SetSubtractMaskFromSilk(False) #remove solder mask from silk to be sure there is no silk on pads +#Create a pdf file of the top silk layer pctl.SetLayer(F_SilkS) pctl.OpenPlotfile("Silk", PLOT_FORMAT_PDF, "Assembly guide") pctl.PlotLayer() + # Once the defaults are set it become pretty easy... # I have a Turing-complete programming language here: I'll use it... # param 0 is a string added to the file base name to identify the drawing @@ -70,15 +72,15 @@ plot_plan = [ for layer_info in plot_plan: pctl.SetLayer(layer_info[1]) pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2]) + print layer_info[0] pctl.PlotLayer() # Our fabricators want two additional gerbers: # An assembly with no silk trim and all and only the references # (you'll see that even holes have designators, obviously) -popt.SetSubtractMaskFromSilk(False) popt.SetPlotReference(True) popt.SetPlotValue(False) -popt.SetPlotInvisibleText(True) +popt.SetPlotInvisibleText(False) pctl.SetLayer(F_SilkS) pctl.OpenPlotfile("AssyTop", PLOT_FORMAT_PDF, "Assembly top") @@ -86,6 +88,7 @@ pctl.PlotLayer() # And a gerber with only the component outlines (really!) popt.SetPlotReference(False) +popt.SetPlotValue(False) popt.SetPlotInvisibleText(False) pctl.SetLayer(F_SilkS) pctl.OpenPlotfile("AssyOutlinesTop", PLOT_FORMAT_PDF, "Assembly outline top") @@ -94,118 +97,24 @@ pctl.PlotLayer() # The same could be done for the bottom side, if there were components popt.SetUseAuxOrigin(False) -## For documentation we also want a general layout PDF -## I usually use a shell script to merge the ps files and then distill the result -## Now I can do it with a control file. As a bonus I can have references in a -## different colour, too. +# For documentation we also want a general layout PDF +# I usually use a shell script to merge the ps files and then distill the result +# Now I can do it with a control file. As a bonus I can have references in a +# different colour, too. popt.SetPlotReference(True) popt.SetPlotValue(True) popt.SetPlotInvisibleText(False) -# Remember that the frame is always in color 0 (BLACK) and should be requested -# before opening the plot -popt.SetPlotFrameRef(False) -pctl.SetLayer(Dwgs_User) -pctl.OpenPlotfile("Layout", PLOT_FORMAT_PDF, "General layout") -pctl.PlotLayer() - -# Do the PCB edges in yellow -popt.SetColor(YELLOW) -pctl.SetLayer(Edge_Cuts) -pctl.PlotLayer() - -## Comments in, uhmm... green -popt.SetColor(GREEN) +# Comments in, uhmm... green +#Note: currently, color is overidden by plot functions, so SetColor is not useful. +popt.SetColor( COLOR4D( 1.0, 0, 0, 1.0 ) ) # color = RED, GREEN, BLUE, OPACITY ) pctl.SetLayer(Cmts_User) pctl.PlotLayer() -# Bottom mask as lines only, in red -#popt.SetMode(LINE) -popt.SetColor(RED) -pctl.SetLayer(B_Mask) -pctl.PlotLayer() - -# Top mask as lines only, in blue -popt.SetColor(BLUE) -pctl.SetLayer(F_Mask) -pctl.PlotLayer() - -# Top paste in light blue, filled -popt.SetColor(BLUE) -#popt.SetMode(FILLED) -pctl.SetLayer(F_Paste) -pctl.PlotLayer() - -# Top Silk in cyan, filled, references in dark cyan -popt.SetReferenceColor(DARKCYAN) -popt.SetColor(CYAN) -pctl.SetLayer(F_SilkS) -pctl.PlotLayer() - -popt.SetTextMode(PLOTTEXTMODE_STROKE) -pctl.SetLayer(F_Mask) -pctl.OpenPlotfile("Assembly", PLOT_FORMAT_SVG, "Master Assembly") -pctl.SetColorMode(True) - -# We want *everything* -popt.SetPlotReference(True) -popt.SetPlotValue(True) -popt.SetPlotInvisibleText(True) - -# Remember than the DXF driver assigns colours to layers. This means that -# we will be able to turn references on and off simply using their layers -# Also most of the layer are now plotted in 'line' mode, because DXF handles -# fill mode almost like sketch mode (this is to keep compatibility with -# most CAD programs; most of the advanced primitive attributes required are -# handled only by recent autocads...); also the entry level cads (qcad -# and derivatives) simply don't handle polyline widths... - -# Here I'm using numbers for colors and layers, I'm too lazy too look them up:P -popt.SetReferenceColor(19) -popt.SetValueColor(21) - -popt.SetColor(0) -#popt.SetMode(LINE) -pctl.SetLayer(B_SilkS) -pctl.PlotLayer() -popt.SetColor(14) -pctl.SetLayer(F_SilkS) -pctl.PlotLayer() -popt.SetColor(2) -pctl.SetLayer(B_Mask) -pctl.PlotLayer() -popt.SetColor(4) -pctl.SetLayer(F_Mask) -pctl.PlotLayer() -popt.SetColor(1) -pctl.SetLayer(B_Paste) -pctl.PlotLayer() -popt.SetColor(9) -pctl.SetLayer(F_Paste) -pctl.PlotLayer() -popt.SetColor(3) -pctl.SetLayer(Edge_Cuts) -pctl.PlotLayer() - -# Export the copper layers too... exporting one of them in filled mode with -# drill marks will put the marks in the WHITE later (since it tries to blank -# the pads...); these will be obviously great reference points for snap -# and stuff in the cad. A pctl function to only plot them would be -# better anyway... - -popt.SetColor(17) -#popt.SetMode(FILLED) -popt.SetDrillMarksType(PCB_PLOT_PARAMS.FULL_DRILL_SHAPE) -pctl.SetLayer(B_Cu) -pctl.PlotLayer() -popt.SetColor(20) -popt.SetDrillMarksType(PCB_PLOT_PARAMS.NO_DRILL_SHAPE) -pctl.SetLayer(F_Cu) -pctl.PlotLayer() # At the end you have to close the last plot, otherwise you don't know when # the object will be recycled! pctl.ClosePlot() -# We have just generated 21 plotfiles with a single script +# We have just generated your plotfiles with a single script