; Device definitions for EAGLE version 4.08r2: ; ; [NAME] device name (as in command line option "-d" or menu) ; @NAME inherits data from [NAME] (max. nesting level is 10!) ; Type basic device type (must immediately follow [NAME]): ; ; PenPlotter pen plotter ; PhotoPlotter photoplotter ; DrillStation drill station ; Generic generic device (used for e.g. PostScript) ; Calcomp Calcomp pen plotter ; CalcompE CalComp electrostatic plotter ; ; Common parameters for all types of devices: ; ; Long long name (description) of device ; Init string to initialize device before printing ; Reset string to reset device after printing ; ResX/Y resolution in X/Y direction (dots or steps per inch, default = 1000) ; CorrectX/Y used to correct hardware tolerances (default = 1.0) ; OffsetX/Y defines an offset from the machine's origin (default = 0.0) ; Width page width (inch) (default = 8.0) ; Height page height (inch) (default = 12.0) ; Output name of the output file or port ; Color.NN color number to use for layer NN, e.g. ; Color.120 = 3 ; will use color '3' for layer '120' ; ; Parameters for drawing devices (PenPlotter, PhotoPlotter): ; ; Draw draw a line to (x, y) ; Move move the pen to (x, y) ; PenDown lower the pen ; PenUp lift the pen ; ; Parameters for pen plotters (PenPlotter): ; ; PenArcCxCyAd draw an arc from CP with center (Cx, Cy) and angle Ad ; PenCircleCxCyRxCxCyRx draw a circle at (Cx, Cy) with radius Rx ; PenCircleCxCyRxRy draw a circle at (Cx, Cy) with radius Rx and Ry ; PenCircleRxCxCy draw a circle at (Cx, Cy) with radius Rx ; PenCircleRxn draw a circle at CP with radius Rx (negtive!) ; PenCircleRxRx draw a circle ar CP with radius Rx ; PenSelect select pen ; PenSpeed string to set pen speed ; PenDiameter pen diameter (mm) ; PenVelocity pen velocity (device dependent value) ; ; Parameters for drill stations (DrillStation): ; ; Select string to select a tool ; Divide divides coordinates (default = 1.0) ; Drill string to drill a hole at (x, y) [with tool] ; Info string that is copied into the drill info file ; Rack name of the drill rack file ; ; Parameters for photo plotters (PhotoPlotter): ; ; AutoAperture string for automatic aperture generation ; Aperture string to select an aperture ; Flash string to flash an aperture ; Info string that is copied into the photo plotter info file ; Wheel name of the aperture wheel file name ; FirstAperture number of the first aperture to use with AutoAperture ; ToleranceDrawM negative draw tolerance ; ToleranceDrawP positive draw tolerance ; ToleranceFlashM negative flash tolerance ; ToleranceFlashP positive flash tolerance ; EmulateApertures turns aperture emulation on (YES) or off (NO) ; EmulateAnnulus turns annulus emulation on (YES) or off (NO) ; EmulateThermal turns thermal emulation on (YES) or off (NO) ; Circle defines embedded circle aperture ; Rectangle defines embedded rectangle aperture ; Octagon defines embedded octagon aperture ; Oval defines embedded oval aperture ; Annulus defines embedded annulus aperture ; Thermal defines embedded thermal aperture ; ; Parameters for DrillStation and PhotoPlotter; ; ; Units the units used in *.GPI and *.DRI files ; valid units are Inch, MM and Auto[default] (automatically ; chooses the unit with the least decimal digits) ; Decimals the number of decimals to use when Units is set to Inch ; or MM (default = 4). Values are rounded to this number of ; decimals. ; ; Parameters for generic devices: ; ; Header1 header string used for PostScript ; Header2 header string used for PostScript ; Header3 header string used for PostScript ; StartPage string that starts a new page ; EndPage string that ends a page ; ArcCxCyRWSaEaC string that draws an arc at (Cx, Cy) with Radius, Width, Start angle, End angle and line Cap ; Bar string that draws a bar ; Circle string that draws a circle ; Line string that draws a line ; Octagon string that draws an octagon ; Pie string that draws a pie ; Square string that draws a square ; Hole string that draws a hole ; HwArcX1Y1CxCyA string that draws an arc with hardware coordinates ; HwArc string that draws an arc with hardware coordinates ; HwBar string that draws a bar with hardware coordinates ; HwCircle string that draws a circle with hardware coordinates ; HwColor string that sets the color ; HwLine string that draws a line with hardware coordinates ; HwOctagon string that draws an octagon with hardware coordinates ; HwPie string that draws a pie with hardware coordinates ; HwPoly1 string that start a polygon with hardware coordinates ; HwPoly2 string that draws a polygon edge with hardware coordinates ; HwPoly3 string that ends a polygon with hardware coordinates ; HwSquare string that draws a square with hardware coordinates ; HwStartPage string that starts a page ; HwWidth string that sets line width with hardware units ; MaxHwWidth maximum hardware line width ; ; Strings have to be enclosed in double quotes ("..."). ; If a double quote has to be part of the string, it must be escaped with ; a backslash, e.g. "abc\"def". ; If a backslash has to appear in the string, it has to be doubled, ; e.g. "abc\\def" would result in abc\def. ; Non-printable characters inside strings are written as "\xhh" with 2 ; hex digits, e.g. "\x1B" would mean ESCape; the digits may be upper- or ; lowercase, but it has to be exactly two of them! ; The following characters have special meanings when escaped with ; a backslash: ; ; \0 NUL integer 0 \x00 ; \a BEL alert \x07 ; \b BS backspace \x08 ; \f FF form feed \x0C ; \n NL (LF) newline \x0D\x0A ; \r CR carriage return \x0D ; \t HT horizontal tab \x09 ; \v VT vertical tab \x0B ; \xhh hh hex number \xhh ; ; If a string parameter is too long to fit into one line it can be continued ; on the next line by escaping the end of line with a backslash, e.g. ; Parameter = "A very long string " \ ; "which takes several " \ some comment ; "lines.\n" ; Note that the backslash terminates the line, so everything after the '\' ; character is discarded (this may be used for additional comments). [HPPJETXL300C] @HPGL2 Long = "HP PaintJet XL300 (150 dpi, 16.8M colors)" ; The HP PaintJet XL300 can print up to 16.8M colors. However, these are ; always created by mixing the basic colors cyan, magenta, and yellow. ; Thus non-basic colors (especially light tones) will appear rastered when ; closely viewed. ; ; The default INIT string of the HPGL2 driver sets the printer up for ; ; 'NP14' 14 pens ; 'CR0,15,0,15,0,15' a color range from 0 to 15 for each bacic color, ; which results in a maximum of 4096 different colors ; 'MC1' transparent printing (overlapping colors mix!) ; 'PC 1,15, 0,15' pen 1: magenta ; 'PC 2, 0,15,15' pen 2: cyan ; 'PC 3, 0, 0,15' pen 3: blue ; 'PC 4,15,15, 0' pen 4: yellow ; 'PC 5,15, 0, 0' pen 5: red ; 'PC 6, 0,15, 0' pen 6: green ; 'PC 7, 0, 0, 0' pen 7: black ; 'PC 8,15,12,15' pen 8: light magenta ; 'PC 9,12,15,15' pen 9: light cyan ; 'PC10,12,12,15' pen 10: light blue ; 'PC11,15,15,12' pen 11: light yellow ; 'PC12,15,12, 0' pen 12: light red ; 'PC13,12,15, 0' pen 13: light green ; 'PC14,11,11,11' pen 14: grey ; ; You can modify the colors by changing the 'PCn,r,g,b' commands, where ; ; n = pen number ; r = red component ; g = green component ; b = blue component ; ; Note that although the printer has cyan, magenta and yellow as basic ; colors, the 'PC' commands use RGB (red-green-blue) values, according to ; the NTSC specification! [DESIGNJET220] @HPGL2 Long = "HP DesignJet 220, HPGL2-Mode" Init = "\x1B%%1BIN;IP0,0,100,100SC0,100,0,100"\ "WU1MC1NP14CR0,15,0,15,0,15"\ "PC1,15,0,15PC2,0,15,15PC3,0,0,15PC4,15,15,0"\ "PC5,15,0,0PC6,0,15,0PC7,0,0,0PC8,15,12,15"\ "PC9,12,15,15PC10,12,12,15PC11,15,15,12PC12,15,12,0"\ "PC13,12,15,0PC14,11,11,11"\ "PA;\n" Reset = "PG;\x1B%%0A\f" HwColor = "SP%u" ; (Pen-Number) precede this line with ';' for b/w ;Use the following as first line of the Init string for A3 sized paper: ;Init = "\x1B&l27A\x1B%%-1BIN;IP0,0,100,100SC0,100,0,100"\ [DESIGNJET650] Type = Generic Long = "HP DesigJet 650C, HPGL2" Init = "\x1B%%-12345X@@PJL ENTER LANGUAGE = HPGL2\n"\ "\x1B%%-1BBIN;IP0,0,100,100SC0,100,0,100"\ "WU1MC1NP14CR0,15,0,15,0,15"\ "PC1,15,0,15PC2,0,15,15PC3,0,0,15PC4,15,15,0"\ "PC5,15,0,0PC6,0,15,0PC7,0,0,0PC8,15,12,15"\ "PC9,12,15,15PC10,12,12,15PC11,15,15,12PC12,15,12,0"\ "PC13,12,15,0PC14,11,11,11"\ "PA;\n" Reset = "PUSP0PG;" ResX = 1016 ResY = 1016 Bar = "PW0PU%d,%dRA%d,%d\n" ; (x1, y1, x2, y2) HwArcX1Y1CxCyA = "PU%d,%dPDAA%d,%d,%d\n" ; (x1, y1, xc, yc, ArcAngle) HwColor = "SP%u" ; (Pen-Number) HwLine = "PU%d,%dPD%d,%d\n" HwPoly1 = "PU%d,%dPM0PA%d,%d" ; first edge HwPoly2 = ",%d,%d" ; other points HwPoly3 = "PM2FP;\n" ; end of polygon HwWidth = "PW%u" ; (Pen-Width) MaxHwWidth = 5 [HPGL] Type = PenPlotter Long = "HP-GL plotter" Init = "IN; IP 0,0,100,100; SC 0,100,0,100;\n" Reset = "PU; SP 0; PA 0,0;\n" Width = 16 Height = 11 ResX = 1016 ResY = 1016 PenSelect = "SP %u;\n" ;; Pens numbered 1..n PenSpeed = "VS %1.0f;\n" PenUp = "PU;\n" PenDown = "PD;\n" Move = "PA %d,%d;\n" Draw = "PA %d,%d;\n" PenCircleCxCyRxRy = "AA %d,%d,360;\n" ; (assumes CP is left?!) PenArcCxCyAd = "AA %d,%d,%1.2f;\n" ; (assumes CP is at start of arc) ; Cx/y Center X/Y (long) ; Rx/y Radius X/Y (long) ; Ad Angle in degrees (double) [HPGLX] @HPGL Long = "HP-GL plotter (serial, with Xon/Xoff handshake)" Init = "\x1B.I;;17:\x1B.N;19:"\ "IN; IP 0,0,100,100; SC 0,100,0,100;\n" [SPL10] @HPGL Long = "Sekonic SPL 10 plotter" [CX6000] Type = PenPlotter Long = "C.Itoh CX6000 plotter" Init = "" Reset = "M0,0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "C%u\n" ;; Pens numbered 0..n-1 Move = "M%d,%d\n" Draw = "D%d,%d\n" [DXY800] Type = PenPlotter Long = "Roland DXY-800 plotter" Init = "" Reset = "J0\nH\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "J %u\n" Move = "M %d,%d\n" Draw = "D %d,%d\n" PenCircleRxRx = "E %d,180,360\nE %d,0,180\n" [DPX2200] @HPGL Long = "Roland DPX-2200 plotter" [ADCOMP] Type = PenPlotter Long = "ADCOMP X 100 plotter" Init = "" Reset = "M0,0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "C%u\n" ;; Pens numbered 1..n Move = "M%d,%d\n" Draw = "D%d,%d\n" PenCircleCxCyRxCxCyRx = "W%d,%d,%d,180,360,1\nW%d,%d,%d,0,180,1\n" [WX4671] Type = PenPlotter Long = "Watanabe WX4671 plotter" Init = "" Reset = "M0,0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 Move = "M%d,%d\n" Draw = "D%d,%d\n" [HPX84] Type = PenPlotter Long = "HPX-84 plotter" Init = "SH\n" Reset = "SH\nAP 0 0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenUp = "SH\n" PenDown = "SS\n" Move = "AP %d %d\n" Draw = "AP %d %d\n" PenCircleCxCyRxRy = "SH\nAK %d %d %d\n" [YEWPL] Type = PenPlotter Long = "Yokogawa PL 1000 plotter" Init = "IP 0;IW 0,0,380,250; IP 1;\n" Reset = "MA 0,0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "PS %u\n" PenSpeed = "PV %1.0f\n" Move = "MA %d,%d\n" Draw = "DA %d,%d\n" PenCircleRxCxCy = "AC %d,%d,%d,1800,5400\n" [ADCOMP300] Type = PenPlotter Long = "ADCOMP X 300 plotter" Init = "H\n" Reset = "J0\nH\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "J%u\n" PenSpeed = "T%1.0f\n" ;;max(min(sround(PenVelocity / 2), 10), 1) Move = "M%d,%d\n" Draw = "D%d,%d\n" PenCircleCxCyRxRy = "W%d,%d,%d,%d,1800,5400\n" [MP1000] Type = PenPlotter Long = "Watanabe MP1000 plotter" Init = "" Reset = "J0\nH\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "J%u\n" PenSpeed = "T%1.0f\n" Move = "M%d,%d\n" Draw = "D%d,%d\n" [EPSONHI80] @MP1000 Long = "EPSON HI-80 plotter (Plot-Mode 1)" [SWEET] Type = PenPlotter Long = "SWEET-P 100 plotter" Init = "RE;\n" Reset = "HO;\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSpeed = "VS %1.0f;\n" ;;max(15, sround((PenVelocity * 15) / 75)) Move = "MA %d,%d;\n" Draw = "DA %d,%d;\n" [TEWIP281] Type = PenPlotter Long = "tewidata P 281 plotter" Init = "H\n" Reset = "HF0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "F%u\n" PenUp = "H" PenDown = "I" Move = "%d/%dK\n" Draw = "%d/%dK\n" PenCircleRxn = "O%d,180,540\n" ; Rxn = Radius X (long, negative) [SE281] @TEWIP281 Long = "Goerz Servogor SE 281 plotter" [RY10MZ] Type = PenPlotter Long = "Rikadenki RY-10 MZ plotter" Init = "" Reset = "H\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "K%u\n" PenSpeed = "T%1.0f\n" Move = "M%d,%d\n" Draw = "D%d,%d\n" PenCircleCxCyRxRy = "W%d,%d C%d,180,360\n" [HIDMP] Type = PenPlotter Long = "Houston Instrument DMP plotter" Init = ";:H A EC1 \n" Reset = "P0 @\n" Width = 16 Height = 11 ResX = 1000 ResY = 1000 PenSelect = "P%u\n" PenSpeed = "V%1.0f\n" Move = "U %d,%d\n" Draw = "D %d,%d\n" PenCircleCxCyRxRy = "CA %d,%d 360\n" [EPS] Type = Generic Long = "Encapsulated PostScript" ResX = 254000 ; this gives us editor coordinates! ResY = 254000 Width = 100.00 ; virtually infinite Height = 100.00 ArcCxCyRWSaEaC = "%d %d %d %d %1.2f %1.2f %d a\n" ; (CenterX, CenterY, Radius, Width, StartAngle, EndAngle, LineCap) Bar = "%d %d %d %d b\n" ; (x1, y1, x2, y2) Circle = "%d %d %d %d c\n" ; (x, y, Radius, Width) Line = "%d %d %d %d %d l\n" ; (x1, y1, x2, y2, Width) Octagon = "%d %d %d %d o\n" ; (x, y, dx, dy) Pie = "%d %d %d p\n" ; (x, y, d) Square = "%d %d %d s\n" ; (x, y, d) Hole = "%d %d %d h\n" ; (x, y, d) Header1 = "%%!PS-Adobe-1.0\n" \ "%%%%Title: EAGLE Drawing %s\n" \ "%%%%Creator: EAGLE\n" \ "%%%%Pages: %d\n" \ "%%%%BoundingBox: 0 0 %d %d\n" \ "%%%%EndComments\n" \ "\n"\ "%% Coordinate transfer:\n"\ "\n"\ "/EU { 254 div 0.072 mul } def\n"\ "/inch { 72 mul } def\n"\ "\n"\ "%% Linestyle:\n"\ "\n"\ "1 setlinecap\n"\ "1 setlinejoin\n"\ "\n"\ "%% Drawing functions:\n"\ "\n"\ "/l { %% draw a line\n"\ " /lw exch def\n"\ " /y2 exch def\n"\ " /x2 exch def\n"\ " /y1 exch def\n"\ " /x1 exch def\n"\ " newpath\n"\ " x1 EU y1 EU moveto\n"\ " x2 EU y2 EU lineto\n"\ " lw EU setlinewidth\n"\ " stroke\n"\ " } def\n"\ "\n"\ "/h { %% draw a hole\n"\ " /d exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " d 0 gt {\n"\ " newpath\n"\ " x EU y EU d 2 div EU 0 360 arc\n"\ " currentgray dup\n"\ " 1 exch sub setgray\n"\ " fill\n"\ " setgray\n"\ " } if\n"\ " } def\n"\ "\n"\ "/b { %% draw a bar\n"\ " /y2 exch def\n"\ " /x2 exch def\n"\ " /y1 exch def\n"\ " /x1 exch def\n"\ " newpath\n"\ " x1 EU y1 EU moveto\n"\ " x2 EU y1 EU lineto\n"\ " x2 EU y2 EU lineto\n"\ " x1 EU y2 EU lineto\n"\ " closepath\n"\ " fill\n"\ " } def\n"\ "\n"\ "/c { %% draw a circle\n"\ " /lw exch def\n"\ " /rd exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " newpath\n"\ " lw EU setlinewidth\n"\ " x EU y EU rd EU 0 360 arc\n"\ " stroke\n"\ " } def\n"\ "\n"\ "/a { %% draw an arc\n"\ " /lc exch def\n"\ " /ae exch def\n"\ " /as exch def\n"\ " /lw exch def\n"\ " /rd exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " lw rd 2 mul gt {\n"\ " /rd rd lw 2 div add 2 div def\n"\ " /lw rd 2 mul def\n"\ " } if\n"\ " currentlinecap currentlinejoin\n"\ " lc setlinecap 0 setlinejoin\n"\ " newpath\n"\ " lw EU setlinewidth\n"\ " x EU y EU rd EU as ae arc\n"\ " stroke\n"\ " setlinejoin setlinecap\n"\ " } def\n"\ "\n"\ "/s { %% draw a square\n"\ " /d exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " newpath\n"\ " x d 2 div sub EU y d 2 div sub EU moveto\n"\ " d EU 0 EU rlineto\n"\ " 0 EU d EU rlineto\n"\ " d neg EU 0 EU rlineto\n"\ " closepath\n"\ " fill\n"\ " } def\n"\ "\n"\ "/p { %% draw a pie\n"\ " /d exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " newpath\n"\ " x EU y EU d 2 div EU 0 360 arc\n"\ " fill\n"\ " } def\n"\ "\n"\ "/edge { 0.20710678119 mul } def\n"\ "\n"\ "/o { %% draw an octagon\n"\ " /dy exch def\n"\ " /dx exch def\n"\ " /y exch def\n"\ " /x exch def\n"\ " newpath\n"\ " dx dy ge {\n"\ " x dx 2 div sub EU y dy edge add EU moveto\n"\ " x dx dy sub 2 div sub dy edge sub EU y dy 2 div add EU lineto\n"\ " x dx dy sub 2 div add dy edge add EU y dy 2 div add EU lineto\n"\ " x dx 2 div add EU y dy edge add EU lineto\n"\ " x dx 2 div add EU y dy edge sub EU lineto\n"\ " x dx dy sub 2 div add dy edge add EU y dy 2 div sub EU lineto\n"\ " x dx dy sub 2 div sub dy edge sub EU y dy 2 div sub EU lineto\n"\ " x dx 2 div sub EU y dy edge sub EU lineto\n"\ " } if\n"\ " dx dy lt {\n"\ " x dx edge add EU y dy 2 div add EU moveto\n"\ " x dx 2 div add EU y dy dx sub 2 div add dx edge add EU lineto\n"\ " x dx 2 div add EU y dy dx sub 2 div sub dx edge sub EU lineto\n"\ " x dx edge add EU y dy 2 div sub EU lineto\n"\ " x dx edge sub EU y dy 2 div sub EU lineto\n"\ " x dx 2 div sub EU y dy dx sub 2 div sub dx edge sub EU lineto\n"\ " x dx 2 div sub EU y dy dx sub 2 div add dx edge add EU lineto\n"\ " x dx edge sub EU y dy 2 div add EU lineto\n"\ " } if\n"\ " closepath\n"\ " fill\n"\ " } def\n"\ "\n" ;(Name, NrPages, (x2 - x1) * 0.072 * ScaleFactor, (y2 - y1) * 0.072 * ScaleFactor) [PS] @EPS Long = "PostScript (printable)" Width = 7.75 Height = 11.00 Header2 = "%% the real drawing size:\n"\ "\n"\ "/MinDrawX %6d EU def\n"\ "/MinDrawY %6d EU def\n"\ "/MaxDrawX %6d EU def\n"\ "/MaxDrawY %6d EU def\n"\ "\n"\ "%% the usable page size:\n"\ "\n"\ "/LeftMargin 0.25 inch def %% change these if drawing gets clipped!\n"\ "/BotMargin 0.25 inch def\n"\ "/PageWidth %7.4f inch def\n"\ "/PageHeight %7.4f inch def\n"\ "\n"\ "%% are we going to rotate?:\n"\ "\n"\ "/RotateDrawing %d 0 ne def\n"\ "\n" ;(x1, y1, x2, y2, Width, Height, DoRotate) Header3 = "%% Media size functions:\n"\ "\n"\ "/AbortMessage { %% Show a message in a box and stop printing\n"\ " /h 100 def\n"\ " /Courier findfont 12 scalefont setfont\n"\ " mediawidth pagemargin sub h 1 setpage\n"\ " newpath\n"\ " 0 0 moveto\n"\ " 0 h rlineto\n"\ " mediawidth pagemargin sub 0 rlineto\n"\ " 0 h neg rlineto\n"\ " closepath\n"\ " 5 setlinewidth\n"\ " stroke\n"\ " newpath 50 60 moveto (ERROR: Jobsize exceeds physical printing area!) show\n"\ " newpath 50 40 moveto ( Job has been aborted!) show\n"\ " showpage\n"\ " stop\n"\ " } def\n"\ "\n"\ "/SelectPage { %% Select the page identified by Row and Column\n"\ " /Column exch def\n"\ " /Row exch def\n"\ "\n"\ " %% the actually exposed area (if the machine knows these parameters!):\n"\ "\n"\ " /DrawX MaxDrawX MinDrawX sub def\n"\ " /DrawY MaxDrawY MinDrawY sub def\n"\ " statusdict /setpage known\n"\ " statusdict /mediawidth known and\n"\ " statusdict /medialength known and\n"\ " statusdict /pagemargin known and {\n"\ " %% this is for machines that can tell the media size:\n"\ " statusdict begin\n"\ " /MediaW mediawidth pagemargin sub def\n"\ " DrawX DrawY ge {\n"\ " DrawX MediaW le DrawY medialength le and {\n"\ " MediaW DrawY 1 setpage\n"\ " MediaW DrawX sub 2 div 0 translate\n"\ " }{\n"\ " DrawY MediaW le DrawX medialength le and {\n"\ " MediaW DrawX 0 setpage\n"\ " 0 MediaW DrawY sub 2 div translate\n"\ " }{\n"\ " AbortMessage\n"\ " } ifelse\n"\ " } ifelse\n"\ " }{\n"\ " DrawY MediaW le DrawX medialength le and {\n"\ " MediaW DrawX 0 setpage\n"\ " 0 MediaW DrawY sub 2 div translate\n"\ " }{\n"\ " DrawX MediaW le DrawY medialength le and {\n"\ " MediaW DrawY 1 setpage\n"\ " MediaW DrawX sub 2 div 0 translate\n"\ " }{\n"\ " AbortMessage\n"\ " } ifelse\n"\ " } ifelse\n"\ " } ifelse\n"\ " end\n"\ " }{\n"\ " %% this is for machines that can NOT tell the media size:\n"\ " %% (Ghostscript doesn't like this!)\n"\ " /Product product length string def\n"\ " /i 0 def\n"\ " product { dup 97 lt { 32 add } if Product exch i exch put /i i 1 add def } forall \n"\ " Product (ghostscript) search dup /IsGhostscript exch def\n"\ " { pop pop } if\n"\ " pop\n"\ " IsGhostscript not {\n"\ " statusdict /setpage known {\n"\ " statusdict begin\n"\ " RotateDrawing {\n"\ " LeftMargin PageHeight add BotMargin DrawY add\n"\ " }{\n"\ " BotMargin DrawY add LeftMargin DrawX add \n"\ " } ifelse\n"\ " 0 setpage\n"\ " end\n"\ " } if\n"\ " } if\n"\ " %% set clipping boundary:\n"\ " newpath\n"\ " LeftMargin BotMargin moveto\n"\ " 0 PageHeight rlineto\n"\ " PageWidth 0 rlineto\n"\ " 0 PageHeight neg rlineto\n"\ " closepath\n"\ " clip\n"\ " %% set the origin:\n"\ " LeftMargin BotMargin translate\n"\ " RotateDrawing {\n"\ " 0 PageHeight translate\n"\ " -90 rotate\n"\ " PageHeight Column mul neg PageWidth Row mul neg translate\n"\ " }{\n"\ " PageWidth Column mul neg PageHeight Row mul neg translate\n"\ " } ifelse\n"\ " } ifelse\n"\ " %% move the lower left corner of the drawing to the origin:\n"\ " MinDrawX neg MinDrawY neg translate\n"\ " \n"\ " %% Linestyle:\n"\ " \n"\ " 1 setlinecap\n"\ " 1 setlinejoin\n"\ " \n"\ " } def\n"\ "\n"\ "%% TheDrawing\n" StartPage= "\ngsave %d %d SelectPage\n" ;(Row, Column) EndPage = "showpage grestore\n" [PS_INVERTED] @PS Long = "PostScript (printable, inverted)" Header3 = "%% Media size functions:\n"\ "\n"\ "/AbortMessage { %% Show a message in a box and stop printing\n"\ " /h 100 def\n"\ " /Courier findfont 12 scalefont setfont\n"\ " mediawidth pagemargin sub h 1 setpage\n"\ " newpath\n"\ " 0 0 moveto\n"\ " 0 h rlineto\n"\ " mediawidth pagemargin sub 0 rlineto\n"\ " 0 h neg rlineto\n"\ " closepath\n"\ " 5 setlinewidth\n"\ " stroke\n"\ " newpath 50 60 moveto (ERROR: Jobsize exceeds physical printing area!) show\n"\ " newpath 50 40 moveto ( Job has been aborted!) show\n"\ " showpage\n"\ " stop\n"\ " } def\n"\ "\n"\ "/SelectPage { %% Select the page identified by Row and Column\n"\ " /Column exch def\n"\ " /Row exch def\n"\ "\n"\ " %% the actually exposed area (if the machine knows these parameters!):\n"\ "\n"\ " /DrawX MaxDrawX MinDrawX sub def\n"\ " /DrawY MaxDrawY MinDrawY sub def\n"\ " statusdict /setpage known\n"\ " statusdict /mediawidth known and\n"\ " statusdict /medialength known and\n"\ " statusdict /pagemargin known and {\n"\ " %% this is for machines that can tell the media size:\n"\ " statusdict begin\n"\ " /MediaW mediawidth pagemargin sub def\n"\ " DrawX DrawY ge {\n"\ " DrawX MediaW le DrawY medialength le and {\n"\ " MediaW DrawY 1 setpage\n"\ " MediaW DrawX sub 2 div 0 translate\n"\ " }{\n"\ " DrawY MediaW le DrawX medialength le and {\n"\ " MediaW DrawX 0 setpage\n"\ " 0 MediaW DrawY sub 2 div translate\n"\ " }{\n"\ " AbortMessage\n"\ " } ifelse\n"\ " } ifelse\n"\ " }{\n"\ " DrawY MediaW le DrawX medialength le and {\n"\ " MediaW DrawX 0 setpage\n"\ " 0 MediaW DrawY sub 2 div translate\n"\ " }{\n"\ " DrawX MediaW le DrawY medialength le and {\n"\ " MediaW DrawY 1 setpage\n"\ " MediaW DrawX sub 2 div 0 translate\n"\ " }{\n"\ " AbortMessage\n"\ " } ifelse\n"\ " } ifelse\n"\ " } ifelse\n"\ " end\n"\ " }{\n"\ " %% this is for machines that can NOT tell the media size:\n"\ " %% (Ghostscript doesn't like this!)\n"\ " /Product product length string def\n"\ " /i 0 def\n"\ " product { dup 97 lt { 32 add } if Product exch i exch put /i i 1 add def } forall \n"\ " Product (ghostscript) search dup /IsGhostscript exch def\n"\ " { pop pop } if\n"\ " pop\n"\ " IsGhostscript not {\n"\ " statusdict /setpage known {\n"\ " statusdict begin\n"\ " RotateDrawing {\n"\ " LeftMargin PageHeight add BotMargin DrawY add\n"\ " }{\n"\ " BotMargin DrawY add LeftMargin DrawX add \n"\ " } ifelse\n"\ " 0 setpage\n"\ " end\n"\ " } if\n"\ " } if\n"\ " %% set clipping boundary:\n"\ " newpath\n"\ " LeftMargin BotMargin moveto\n"\ " 0 PageHeight rlineto\n"\ " PageWidth 0 rlineto\n"\ " 0 PageHeight neg rlineto\n"\ " closepath\n"\ " clip\n"\ " %% set the origin:\n"\ " LeftMargin BotMargin translate\n"\ " RotateDrawing {\n"\ " 0 PageHeight translate\n"\ " -90 rotate\n"\ " PageHeight Column mul neg PageWidth Row mul neg translate\n"\ " }{\n"\ " PageWidth Column mul neg PageHeight Row mul neg translate\n"\ " } ifelse\n"\ " } ifelse\n"\ " %% move the lower left corner of the drawing to the origin:\n"\ " MinDrawX neg MinDrawY neg translate\n"\ " \n"\ " %% Linestyle:\n"\ " \n"\ " 1 setlinecap\n"\ " 1 setlinejoin\n"\ " \n"\ " %% invert drawing:\n"\ " newpath\n"\ " MinDrawX MinDrawY moveto\n"\ " MaxDrawX MinDrawY lineto\n"\ " MaxDrawX MaxDrawY lineto\n"\ " MinDrawX MaxDrawY lineto\n"\ " 0 setgray\n"\ " closepath fill\n"\ " 1 setgray\n"\ " \n"\ " } def\n"\ "\n"\ "%% TheDrawing\n" [PS_DINA3] @PS Long = "Postscript (printable) DIN A3" Width = 11.36 Height = 16.00 [HPGL2] Type = Generic Long = "HP-GL/2 printer" Init = "\x1B%%1BIN;IP0,0,100,100SC0,100,0,100"\ "WU1MC1NP14CR0,15,0,15,0,15"\ "PC1,15,0,15PC2,0,15,15PC3,0,0,15PC4,15,15,0"\ "PC5,15,0,0PC6,0,15,0PC7,0,0,0PC8,15,12,15"\ "PC9,12,15,15PC10,12,12,15PC11,15,15,12PC12,15,12,0"\ "PC13,12,15,0PC14,11,11,11"\ "PA;\n" ;Use the following as first line of the Init string for A3 sized paper: ;Init = "\x1B&l27A\x1B%%-1BIN;IP0,0,100,100SC0,100,0,100"\ Reset = "\x1B%%0A\f" ResX = 1016 ResY = 1016 Bar = "PW0PU%d,%dRA%d,%d\n" ; (x1, y1, x2, y2) HwArcX1Y1CxCyA = "PU%d,%dPDAA%d,%d,%d\n" ; (x1, y1, xc, yc, ArcAngle) HwColor = "SP%u" ; (Pen-Number) HwLine = "PU%d,%dPD%d,%d\n" HwPoly1 = "PU%d,%dPM0PA%d,%d" ; first edge HwPoly2 = ",%d,%d" ; other points HwPoly3 = "PM2FP;\n" ; end of polygon HwWidth = "PW%u" ; (Pen-Width) MaxHwWidth = 5 [GERBER] Type = PhotoPlotter Long = "Gerber photoplotter" Init = "G01*\nX000000Y000000D02*\n" Reset = "X000000Y000000D02*\nM02*\n" ResX = 10000 ResY = 10000 ;Wheel = "" Move = "X%06dY%06dD02*\n" ; (x, y) Draw = "X%06dY%06dD01*\n" ; (x, y) Flash = "X%06dY%06dD03*\n" ; (x, y) Aperture = "%s*\n" ; (Aperture code) Units = Inch Info = "Plotfile Info:\n"\ "\n"\ " Coordinate Format : 2.4\n"\ " Coordinate Units : Inch\n"\ " Data Mode : Absolute\n"\ " Zero Suppression : None\n"\ " End Of Block : *\n"\ "\n" [GERBERAUTO] @GERBER Long = "Gerber photoplotter with automatic aperture wheel generation" Wheel = "" ; avoids message! AutoAperture = "D%d" ; (Aperture number) FirstAperture = 10 Units = Inch [GERBER_RS274X] @GERBERAUTO Long = "Gerber photoplotter with RS-274-X aperture generation" Units = Inch Init = "G75*\n" \ allow positive and negative coordinates "G70*\n" \ units are Inch (G71 for metric) "%%OFA0B0*%%\n" \ horizonal and vertical OFfset is 0 "%%FSAX24Y24*%%\n" \ Format Statement is Absolute (I for incremental) 2.4 "%%IPPOS*%%\n" \ Image Polarity is POSitive (NEG for nagative) "%%LPD*%%\n" \ Layer Polarity Dark (C for clear on negative planes) "%%AMOC8*\n5,1,8,0,0,1.0X$1,0*\n"\ Octagons are emulated with a circle (using 8 vertices) "*%%\n" ; and therefore the diameter must be enlarged with '1 / cos(pi / 8)' Reset = "M02*\n" Circle = "%%AD%sC,%6.4f*%%\n" ; (code, diameter) Rectangle = "%%AD%sR,%6.4fX%6.4f*%%\n" ; (code, dx, dy) Oval = "%%AD%sO,%6.4fX%6.4f*%%\n" ; (code, dx, dy) ; According to the RS-274-X specs there is an aperture macro ; primitive that allows us to specify an octagon (i.e. a polygon with ; 8 vertices). As some Gerber viewers seem to have problems with that, ; we would have to use a round shape for that. ; If your Gerber processor cannot handle the polygon primitive you may ; uncomment the following line and comment out the line after it: ;Octagon = "%%AD%sC,%6.4f*%%\n" ; (code, diameter) (looks like there is no octagon, so we take a circle) Octagon = "%%AD%sOC8,%6.4f*%%\n" ; (code, diameter) Annulus = "%%AMAN%s*\n1,1,%6.4f,0,0*\n1,0,%6.4f,0,0*\n"\ "*%%\n"\ "%%AD%sAN%s*%%\n" ; (code, diameter, inner diameter, code, code) Thermal = "%%AMTH%sX*\n1,1,%6.4f,0,0*\n1,0,%6.4f,0,0*\n"\ "21,0,%6.4f,%6.4f,0,0,45*\n21,0,%6.4f,%6.4f,0,0,135*\n"\ "*%%\n"\ "%%AD%sTH%sX*%%\n"; (code, diameter, inner diameter, diameter + 2mil, gap, diameter + 2mil, gap, code, code) [GERBER_23] Type = PhotoPlotter Long = "Gerber photoplotter, coordinate format 2.3 inch" Init = "G01*\nX00000Y00000D02*\n" Reset = "X00000Y00000D02*\nM02*\n" ResX = 1000 ResY = 1000 ;Wheel = "" Move = "X%05dY%05dD02*\n" ; (x, y) Draw = "X%05dY%05dD01*\n" ; (x, y) Flash = "X%05dY%05dD03*\n" ; (x, y) Aperture = "%s*\n" ; (Aperture code) Units = Inch Info = "Plotfile Info:\n"\ "\n"\ " Coordinate Format : 2.3\n"\ " Coordinate Units : Inch\n"\ " Data Mode : Absolute\n"\ " Zero Suppression : None\n"\ " End Of Block : *\n"\ "\n" [GERBERAUTO_23] @GERBER_23 Long = "Gerber photoplotter with automatic aperture wheel generation" Wheel = "" ; avoids message! AutoAperture = "D%d" ; (Aperture number) FirstAperture = 10 Units = Inch [EMMA] Type = PhotoPlotter Long = "EMMA 30/80 photoplotter" Init = "%%\nS7X000000Y000000\n" Reset = "S7X000000Y000000\n$\n" ResX = 20000 ResY = 20000 ;Wheel = "" Move = "S7X%06dY%06d\n" ; (x, y) Draw = "S2X%06dY%06d\n" ; (x, y) Flash = "S1X%06dY%06d\n" ; (x, y) Aperture = "%s\n" ; (Aperture code) Info = "Plotfile Info:\n"\ "\n"\ " Coordinate Format : 6\n"\ " Coordinate Units : 1/800 mm\n"\ " Data Mode : Absolute\n"\ " Zero Suppression : None\n"\ " End Of Block : CR/LF\n"\ "\n" [GLASER] Type = PhotoPlotter Long = "GLASER DP-1504 photoplotter" Init = "IN;FC0.0254;CS1,1,0;SI1,1;\n" Reset = "PU;PA0,0;\n" ResX = 1000 ResY = 1000 Wheel = "glaser.whl" Move = "PA%d,%d;\n" ; (x, y) Draw = "PA%d,%d;\n" ; (x, y) PenDown = "PD;\n" PenUp = "PU;\n" Flash = "PA%d,%d;%s\n" ; (x, y, Aperture code) Aperture = "%s\n" ; (Aperture code) Info = "Plotfile Info:\n"\ "\n"\ " Coordinate Units : 1/1000 Inch\n"\ " Data Mode : Absolute\n"\ "\n" [EXCELLON] Type = DrillStation Long = "Excellon drill station" Init = "%%\n" Reset = "M30\n" ResX = 1000 ResY = 1000 ;Rack = "" Select = "%s\n" ; (Drill code) Drill = "X%1.0fY%1.0f\n" ; (x, y) Info = "Drill File Info:\n"\ "\n"\ " Data Mode : Absolute\n"\ " Units : 1/1000 Inch\n"\ " End Of Block : CR/LF\n"\ "\n" [SM1000] Type = DrillStation Long = "Sieb & Meyer 1000 drill station" Init = "%%%%1000\n" Reset = "M30\n" ResX = 2540 ResY = 2540 ;Rack = "" Drill = "X%1.0fY%1.0f%s\n" ; (x, y, drill code) Info = "Drill File Info:\n"\ "\n"\ " Data Mode : Absolute\n"\ " End Of Block : CR/LF\n"\ " Units : 1/100 mm\n"\ "\n" [SM3000] Type = DrillStation Long = "Sieb & Meyer 3000 drill station" Init = "%%%%3000\n" Reset = "M30\n" ResX = 25400 ResY = 25400 Divide = 1000 ; makes coordinates MM ;Rack = "" Drill = "X%1.3fY%1.3f%s\n" ; (x, y, drill code) Info = "Drill File Info:\n"\ "\n"\ " Data Mode : Absolute\n"\ " End Of Block : CR/LF\n"\ " Units : mm\n"\ "\n" [SMS68] Type = DrillStation Long = "SMS68 drill station" Init = ";\n" Reset = "TO0;PA0,0;\n" ResX = 25400 ResY = 25400 ;Rack = "" Select = "%s;\n" ; (Drill code) Drill = "PA%1.0f,%1.0f;PD;PU;\n" ; (x, y) Info = "Drill File Info:\n"\ "\n"\ " Data Mode : Absolute\n"\ " End Of Block : CR/LF\n"\ " Units : 1/1000 mm\n"\ "\n" [GBRDRL] Type = DrillStation Long = "Gerber Drill Code" Init = "G01*\nX00000Y00000D02*\n" Reset = "X00000Y00000D02*\nM02*\n" ResX = 1000 ResY = 1000 ;Rack = "" Select = "%s*\n" ; (Drill code) Drill = "X%05.0fY%05.0fD03*\n" ; (x, y) Info = "Drill File Info:\n"\ "\n"\ " Coordinate Format : 2.3\n"\ " Coordinate Units : Inch\n"\ " Data Mode : Absolute\n"\ " Zero Suppression : None\n"\ " End Of Block : *\n"\ "\n" [CALCOMP] Type = Calcomp Long = "CalComp PCI pen plotter" Init = "\x08\x0B" \ Init "\x09\x01" ; Scaling 1 Reset = "" ResX = 2032 ResY = 2032 PenSelect = "\x04%c" ; Pens numbered 1..n Sync = "\x02" Bias = 0x20 Radix = 0x40 Buffer = 256 Checksum = YES [CALCOMPE] Type = CalcompE Long = "CalComp PCI electrostatic plotter" Init = "\x08\x0B" \ Init "\x09\x01" ; Scaling 1 Reset = "" ResX = 2032 ResY = 2032 Sync = "\x02" Bias = 0x20 Radix = 0x40 Buffer = 256 Checksum = YES [CALCOMP_M84] Type = PenPlotter Long = "Calcomp M84 Plotter" Init = "" Reset = "F\nH\nR0\n" Width = 16 Height = 11 ResX = 254 ResY = 254 PenSelect = "F%u\n" Move = "C %d,%d HK\n" Draw = "C %d,%d IK\n" PenCircleCxCyRxCxCyRx = "C %d,%d HK \n O0 %d,0,360\n" PenVelocity = "F10,%d\n"