/* GBALLSIG (CAM) -- CAM Signal Layers Gerber Output Batch */ /* GBALLSIG (CAM) -- Gerber-Signallagenausgabe im Batch-Betrieb */ /* // Copyright (c) 1992-2012 Oliver Bartels F+E, Muenchen // Author: Manfred Baumeister // Changes History: // rl (120427) RELEASED FOR BAE V7.8. // rl (101019) RELEASED FOR BAE V7.6. // rl (091021) RELEASED FOR BAE V7.4. // rl (081014) RELEASED FOR BAE V7.2. // rl (071029) RELEASED FOR BAE V7.0. // rl (060829) RELEASED FOR BAE V6.8. // rl (050906) RELEASED FOR BAE V6.6. // rl (040811) RELEASED FOR BAE V6.4. // rl (030904) RELEASED FOR BAE V6.2. // rl (021209) RELEASED FOR BAE V6.0. // rl (020618) RELEASED FOR BAE V5.4. // rl (010625) RELEASED FOR BAE V5.0. // rl (010529) ENHANCEMENT: // Added optional parameter settings from bae.ini file. // rl (000508) RELEASED FOR BAE V4.6. // rl (990625) RELEASED FOR BAE V4.4. // rl (980910) RELEASED FOR BAE V4.2. // mb (980713) ENHANCEMENT: // Dynamic multi-language support introduced. // rl (970929) RELEASED FOR BAE V4.0. // ob (970705) CHANGE: // Added Extended Gerber basic support. // mb (960919) RELEASED FOR BAE V3.4. // mb (951018) CHANGE: // Plot report/statistics displayed with popup menu. // mb (95) RELEASED FOR BAE V3.2. // mb (941208) CHANGE: // Adapted cam_*gerber*() for Gerber arc plot mode access. // mb (94) RELEASED FOR BAE V3.0. // mb (93) RELEASED FOR BAE V2.6. // mb (93) RELEASED FOR BAE V2.4. // mb (92) RELEASED FOR BAE V2.2. // mb (92) ORIGINAL CODING. // // DESCRIPTION // // The gballsig User Language program accomplishes a // batch driven Gerber data output for all signal // layers of the currently loaded layout. // // NOTES // // Plot files names emerge from job file name with // signal layer number extension (i.e., ".1" for // signal layer 1, ".2" for signal layer 2 etc.). */ // Includes #include "mnu.ulh" // User Language menu utilities #include "lay.ulh" // User Language layout utilities // Messages string REPPLOTHD = M("Gerber-Plots fuer alle Signallagen", "Gerber Plot all Signal Layers"); string REPPLOTLAY = M("Plotausgabe %s...","Plotting %s..."); string REPPLOTOK = M(" Gerber-Plot/%s ausgegeben auf \"%s\".", "Gerber Plot/%s written to \"%s\"."); string REPGERBER0 = M("Gerber-Plot-Report :", "Gerber Plot Report :"); string REPGERBER1 = M(" Anzahl blitzbelichteter Strukturen ......: %ld", " Number of Flash Structures ..............: %ld"); string REPGERBER2 = M(" Anzahl rechteck-gezeichneter Flaechen ...: %ld", " Number of Rectangle Drawn Areas .........: %ld"); string REPGERBER3 = M(" Anzahl kreis-gezeichneter Flaechen ......: %ld", " Number of Circle Drawn Areas ............: %ld"); string REPGERBER4 = M(" Anzahl Multiblenden Flaechen ............: %ld", " Number of Multi Aperture Areas ..........: %ld"); string REPGERBER5 = M(" Anzahl liniengefuellter Flaechen ........: %ld", " Number of Line Filled Areas .............: %ld"); string REPGERBER6 = M(" Anzahl gezeichneter Waermefallen ........: %ld", " Number of Heat Traps ....................: %ld"); string REPGERBER7 = M(" Anzahl Ueberzeichnungs-Fehler ...........: %ld", " Number of Overdraw Errors ...............: %ld"); string ERRPARAM = M("Ungueltige Plotparameter/keine Blende fuer Standardlinienbreite!", "Invalid plot parameter/no aperture for standard line width!"); string ERRPLOT = M("Plotfehler!","Plot error!"); // INI file parameter name definitions #define PAR_STDWIDTH "STDWIDTH_CAM" // Standard line width #define PAR_OUTUNIT "OUTUNIT_CAM" // Gerber output unit #define PAR_OPTFLAG "OPTFLAG_CAM" // Gerber optimization #define PAR_FILLMODE "FILLMODE_CAM" // Gerber fill mode #define PAR_ARCMODE "ARCMODE_CAM" // Gerber I/J arc commands usage #define PAR_EXTGBR "EXTGBR_CAM" // Gerber extended mode // Plot parameters double STDWIDTH = bae_inidblval(PAR_STDWIDTH,0.3) /* Standard line width 0.3 mm */; double OUTUNIT = bae_inidblval(PAR_OUTUNIT,0.0000254) /* Gerber output unit (Format 2.3) */; int OPTFLAG = bae_iniintval(PAR_OPTFLAG,0) /* Gerber optimization off */; int FILLMODE = bae_iniintval(PAR_FILLMODE,1) /* Gerber multi-fill mode */; int ARCMODE = bae_iniintval(PAR_ARCMODE,0) /* Gerber I/J arc commands use off */; int EXTGBR = bae_iniintval(PAR_EXTGBR,0) /* Gerber extended mode off */; // Messages STRINGS msgl /* Message list */; int msgn = 0 /* Message count */; // Main program void main() { string jobfname /* Job file name */; string plotfname /* Plot file name */; string strbuf /* String buffer */; int laycnt /* Inner layer count */; int i /* Loop control variable */; // Plot statistic counters int flash=0,rect=0,circ=0,multi=0,line=0,heat=0,err=0; // Plot statistic counters summary int sflash,srect,scirc,smulti,sline,sheat,serr; // Initialize statistic summary sflash=srect=scirc=smulti=sline=sheat=serr=0; // Build plot file name jobfname=bae_planfname(); plotfname=convstring(jobfname,0)+"."; // Plot start report msgl[msgn++]=REPPLOTHD; msgl[msgn++]=""; // Get the total signal layer count laycnt=lay_plantoplay()+1; if (laycnt==2) laycnt+=lay_planmidlaycnt(); // Plot all layers including signal layer 1 to top layer for (i=0;i