/* CAMSETUP (CAM) -- CAM Processor Setup */ /* CAMSETUP (CAM) -- CAM-Prozessor Setup */ /* -- INTENDED FOR CAM-STARTUP-CALL USE -- */ /* // Copyright (c) 1994-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 (091020) 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 (050425) CHANGE: // Added inner layers to default plot layer table // rl (040811) RELEASED FOR BAE V6.4. // rl (031017) ENHANCEMENT: // Introduced HPGL parameters setting support. // rl (030904) RELEASED FOR BAE V6.2. // rl (021209) RELEASED FOR BAE V6.0. // rl (020618) RELEASED FOR BAE V5.4. // rl (010912) ENHANCEMENT: // Introduced drill accuracy setting support. // rl (010824) BUGFIX: // bae.ini Gerber parameter interpretation error fixed. // rl (010625) RELEASED FOR BAE V5.0. // rl (010220) ENHANCEMENT: // Added optional parameter settings from bae.ini file. // rl (001006) ENHANCEMENT: // Added gerber parameter settings // rl (000714) RELEASED FOR BAE V4.6. // rl (000714) ENHANCEMENT: // Added enabled default output of board // outline in multi-layer output. // rl (990924) RELEASED FOR BAE V4.4. // rl (990924) ENHANCEMENT: // Added pen settings for multi-layer output. // rl (980910) RELEASED FOR BAE V4.2. // mb (980713) ENHANCEMENT: // Dynamic multi-language support introduced. // rl (970929) RELEASED FOR BAE V4.0. // rl (970731) CHANGE: // Added setting of general plot parameters. // mb (960919) RELEASED FOR BAE V3.4. // mb (95) RELEASED FOR BAE V3.2. // mb (941117) ORIGINAL CODING. // // DESCRIPTION // // The camsetup User Language program sets a series of // default CAM Processor parameters and display modes. // camsetup also starts the uifsetup User Language program // in order to activate predefined CAM Processor menu // assignments and key bindings. */ // Includes #include "std.ulh" // User Language standard include // Messages string REPDONE = M("CAMSETUP: CAM-Prozessor Parameter gesetzt.", "CAMSETUP: CAM Processor parameter setup done."); string ERRPARAM = M("CAMSETUP: Ungueltige Parameter spezifiziert!", "CAMSETUP: Invalid parameters specified!"); // INI file parameter name definitions #define PAR_WARNMODE "WARNMODE_LAY" // Warning mode #define PAR_BACKGRID "BACKGRID_CAM" // Background grid #define PAR_INPUTGRID "INPUTGRID_CAM" // Input grid #define PAR_GRIDLOCK "GRIDLOCK_CAM" // Input grid lock #define PAR_ANGLELOCK "ANGLELOCK_CAM" // Input angle lock #define PAR_COORDDISP "COORDDISP_CAM" // Coordinate display mode #define PAR_COLTABSAVE "COLTABSAVE_LAY"// Color table save flag #define PAR_WIDEDRAW "WIDEDRAW_CAM" // Wide draw width #define PAR_HPGLFILL "HPGLFILL_CAM" // HPGL fill mode #define PAR_HPGLSPEED "HPGLSPEED_CAM" // HPGL pen speed #define PAR_HPGLPENW "HPGLPENW_CAM" // HPGL pen width #define PAR_HPGLSCALE "HPGLSCALE_CAM" // HPGL plot scale factor #define PAR_GENPSCALE "GENPSCALE_CAM" // Generic printer scale mode #define PAR_GENPDRAW "GENPDRAW_CAM" // Generic printer drawing mode #define PAR_GBRFORMAT "GBRFORMAT_CAM" // Gerber format #define PAR_GBROPT "GBROPT_CAM" // Gerber optimization mode #define PAR_GBRFILL "GBRFILL_CAM" // Gerber fill mode #define PAR_GBRARC "GBRARC_CAM" // Gerber arc mode #define PAR_GBREXT "GBREXT_CAM" // Gerber extended mode #define PAR_STDLINE "STDLINE_CAM" // Standard line width #define PAR_ALLLAYER "ALLLAYER_CAM" // All layer output mode #define PAR_BORDER "BORDER_CAM" // Board outline output mode #define PAR_PLTROT "PLOTROT_CAM" // Plot rotate mode #define PAR_PLTMIRR "PLOTMIRR_CAM" // Plot mirror mode #define PAR_PIXRESOL "PIXRESOL_CAM" // Plot ximap resolution #define PAR_MARKER "MARKER_CAM" // Plot marker output mode #define PAR_SYMTOL "SYMTOL_CAM" // Symbol tolerance #define PAR_DRACCUR "DRACCUR_CAM" // Drill accuracy #define PAR_POWHTMD "POWHTMDIST_CAM"// Heat trap to drilling min. dist. #define PAR_POWHTANG "POWHTANG_CAM" // Heat trap angle #define PAR_POWISMD "POWISMDIST_CAM"// Isolation to drilling min. dist. #define PAR_POWHTRNG "POWHTRANGE_CAM"// Heat trap to drilling dist. range #define PAR_POWISRNG "POWISRANGE_CAM"// Isolation to drilling dist. range #define PAR_POWBORDWD "POWBORDERWD_CAM"// Isolation border width #define PAR_POWPLANEWD "POWPLANEWD_CAM"// Split power plane isolation width // Standard definitions #define GRID 0.00127 // Standard grid (1/20" = 1.27mm) // Gerber plot output definitions #define GBRFMT_23 0 // Gerber format 2.3 #define GBRFMT_24 1 // Gerber format 2.4 #define GBRFMT_25 2 // Gerber format 2.5 #define GBRFMT_26 3 // Gerber format 2.6 #define GBROPTF_0 0 // Gerber optimization off flag #define GBROPTF_1 1 // Gerber optimization on flag #define GBRFILLM_0 0 // Gerber line fill mode #define GBRFILLM_1 1 // Gerber multi fill mode #define GBRFILLM_2 2 // Gerber G36/G37 fill mode #define GBRARCM_0 0 // Gerber arc circle interpolation #define GBRARCM_1 1 // Gerber arc circle commands #define GBREXTM_0 0 // Gerber no extended mode #define GBREXTM_1 1 // Gerber static extended mode #define GBREXTM_2 2 // Gerber dynamic extended mode int GBRFORMAT = bae_iniintval(PAR_GBRFORMAT,GBRFMT_23); // Gerber format int GBROPTFLAG = bae_iniintval(PAR_GBROPT,GBROPTF_0); // Gerber optimization flag int GBRFILLMODE = bae_iniintval(PAR_GBRFILL,GBRFILLM_1); // Gerber fill mode int GBRARCMODE = bae_iniintval(PAR_GBRARC,GBRARCM_0); // Gerber arc mode int GBREXTMODE = bae_iniintval(PAR_GBREXT,GBREXTM_0); // Gerber extended mode // Layer pen descriptor struct laypendes { // Layer pen descriptor int layer /* Layer */; int pen /* Pen number */; }; struct laypendes laypenl[] = { // Layer pen output list { 0,1}, // Signal 1 (Solder Side) { 1,2}, // Signal 2 { 2,3}, // Signal 3 { 3,4}, // Signal 4 { -1,5}, // All signal layers { -6,9}, // Inner signal layers {0x0400,6}, // Doc 1 Bottom (Silk Screen) {0x0401,7}, // Doc 1 Top (Silk Screen) { -2,8} // Board outline }; int laypenn = arylength(laypenl) /* Layer pen descriptor count */; // Main program void main() { int i /* Loop control variable */; // Enable all warnings cam_setintpar(2,bae_iniintval(PAR_WARNMODE,0)); // Set CAM Processor display/input parameters (grid 1/20") if (bae_setbackgrid( // Display grid bae_inidblval(PAR_BACKGRID,GRID),bae_inidblval(PAR_BACKGRID,GRID)) || bae_setinpgrid( // Input grid bae_inidblval(PAR_INPUTGRID,GRID),bae_inidblval(PAR_INPUTGRID,GRID)) || bae_setgridlock( // Input grid locked bae_iniintval(PAR_GRIDLOCK,1)) || bae_setanglelock( // Angle locked bae_iniintval(PAR_ANGLELOCK,1)) || bae_setcoorddisp( // mm coordinate display bae_iniintval(PAR_COORDDISP,0)) || cam_setintpar(8, // Color table save flag bae_iniintval(PAR_COLTABSAVE,0)) || cam_setwidedraw( // Wide draw width 1.5 mm bae_inidblval(PAR_WIDEDRAW,0.0015))) // Parameter set error error(ERRPARAM); // Set CAM Processor general plot parameters: // All layer plot on // Plot border on // Rotate plot off // Plot mirror mode no mirroring // Plot markers off // Plot accuracy 0.15 mm // Plot origin if (cam_setgenpltparam(bae_iniintval(PAR_ALLLAYER,1), bae_iniintval(PAR_BORDER,1),bae_iniintval(PAR_PLTROT,0), bae_iniintval(PAR_PLTMIRR,0),bae_iniintval(PAR_MARKER,1), bae_inidblval(PAR_SYMTOL,0.00015),0.0,0.0)) // Parameter set error error(ERRPARAM); // Set CAM Processor power layer plot parameters: // Heat trap to drilling min. distance 0.4 mm // Isolation to drilling min. distance 0.4 mm // Heat trap to drilling distance range 0.5 mm // Isolation to drilling distance range 0.5 mm // Isolation border width 2.1 mm // Split power plane isolation width 0.3 mm // Heat trap base angle 0 degree if (cam_setpowpltparam(bae_inidblval(PAR_POWHTMD,0.0004), bae_inidblval(PAR_POWISMD,0.0004),bae_inidblval(PAR_POWHTRNG,0.0005), bae_inidblval(PAR_POWISRNG,0.0005), bae_inidblval(PAR_POWBORDWD,0.0021), bae_inidblval(PAR_POWPLANEWD,0.0003)) || cam_setintpar(1,bae_iniintval(PAR_POWHTANG,1))) // Parameter set error error(ERRPARAM); // Set the default pen settings for (i=0;i4 ? 4 : 0),LMB); bae_callmenu(307); // Drill accuracy 0.1 mm bae_clriactqueue(); bae_storetextiact( 1,ftoa(baecvtl(bae_inidblval(PAR_DRACCUR,0.0001)),7)); bae_callmenu(402); // Print parameter set message bae_prtdialog(REPDONE); } // User Language program end