diff --git a/demos/CMakeLists.txt b/demos/CMakeLists.txt index 5e25018f91..c912d08682 100644 --- a/demos/CMakeLists.txt +++ b/demos/CMakeLists.txt @@ -1,7 +1,15 @@ -install( DIRECTORY complex_hierarchy - ecc83 electric flat_hierarchy - kit-dev-coldfire-xilinx_5213 interf_u microwave - pic_programmer pspice "sonde xilinx" test_xil_95108 video +install( DIRECTORY + complex_hierarchy + ecc83 electric + flat_hierarchy + interf_u + kit-dev-coldfire-xilinx_5213 + microwave + pic_programmer pspice + python_scripts_examples + "sonde xilinx" + test_pads_inside_pads + test_xil_95108 video DESTINATION ${KICAD_DEMOS} COMPONENT resources ) diff --git a/demos/python_scripts_examples/plot_board.py b/demos/python_scripts_examples/plot_board.py new file mode 100644 index 0000000000..6fd55d00be --- /dev/null +++ b/demos/python_scripts_examples/plot_board.py @@ -0,0 +1,211 @@ +''' + A python script example to create various plot files from a board: + Fab files + Doc files + Gerber files + + Important note: + this python script does not plot frame references. + the reason is it is not yet possible from a python script because plotting + plot frame references needs loading the corresponding page layout file + (.wks file) or the default template. + + This info (the page layout template) is not stored in the board, and therefore + not available. + + Do not try to change SetPlotFrameRef(False) to SetPlotFrameRef(true) + the result is the pcbnew lib will crash if you try to plot + the unknown frame references template. +''' + +import sys + +from pcbnew import * +filename=sys.argv[1] + +board = LoadBoard(filename) + +pctl = PLOT_CONTROLLER(board) + +popt = pctl.GetPlotOptions() + +popt.SetOutputDirectory("plot/") + +# Set some important plot options: +popt.SetPlotFrameRef(False) +popt.SetLineWidth(FromMM(0.35)) + +popt.SetAutoScale(False) +popt.SetScale(1) +popt.SetMirror(False) +popt.SetUseGerberAttributes(True) +popt.SetExcludeEdgeLayer(False); +popt.SetScale(1) +popt.SetUseAuxOrigin(True) + +# This by gerbers only (also the name is truly horrid!) +popt.SetSubtractMaskFromSilk(False) + +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 +# param 1 is the layer ID +plot_plan = [ + ( "CuTop", F_Cu, "Top layer" ), + ( "CuBottom", B_Cu, "Bottom layer" ), + ( "PasteBottom", B_Paste, "Paste Bottom" ), + ( "PasteTop", F_Paste, "Paste top" ), + ( "SilkTop", F_SilkS, "Silk top" ), + ( "SilkBottom", B_SilkS, "Silk top" ), + ( "MaskBottom", B_Mask, "Mask bottom" ), + ( "MaskTop", F_Mask, "Mask top" ), + ( "EdgeCuts", Edge_Cuts, "Edges" ), +] + + +for layer_info in plot_plan: + pctl.SetLayer(layer_info[1]) + pctl.OpenPlotfile(layer_info[0], PLOT_FORMAT_GERBER, layer_info[2]) + 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) + +pctl.SetLayer(F_SilkS) +pctl.OpenPlotfile("AssyTop", PLOT_FORMAT_PDF, "Assembly top") +pctl.PlotLayer() + +# And a gerber with only the component outlines (really!) +popt.SetPlotReference(False) +popt.SetPlotInvisibleText(False) +pctl.SetLayer(F_SilkS) +pctl.OpenPlotfile("AssyOutlinesTop", PLOT_FORMAT_PDF, "Assembly outline top") +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. + +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) +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 diff --git a/demos/test_pads_inside_pads/test_pads_inside_pads.kicad_pcb b/demos/test_pads_inside_pads/test_pads_inside_pads.kicad_pcb index d9aaffd3cd..e07d003216 100644 --- a/demos/test_pads_inside_pads/test_pads_inside_pads.kicad_pcb +++ b/demos/test_pads_inside_pads/test_pads_inside_pads.kicad_pcb @@ -1,9 +1,9 @@ -(kicad_pcb (version 3) (host pcbnew "(2013-01-12 BZR 3902)-testing") +(kicad_pcb (version 4) (host pcbnew "(2015-04-25 BZR 5623)-product") (general (links 12) (no_connects 0) - (area 74.91259 30.97059 111.463666 65.151) + (area 79.121 35.179 111.052429 65.3542) (thickness 1.6002) (drawings 0) (tracks 4) @@ -14,21 +14,21 @@ (page A4) (layers - (15 Dessus signal) - (0 Dessous signal) - (16 B.Adhes user) - (17 F.Adhes user) - (18 B.Paste user) - (19 F.Paste user) - (20 B.SilkS user) - (21 F.SilkS user) - (22 B.Mask user) - (23 F.Mask user) - (24 Dwgs.User user) - (25 Cmts.User user) - (26 Eco1.User user) - (27 Eco2.User user) - (28 Edge.Cuts user) + (0 Dessus signal) + (31 Dessous signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) ) (setup @@ -57,12 +57,12 @@ (pad_drill 0.8128) (pad_to_mask_clearance 0.254) (aux_axis_origin 0 0) - (visible_elements FFFFFFBF) + (visible_elements 7FFFFFFF) (pcbplotparams - (layerselection 3178497) + (layerselection 0x00030_80000001) (usegerberextensions true) (excludeedgelayer true) - (linewidth 60) + (linewidth 0.150000) (plotframeref false) (viasonmask false) (mode 1) @@ -75,7 +75,6 @@ (psa4output false) (plotreference true) (plotvalue true) - (plotothertext true) (plotinvisibletext false) (padsonsilk false) (subtractmaskfromsilk false) @@ -97,67 +96,47 @@ (via_drill 0.635) (uvia_dia 0.508) (uvia_drill 0.127) - (add_net "") (add_net /NET1) (add_net /NET2) ) - (module 1pin (layer Dessus) (tedit 4EE506A9) (tstamp 4EE505BA) + (module 1pin (layer Dessus) (tedit 553E7303) (tstamp 4EE505BA) (at 89.535 45.593) (descr "module 1 pin (ou trou mecanique de percage)") (tags DEV) (path /4EDF7CC5) - (fp_text reference P1 (at 0 -3.048) (layer F.SilkS) + (fp_text reference P1 (at 0 -12) (layer F.SilkS) (effects (font (size 1.016 1.016) (thickness 0.254))) ) - (fp_text value CONN_1 (at 0 2.794) (layer F.SilkS) hide + (fp_text value CONN_1 (at 0 12) (layer F.SilkS) hide (effects (font (size 1.016 1.016) (thickness 0.254))) ) - (fp_circle (center 0 0) (end 0 -2.286) (layer F.SilkS) (width 0.381)) - (pad 1 smd rect (at 0 0) (size 20.32 20.32) - (layers Dessus F.Paste F.Mask) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at -8.255 -7.62) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at -3.81 -7.62) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 0 -7.62) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 3.81 -7.62) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 8.255 -7.62) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 8.255 -4.445) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 3.81 -4.445) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at 0 -4.445) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at -3.81 -4.445) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) - (pad 1 thru_hole circle (at -8.255 -4.445) (size 1.524 1.524) (drill 0.762) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) + (fp_line (start -11 -11) (end 11 -11) (layer F.SilkS) (width 0.15)) + (fp_line (start 11 -11) (end 11 11) (layer F.SilkS) (width 0.15)) + (fp_line (start 11 11) (end -11 11) (layer F.SilkS) (width 0.15)) + (fp_line (start -11 11) (end -11 -11) (layer F.SilkS) (width 0.15)) + (pad 1 smd rect (at 0 0) (size 20.32 20.32) (layers Dessus F.Paste F.Mask) + (net 2 /NET2)) + (pad 1 thru_hole circle (at -8.255 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at -3.81 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 0 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 3.81 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 8.255 -7.62) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 8.255 -4.445) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 3.81 -4.445) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at 0 -4.445) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at -3.81 -4.445) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) + (pad 1 thru_hole circle (at -8.255 -4.445) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) ) (module 1pin (layer Dessus) (tedit 200000) (tstamp 4EE505BC) @@ -172,10 +151,8 @@ (effects (font (size 1.016 1.016) (thickness 0.254))) ) (fp_circle (center 0 0) (end 0 -2.286) (layer F.SilkS) (width 0.381)) - (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) - (layers *.Cu *.Mask F.SilkS) - (net 2 /NET2) - ) + (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) (layers *.Cu *.Mask F.SilkS) + (net 2 /NET2)) ) (module 1pin (layer Dessus) (tedit 200000) (tstamp 4EE505BE) @@ -190,10 +167,8 @@ (effects (font (size 1.016 1.016) (thickness 0.254))) ) (fp_circle (center 0 0) (end 0 -2.286) (layer F.SilkS) (width 0.381)) - (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) - (layers *.Cu *.Mask F.SilkS) - (net 1 /NET1) - ) + (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) (layers *.Cu *.Mask F.SilkS) + (net 1 /NET1)) ) (module 1pin (layer Dessus) (tedit 4EE8A1D1) (tstamp 4EE505C0) @@ -208,16 +183,13 @@ (effects (font (size 1.016 1.016) (thickness 0.254))) ) (fp_circle (center 0 0) (end 0 -2.286) (layer F.SilkS) (width 0.381)) - (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) - (layers *.Cu *.Mask F.SilkS) - (net 1 /NET1) - (die_length 7.62) - ) + (pad 1 thru_hole circle (at 0 0) (size 4.064 4.064) (drill 3.048) (layers *.Cu *.Mask F.SilkS) + (net 1 /NET1) (die_length 7.62)) ) (segment (start 107.061 61.468) (end 87.122 61.468) (width 0.2032) (layer Dessous) (net 1)) - (segment (start 97.79 41.148) (end 103.759 41.148) (width 0.2032) (layer Dessous) (net 2)) - (segment (start 107.696 45.085) (end 107.696 45.593) (width 0.2032) (layer Dessous) (net 2)) (segment (start 103.759 41.148) (end 107.696 45.085) (width 0.2032) (layer Dessous) (net 2)) + (segment (start 107.696 45.085) (end 107.696 45.593) (width 0.2032) (layer Dessous) (net 2)) + (segment (start 97.79 41.148) (end 103.759 41.148) (width 0.2032) (layer Dessous) (net 2)) ) diff --git a/helpers/tools_to_build_newstroke-font/font.brd b/helpers/tools_to_build_newstroke-font/font.brd deleted file mode 100644 index 44100d9ba8..0000000000 --- a/helpers/tools_to_build_newstroke-font/font.brd +++ /dev/null @@ -1,533 +0,0 @@ -PCBNEW-BOARD Version 1 date Птн 29 Янв 2010 18:29:57 - -# Created by Pcbnew(20091221 SVN-R2173) - -$GENERAL -LayerCount 2 -Ly 1FFF8001 -EnabledLayers 1FFF8001 -VisibleLayers 1FFF8001 -VisibleElements 00000FFF -Links 0 -NoConn 0 -Di 0 0 117000 82670 -Ndraw 89 -Ntrack 0 -Nzone 0 -LayerThickness 630 -Nmodule 0 -Nnets 1 -$EndGENERAL - -$SHEETDESCR -Sheet A4 11700 8267 -Title "" -Date "29 jan 2010" -Rev "" -Comp "" -Comment1 "" -Comment2 "" -Comment3 "" -Comment4 "" -$EndSHEETDESCR - -$SETUP -InternalUnit 0.000100 INCH -ZoneGridSize 250 -Layers 2 -Layer[0] Задний signal -Layer[15] Передний signal -TrackWidth 80 -TrackClearence 100 -ZoneClearence 200 -TrackMinWidth 80 -DrawSegmWidth 150 -EdgeSegmWidth 150 -ViaSize 350 -ViaDrill 250 -ViaMinSize 350 -ViaMinDrill 200 -MicroViaSize 200 -MicroViaDrill 50 -MicroViasAllowed 0 -MicroViaMinSize 200 -MicroViaMinDrill 50 -TextPcbWidth 120 -TextPcbSize 600 800 -EdgeModWidth 150 -TextModSize 600 600 -TextModWidth 120 -PadSize 600 600 -PadDrill 320 -Pad2MaskClearance 100 -AuxiliaryAxisOrg 0 0 -$EndSETUP - -$EQUIPOT -Na 0 "" -St ~ -$EndEQUIPOT -$NCLASS -Name "Default" -Desc "Класс цепей по умолчанию." -Clearance 100 -TrackWidth 80 -ViaDia 350 -ViaDrill 250 -uViaDia 200 -uViaDrill 50 -AddNet "" -$EndNCLASS -$TEXTPCB -Te "ᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿ" -Po 39370 22047 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚᶛᶜᶝᶞᶟ" -Po 39370 20472 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵸᵹᵺᵻᵼᵽᵾᵿ" -Po 39370 18898 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵎᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟ" -Po 39370 17323 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᴬᴭᴮᴯᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴻᴼᴽᴾᴿ" -Po 39370 15748 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟ" -Po 39370 14173 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣ" -Po 15748 62992 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ῠῡῢΰῤῥῦῧῨῩῪΎῬ῭΅`ῲῳῴῶῷῸΌῺΏῼ´῾" -Po 39370 48819 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "῀῁ῂῃῄῆῇῈΈῊΉῌ῍῎῏ῐῑῒΐῖῗῘῙῚΊ῝῞῟" -Po 39370 47244 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆᾼ᾽ι᾿" -Po 39370 45669 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟ" -Po 39370 44094 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ὠὡὢὣὤὥὦὧὨὩὪὫὬὭὮὯὰάὲέὴήὶίὸόὺύὼώ" -Po 39370 42520 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ὀὁὂὃὄὅὈὉὊὋὌὍὐὑὒὓὔὕὖὗὙὛὝὟ" -Po 39370 40945 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ἠἡἢἣἤἥἦἧἨἩἪἫἬἭἮἯἰἱἲἳἴἵἶἷἸἹἺἻἼἽἾἿ" -Po 39370 39370 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἐἑἒἓἔἕἘἙἚἛἜἝ" -Po 39370 37795 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ" -Po 39370 36220 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞở" -Po 39370 34646 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾế" -Po 39370 33071 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟ" -Po 39370 31496 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿ" -Po 39370 29921 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟ" -Po 39370 28346 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿ" -Po 39370 26772 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟ" -Po 39370 25197 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯ" -Po 15748 37796 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟ" -Po 15748 36221 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿ" -Po 15748 34646 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟ" -Po 15748 33072 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ" -Po 15748 31497 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟ" -Po 15748 29922 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ" -Po 15748 28347 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟ" -Po 15748 26772 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ" -Po 15748 25198 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟ" -Po 15748 23623 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿" -Po 62992 51968 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "◀◁◂◃◄◅◆◇◈◉◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟" -Po 62992 50393 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿" -Po 62992 48819 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "∛~27~=3" -Po 40551 74803 1575 2067 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⏠⏡⏢⏣⏤⏥⏦⏧" -Po 62992 47244 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌⏍⏎⏏⏐⏑⏒⏓⏔⏕⏖⏗⏘⏙⏚⏛⏜⏝⏞⏟" -Po 62992 45669 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⎠⎡⎢⎣⎤⎥⎦⎧⎨⎩⎪⎫⎬⎭⎮⎯⎰⎱⎲⎳⎴⎵⎶⎷⎸⎹⎺⎻⎼⎽⎾⎿" -Po 62992 44094 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⎀⎁⎂⎃⎄⎅⎆⎇⎈⎉⎊⎋⎌⎍⎎⎏⎐⎑⎒⎓⎔⎕⎖⎗⎘⎙⎚⎛⎜⎝⎞⎟" -Po 62992 42519 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⍠⍡⍢⍣⍤⍥⍦⍧⍨⍩⍪⍫⍬⍭⍮⍯⍰⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⍻⍼⍽⍾⍿" -Po 62992 40945 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⍀⍁⍂⍃⍄⍅⍆⍇⍈⍉⍊⍋⍌⍍⍎⍏⍐⍑⍒⍓⍔⍕⍖⍗⍘⍙⍚⍛⍜⍝⍞⍟" -Po 62992 39370 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⌠⌡⌢⌣⌤⌥⌦⌧⌨〈〉⌫⌬⌭⌮⌯⌰⌱⌲⌳⌴⌵⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿" -Po 62992 37795 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⌀⌁⌂⌃⌄⌅⌆⌇⌈⌉⌊⌋⌌⌍⌎⌏⌐⌑⌒⌓⌔⌕⌖⌗⌘⌙⌚⌛⌜⌝⌞⌟" -Po 62992 36220 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿" -Po 62992 34645 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟" -Po 62992 33071 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿" -Po 62992 31496 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟" -Po 62992 29921 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿" -Po 62992 28346 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟" -Po 62992 26771 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "∠∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿" -Po 62992 25197 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟" -Po 62992 23622 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯⇰⇱⇲⇳⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿" -Po 62992 22047 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟" -Po 62992 20472 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "↠↡↢↣↤↥↦↧↨↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿" -Po 62992 18897 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟" -Po 62992 17323 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵" -Po 62992 14173 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₔ" -Po 62992 12598 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "‰‱′″‴‵‶‷‸‹›※‼‽‾‿⁀⁁⁂⁃⁄⁅⁆⁇⁈⁉⁊⁋⁌⁍⁎⁏⁐⁑⁒⁓⁔⁕⁖⁗⁘⁙⁚⁛⁜⁝⁞" -Po 62992 11023 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "‐‑‒–—―‖‗‘’‚‛“”„‟†‡•‣․‥…‧" -Po 62992 9449 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿ" -Po 15748 61418 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ӀӁӂӃӄӅӆӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟ" -Po 15748 59843 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿ" -Po 15748 58268 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "Ҁҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟ" -Po 15748 56694 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ" -Po 15748 55119 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "абвгдежзийклмнопрстуфхцчшщъыьэюя" -Po 15748 53544 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ" -Po 15748 51969 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏѐёђѓєѕіїјљњћќѝўџ" -Po 15748 50394 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿ" -Po 15748 48820 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟ" -Po 15748 47245 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏ" -Po 15748 45669 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήί" -Po 15748 44095 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;΄΅Ά·ΈΉΊΌΎΏ" -Po 15748 42520 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "Сколько 2+2" -Po 18898 72835 600 800 120 0 -De 0 0 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ" -Po 15748 22048 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş" -Po 15748 20473 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ" -Po 15748 18898 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ" -Po 15748 17323 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" -Po 16142 15748 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß" -Po 15748 14174 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te " ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿" -Po 15748 12599 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "`abcdefghijklmnopqrstuvwxyz{|}" -Po 15748 11025 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_" -Po 15748 9450 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te " !@#$%'()*+,-./0123456789:;<=>?" -Po 15748 7875 600 800 120 0 -De 21 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "LPC2144" -nl "2+2=x" -Po 28346 72441 600 800 120 0 -De 15 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "R18" -Po 24016 74803 600 800 120 0 -De 15 1 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "R18" -Po 24016 73228 600 800 120 0 -De 0 0 0 Normal -$EndTEXTPCB -$TEXTPCB -Te "TEXT EXAMPLE" -nl "Qu? 2+2=4" -nl "àáâãäåæ" -Po 10630 72835 787 591 79 0 -De 21 1 0 Normal -$EndTEXTPCB -$TRACK -$EndTRACK -$ZONE -$EndZONE -$EndBOARD diff --git a/helpers/tools_to_build_newstroke-font/font.kicad_pcb b/helpers/tools_to_build_newstroke-font/font.kicad_pcb new file mode 100644 index 0000000000..c5dcf2ad5e --- /dev/null +++ b/helpers/tools_to_build_newstroke-font/font.kicad_pcb @@ -0,0 +1,376 @@ +(kicad_pcb (version 4) (host pcbnew "(2015-04-03 BZR 5570)-product") + + (general + (links 0) + (no_connects 0) + (area 9.113522 18.1229 196.183794 193.827146) + (thickness 1.6) + (drawings 89) + (tracks 0) + (zones 0) + (modules 0) + (nets 1) + ) + + (page A4) + (title_block + (date "29 jan 2010") + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + (45 Margin user) + (46 B.CrtYd user) + (47 F.CrtYd user) + (48 B.Fab user) + (49 F.Fab user) + ) + + (setup + (last_trace_width 0.2032) + (trace_clearance 0.254) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.2032) + (segment_width 0.381) + (edge_width 0.381) + (via_size 0.889) + (via_drill 0.635) + (via_min_size 0.889) + (via_min_drill 0.508) + (uvia_size 0.508) + (uvia_drill 0.127) + (uvias_allowed no) + (uvia_min_size 0.508) + (uvia_min_drill 0.127) + (pcb_text_width 0.3048) + (pcb_text_size 1.524 2.032) + (mod_edge_width 0.381) + (mod_text_size 1.524 1.524) + (mod_text_width 0.3048) + (pad_size 1.524 1.524) + (pad_drill 0.8128) + (pad_to_mask_clearance 0.254) + (aux_axis_origin 0 0) + (visible_elements FFFFFF7F) + (pcbplotparams + (layerselection 0x00030_80000001) + (usegerberextensions false) + (excludeedgelayer true) + (linewidth 0.100000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15) + (hpglpenoverlay 2) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + + (net_class Default "Класс цепей по умолчанию." + (clearance 0.254) + (trace_width 0.2032) + (via_dia 0.889) + (via_drill 0.635) + (uvia_dia 0.508) + (uvia_drill 0.127) + ) + + (gr_text ᶠᶡᶢᶣᶤᶥᶦᶧᶨᶩᶪᶫᶬᶭᶮᶯᶰᶱᶲᶳᶴᶵᶶᶷᶸᶹᶺᶻᶼᶽᶾᶿ (at 99.9998 55.99938) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᶀᶁᶂᶃᶄᶅᶆᶇᶈᶉᶊᶋᶌᶍᶎᶏᶐᶑᶒᶓᶔᶕᶖᶗᶘᶙᶚᶛᶜᶝᶞᶟ (at 99.9998 51.99888) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᵠᵡᵢᵣᵤᵥᵦᵧᵨᵩᵪᵫᵬᵭᵮᵯᵰᵱᵲᵳᵴᵵᵶᵷᵸᵹᵺᵻᵼᵽᵾᵿ (at 99.9998 48.00092) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᵀᵁᵂᵃᵄᵅᵆᵇᵈᵉᵊᵋᵌᵍᵎᵏᵐᵑᵒᵓᵔᵕᵖᵗᵘᵙᵚᵛᵜᵝᵞᵟ (at 99.9998 44.00042) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᴠᴡᴢᴣᴤᴥᴦᴧᴨᴩᴪᴫᴬᴭᴮᴯᴰᴱᴲᴳᴴᴵᴶᴷᴸᴹᴺᴻᴼᴽᴾᴿ (at 99.9998 39.99992) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᴀᴁᴂᴃᴄᴅᴆᴇᴈᴉᴊᴋᴌᴍᴎᴏᴐᴑᴒᴓᴔᴕᴖᴗᴘᴙᴚᴛᴜᴝᴞᴟ (at 99.9998 35.99942) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣ (at 39.99992 159.99968) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ῠῡῢΰῤῥῦῧῨῩῪΎῬ῭΅`ῲῳῴῶῷῸΌῺΏῼ´῾ (at 99.9998 124.00026) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ῀῁ῂῃῄῆῇῈΈῊΉῌ῍῎῏ῐῑῒΐῖῗῘῙῚΊ῝῞῟ (at 99.9998 119.99976) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆᾼ᾽ι᾿ (at 99.9998 115.99926) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ᾀᾁᾂᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌᾍᾎᾏᾐᾑᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜᾝᾞᾟ (at 99.9998 111.99876) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ὠὡὢὣὤὥὦὧὨὩὪὫὬὭὮὯὰάὲέὴήὶίὸόὺύὼώ (at 99.9998 108.0008) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ὀὁὂὃὄὅὈὉὊὋὌὍὐὑὒὓὔὕὖὗὙὛὝὟ (at 99.9998 104.0003) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ἠἡἢἣἤἥἦἧἨἩἪἫἬἭἮἯἰἱἲἳἴἵἶἷἸἹἺἻἼἽἾἿ (at 99.9998 99.9998) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ἀἁἂἃἄἅἆἇἈἉἊἋἌἍἎἏἐἑἒἓἔἕἘἙἚἛἜἝ (at 99.9998 95.9993) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ỠỡỢợỤụỦủỨứỪừỬửỮữỰựỲỳỴỵỶỷỸỹỺỻỼỽỾỿ (at 99.9998 91.9988) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ỀềỂểỄễỆệỈỉỊịỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞở (at 99.9998 88.00084) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾế (at 99.9998 84.00034) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ẀẁẂẃẄẅẆẇẈẉẊẋẌẍẎẏẐẑẒẓẔẕẖẗẘẙẚẛẜẝẞẟ (at 99.9998 79.99984) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ṠṡṢṣṤṥṦṧṨṩṪṫṬṭṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿ (at 99.9998 75.99934) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ṀṁṂṃṄṅṆṇṈṉṊṋṌṍṎṏṐṑṒṓṔṕṖṗṘṙṚṛṜṝṞṟ (at 99.9998 71.99884) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿ (at 99.9998 68.00088) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ḀḁḂḃḄḅḆḇḈḉḊḋḌḍḎḏḐḑḒḓḔḕḖḗḘḙḚḛḜḝḞḟ (at 99.9998 64.00038) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯ (at 39.99992 96.00184) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟ (at 39.99992 92.00134) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿ (at 39.99992 88.00084) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟ (at 39.99992 84.00288) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ȠȡȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳȴȵȶȷȸȹȺȻȼȽȾȿ (at 39.99992 80.00238) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ȀȁȂȃȄȅȆȇȈȉȊȋȌȍȎȏȐȑȒȓȔȕȖȗȘșȚțȜȝȞȟ (at 39.99992 76.00188) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDzdzǴǵǶǷǸǹǺǻǼǽǾǿ (at 39.99992 72.00138) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ǀǁǂǃDŽDždžLJLjljNJNjnjǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǝǞǟ (at 39.99992 68.00088) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ƠơƢƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿ (at 39.99992 64.00292) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟ (at 39.99992 60.00242) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ◠◡◢◣◤◥◦◧◨◩◪◫◬◭◮◯◰◱◲◳◴◵◶◷◸◹◺◻◼◽◾◿ (at 159.99968 131.99872) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ◀◁◂◃◄◅◆◇◈◉◊○◌◍◎●◐◑◒◓◔◕◖◗◘◙◚◛◜◝◞◟ (at 159.99968 127.99822) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ■□▢▣▤▥▦▧▨▩▪▫▬▭▮▯▰▱▲△▴▵▶▷▸▹►▻▼▽▾▿ (at 159.99968 124.00026) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ∛~27~=3 (at 102.99954 189.99962) (layer F.SilkS) + (effects (font (size 5.25018 4.0005) (thickness 0.3048))) + ) + (gr_text ⏠⏡⏢⏣⏤⏥⏦⏧ (at 159.99968 119.99976) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⏀⏁⏂⏃⏄⏅⏆⏇⏈⏉⏊⏋⏌⏍⏎⏏⏐⏑⏒⏓⏔⏕⏖⏗⏘⏙⏚⏛⏜⏝⏞⏟ (at 159.99968 115.99926) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⎠⎡⎢⎣⎤⎥⎦⎧⎨⎩⎪⎫⎬⎭⎮⎯⎰⎱⎲⎳⎴⎵⎶⎷⎸⎹⎺⎻⎼⎽⎾⎿ (at 159.99968 111.99876) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⎀⎁⎂⎃⎄⎅⎆⎇⎈⎉⎊⎋⎌⎍⎎⎏⎐⎑⎒⎓⎔⎕⎖⎗⎘⎙⎚⎛⎜⎝⎞⎟ (at 159.99968 107.99826) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⍠⍡⍢⍣⍤⍥⍦⍧⍨⍩⍪⍫⍬⍭⍮⍯⍰⍱⍲⍳⍴⍵⍶⍷⍸⍹⍺⍻⍼⍽⍾⍿ (at 159.99968 104.0003) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⍀⍁⍂⍃⍄⍅⍆⍇⍈⍉⍊⍋⍌⍍⍎⍏⍐⍑⍒⍓⍔⍕⍖⍗⍘⍙⍚⍛⍜⍝⍞⍟ (at 159.99968 99.9998) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⌠⌡⌢⌣⌤⌥⌦⌧⌨〈〉⌫⌬⌭⌮⌯⌰⌱⌲⌳⌴⌵⌶⌷⌸⌹⌺⌻⌼⌽⌾⌿ (at 159.99968 95.9993) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⌀⌁⌂⌃⌄⌅⌆⌇⌈⌉⌊⌋⌌⌍⌎⌏⌐⌑⌒⌓⌔⌕⌖⌗⌘⌙⌚⌛⌜⌝⌞⌟ (at 159.99968 91.9988) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋮⋯⋰⋱⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿ (at 159.99968 87.9983) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⋀⋁⋂⋃⋄⋅⋆⋇⋈⋉⋊⋋⋌⋍⋎⋏⋐⋑⋒⋓⋔⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟ (at 159.99968 84.00034) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⊠⊡⊢⊣⊤⊥⊦⊧⊨⊩⊪⊫⊬⊭⊮⊯⊰⊱⊲⊳⊴⊵⊶⊷⊸⊹⊺⊻⊼⊽⊾⊿ (at 159.99968 79.99984) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⊀⊁⊂⊃⊄⊅⊆⊇⊈⊉⊊⊋⊌⊍⊎⊏⊐⊑⊒⊓⊔⊕⊖⊗⊘⊙⊚⊛⊜⊝⊞⊟ (at 159.99968 75.99934) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ≠≡≢≣≤≥≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿ (at 159.99968 71.99884) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ≀≁≂≃≄≅≆≇≈≉≊≋≌≍≎≏≐≑≒≓≔≕≖≗≘≙≚≛≜≝≞≟ (at 159.99968 67.99834) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ∠∡∢∣∤∥∦∧∨∩∪∫∬∭∮∯∰∱∲∳∴∵∶∷∸∹∺∻∼∽∾∿ (at 159.99968 64.00038) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ∀∁∂∃∄∅∆∇∈∉∊∋∌∍∎∏∐∑−∓∔∕∖∗∘∙√∛∜∝∞∟ (at 159.99968 59.99988) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⇠⇡⇢⇣⇤⇥⇦⇧⇨⇩⇪⇫⇬⇭⇮⇯⇰⇱⇲⇳⇴⇵⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿ (at 159.99968 55.99938) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⇀⇁⇂⇃⇄⇅⇆⇇⇈⇉⇊⇋⇌⇍⇎⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟ (at 159.99968 51.99888) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ↠↡↢↣↤↥↦↧↨↩↪↫↬↭↮↯↰↱↲↳↴↵↶↷↸↹↺↻↼↽↾↿ (at 159.99968 47.99838) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ←↑→↓↔↕↖↗↘↙↚↛↜↝↞↟ (at 159.99968 44.00042) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲₳₴₵ (at 159.99968 35.99942) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ⁰ⁱ⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₔ (at 159.99968 31.99892) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ‰‱′″‴‵‶‷‸‹›※‼‽‾‿⁀⁁⁂⁃⁄⁅⁆⁇⁈⁉⁊⁋⁌⁍⁎⁏⁐⁑⁒⁓⁔⁕⁖⁗⁘⁙⁚⁛⁜⁝⁞ (at 159.99968 27.99842) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ‐‑‒–—―‖‗‘’‚‛“”„‟†‡•‣․‥…‧ (at 159.99968 24.00046) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ӠӡӢӣӤӥӦӧӨөӪӫӬӭӮӯӰӱӲӳӴӵӶӷӸӹӺӻӼӽӾӿ (at 39.99992 156.00172) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ӀӁӂӃӄӅӆӇӈӉӊӋӌӍӎӏӐӑӒӓӔӕӖӗӘәӚӛӜӝӞӟ (at 39.99992 152.00122) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿ (at 39.99992 148.00072) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text Ҁҁ҂҃҄҅҆҇҈҉ҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟ (at 39.99992 144.00276) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ (at 39.99992 140.00226) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text абвгдежзийклмнопрстуфхцчшщъыьэюя (at 39.99992 136.00176) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ (at 39.99992 132.00126) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏѐёђѓєѕіїјљњћќѝўџ (at 39.99992 128.00076) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿ (at 39.99992 124.0028) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟ (at 39.99992 120.0023) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώϏ (at 39.99992 115.99926) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΪΫάέήί (at 39.99992 112.0013) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ͰͱͲͳʹ͵Ͷͷͺͻͼͽ;΄΅Ά·ΈΉΊΌΎΏ (at 39.99992 108.0008) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text "Сколько 2+2" (at 48.00092 185.0009) (layer B.Cu) + (effects (font (size 2.032 1.524) (thickness 0.3048)) (justify mirror)) + ) + (gr_text ŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ (at 39.99992 56.00192) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞş (at 39.99992 52.00142) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿ (at 39.99992 48.00092) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğ (at 39.99992 44.00042) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ (at 41.00068 39.99992) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß (at 39.99992 36.00196) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ (at 39.99992 32.00146) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text `abcdefghijklmnopqrstuvwxyz{|} (at 39.99992 28.0035) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ (at 39.99992 24.003) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text " !@#$%'()*+,-./0123456789:;<=>?" (at 39.99992 20.0025) (layer F.SilkS) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text "LPC2144\n2+2=x" (at 71.99884 184.00014) (layer F.Cu) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text R18 (at 61.00064 189.99962) (layer F.Cu) + (effects (font (size 2.032 1.524) (thickness 0.3048))) + ) + (gr_text R18 (at 61.00064 185.99912) (layer B.Cu) + (effects (font (size 2.032 1.524) (thickness 0.3048)) (justify mirror)) + ) + (gr_text "TEXT EXAMPLE\nQu? 2+2=4\nàáâãäåæ" (at 27.0002 185.0009) (layer F.SilkS) + (effects (font (size 1.50114 1.99898) (thickness 0.20066))) + ) + +) diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp index 0f4874083d..7d5527e88f 100644 --- a/pcbnew/pcbplot.cpp +++ b/pcbnew/pcbplot.cpp @@ -314,8 +314,10 @@ void BuildPlotFileName( wxFileName* aFilename, PLOT_CONTROLLER::PLOT_CONTROLLER( BOARD *aBoard ) - : m_plotter( NULL ), m_board( aBoard ) { + m_plotter = NULL; + m_board = aBoard; + m_plotLayer = UNDEFINED_LAYER; } @@ -351,14 +353,14 @@ bool PLOT_CONTROLLER::OpenPlotfile( const wxString &aSuffix, /* Save the current format: sadly some plot routines depends on this but the main reason is that the StartPlot method uses it to dispatch the plotter creation */ - m_plotOpts.SetFormat( aFormat ); + GetPlotOptions().SetFormat( aFormat ); // Ensure that the previous plot is closed ClosePlot(); // Now compute the full filename for the output and start the plot // (after ensuring the output directory is OK) - wxString outputDirName = m_plotOpts.GetOutputDirectory() ; + wxString outputDirName = GetPlotOptions().GetOutputDirectory() ; wxFileName outputDir = wxFileName::DirName( outputDirName ); wxString boardFilename = m_board->GetFileName(); @@ -367,14 +369,14 @@ bool PLOT_CONTROLLER::OpenPlotfile( const wxString &aSuffix, wxFileName fn( boardFilename ); BuildPlotFileName( &fn, outputDirName, aSuffix, GetDefaultPlotExtension( aFormat ) ); - m_plotter = StartPlotBoard( m_board, &m_plotOpts, UNDEFINED_LAYER, fn.GetFullPath(), aSheetDesc ); + m_plotter = StartPlotBoard( m_board, &GetPlotOptions(), ToLAYER_ID( GetLayer() ), fn.GetFullPath(), aSheetDesc ); } return( m_plotter != NULL ); } -bool PLOT_CONTROLLER::PlotLayer( LAYER_NUM aLayer ) +bool PLOT_CONTROLLER::PlotLayer() { LOCALE_IO toggle; @@ -383,7 +385,7 @@ bool PLOT_CONTROLLER::PlotLayer( LAYER_NUM aLayer ) return false; // Fully delegated to the parent - PlotOneBoardLayer( m_board, m_plotter, ToLAYER_ID( aLayer ), m_plotOpts ); + PlotOneBoardLayer( m_board, m_plotter, ToLAYER_ID( GetLayer() ), GetPlotOptions() ); return true; } diff --git a/pcbnew/plotcontroller.h b/pcbnew/plotcontroller.h index 9094188176..9271943ec2 100644 --- a/pcbnew/plotcontroller.h +++ b/pcbnew/plotcontroller.h @@ -34,7 +34,6 @@ class PLOTTER; class BOARD; -class REPORTER; /** @@ -47,29 +46,51 @@ public: /** Batch plotter constructor, nothing interesting here */ PLOT_CONTROLLER( BOARD *aBoard ); - /** Batch plotter destructor, ensures that the last plot is closed */ + /** Batch plotter destructor, ensures that the last plot is closed + */ ~PLOT_CONTROLLER(); - PCB_PLOT_PARAMS *AccessPlotOpts() { return &m_plotOpts; } + /** + * Accessor to the plot parameters and options + */ + PCB_PLOT_PARAMS& GetPlotOptions() { return m_plotOptions; } + + void SetLayer( LAYER_NUM aLayer ) { m_plotLayer = aLayer; } + LAYER_NUM GetLayer() { return m_plotLayer; } + + + /** + * @return true if a plotter is initialized and can be used + */ bool IsPlotOpen() const { return m_plotter != NULL; } - /** Close the current plot, nothing happens if it isn't open */ + /** Close the current plot, nothing happens if it isn't open + */ void ClosePlot(); /** Open a new plotfile; works as a factory for plotter objects + * @param aSuffix is a string added to the base filename (derived from + * the board filename) to identify the plot file + * @param aFormat is the plot file format identifier + * @param aSheetDesc */ bool OpenPlotfile( const wxString &aSuffix, PlotFormat aFormat, const wxString &aSheetDesc ); - /** Plot a single layer on the current plotfile */ - bool PlotLayer( LAYER_NUM layer ); + /** Plot a single layer on the current plotfile + * m_plotLayer is the layer to plot + */ + bool PlotLayer(); void SetColorMode( bool aColorMode ); bool GetColorMode(); private: + /// the layer to plot + LAYER_NUM m_plotLayer; + /// Option bank - PCB_PLOT_PARAMS m_plotOpts; + PCB_PLOT_PARAMS m_plotOptions; /// This is the plotter object; it starts NULL and become instantiated /// when a plotfile is requested