update a python demo that wws not working with current pcbnew version.

This commit is contained in:
jean-pierre charras 2017-09-19 18:46:50 +02:00
parent 76d1365360
commit e1fbe1cb3a
1 changed files with 14 additions and 105 deletions

View File

@ -44,12 +44,14 @@ popt.SetScale(1)
popt.SetUseAuxOrigin(True) popt.SetUseAuxOrigin(True)
# This by gerbers only (also the name is truly horrid!) # 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.SetLayer(F_SilkS)
pctl.OpenPlotfile("Silk", PLOT_FORMAT_PDF, "Assembly guide") pctl.OpenPlotfile("Silk", PLOT_FORMAT_PDF, "Assembly guide")
pctl.PlotLayer() pctl.PlotLayer()
# Once the defaults are set it become pretty easy... # Once the defaults are set it become pretty easy...
# I have a Turing-complete programming language here: I'll use it... # 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 # 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: for layer_info in plot_plan:
pctl.SetLayer(layer_info[1]) pctl.SetLayer(layer_info[1])
pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2]) pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2])
print layer_info[0]
pctl.PlotLayer() pctl.PlotLayer()
# Our fabricators want two additional gerbers: # Our fabricators want two additional gerbers:
# An assembly with no silk trim and all and only the references # An assembly with no silk trim and all and only the references
# (you'll see that even holes have designators, obviously) # (you'll see that even holes have designators, obviously)
popt.SetSubtractMaskFromSilk(False)
popt.SetPlotReference(True) popt.SetPlotReference(True)
popt.SetPlotValue(False) popt.SetPlotValue(False)
popt.SetPlotInvisibleText(True) popt.SetPlotInvisibleText(False)
pctl.SetLayer(F_SilkS) pctl.SetLayer(F_SilkS)
pctl.OpenPlotfile("AssyTop", PLOT_FORMAT_PDF, "Assembly top") pctl.OpenPlotfile("AssyTop", PLOT_FORMAT_PDF, "Assembly top")
@ -86,6 +88,7 @@ pctl.PlotLayer()
# And a gerber with only the component outlines (really!) # And a gerber with only the component outlines (really!)
popt.SetPlotReference(False) popt.SetPlotReference(False)
popt.SetPlotValue(False)
popt.SetPlotInvisibleText(False) popt.SetPlotInvisibleText(False)
pctl.SetLayer(F_SilkS) pctl.SetLayer(F_SilkS)
pctl.OpenPlotfile("AssyOutlinesTop", PLOT_FORMAT_PDF, "Assembly outline top") 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 # The same could be done for the bottom side, if there were components
popt.SetUseAuxOrigin(False) popt.SetUseAuxOrigin(False)
## For documentation we also want a general layout PDF # 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 # 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 # Now I can do it with a control file. As a bonus I can have references in a
## different colour, too. # different colour, too.
popt.SetPlotReference(True) popt.SetPlotReference(True)
popt.SetPlotValue(True) popt.SetPlotValue(True)
popt.SetPlotInvisibleText(False) 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") # Comments in, uhmm... green
pctl.PlotLayer() #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 )
# Do the PCB edges in yellow
popt.SetColor(YELLOW)
pctl.SetLayer(Edge_Cuts)
pctl.PlotLayer()
## Comments in, uhmm... green
popt.SetColor(GREEN)
pctl.SetLayer(Cmts_User) pctl.SetLayer(Cmts_User)
pctl.PlotLayer() 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 # At the end you have to close the last plot, otherwise you don't know when
# the object will be recycled! # the object will be recycled!
pctl.ClosePlot() pctl.ClosePlot()
# We have just generated 21 plotfiles with a single script # We have just generated your plotfiles with a single script