diff --git a/README.md b/README.md index b61f6e6..af5a6c1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,22 @@ -# EaglePCBMilling -This repository is ment to provide for a DIN66025 cnc ulp script. +# Machine-it -It is a modified version of the original mill-outlines.ulp shipped with pcb eagle, currently in version 9.0.1. +Machine it is a new ulp. +This ulp will be used as an universal open source machine path creator to mill PCBs. -# Disclaimer +The user interface is oriented to process creation/execution. This allow users to create different process to the same machine, for example a fast milling and another complete rubout or even one that uses interpolation to make holes while the other uses pre-selected tools. + +A big improvement creating and saving a process is that later will be possible to run those processes faster, without configuring all over again. +Future versions will support diferent output files and the idea is to use some Eagle layers as viewer. + +It's repository cames originaly from EaglePCBMilling -This software is provided **AS IS**, **always** *simluate the generated g-code prior use on a real mill!* \ No newline at end of file +# How to use +*Attention, this software still being implemented, this version is not considered released nether stable* +Right now the software is under development, you are welcome to send suggestions. +I've made a small user interface and that's it. +This branch still not calling any core to generate files, it only configures how the board should be milled, the user can save processes and edit them if he wants. + +if you run machine-it ulp it will open the wizard. So far it still not connected to the mill-outlines, but improvements to the interface are welcome. + +# Disclaimer +This software is provided **AS IS**, **always** *simluate the generated g-code prior use on a real mill!* diff --git a/machine-it-dependencies/images/created-images.pptx b/machine-it-dependencies/images/created-images.pptx new file mode 100644 index 0000000..3afaac4 Binary files /dev/null and b/machine-it-dependencies/images/created-images.pptx differ diff --git a/machine-it-dependencies/images/double-sided.bmp b/machine-it-dependencies/images/double-sided.bmp new file mode 100644 index 0000000..53a6d0d Binary files /dev/null and b/machine-it-dependencies/images/double-sided.bmp differ diff --git a/machine-it-dependencies/images/drill-set.bmp b/machine-it-dependencies/images/drill-set.bmp new file mode 100644 index 0000000..9e1e702 Binary files /dev/null and b/machine-it-dependencies/images/drill-set.bmp differ diff --git a/machine-it-dependencies/images/interpolated-hole.bmp b/machine-it-dependencies/images/interpolated-hole.bmp new file mode 100644 index 0000000..aa2fdb6 Binary files /dev/null and b/machine-it-dependencies/images/interpolated-hole.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-inner-polygon-contour.bmp b/machine-it-dependencies/images/mill-outlines-inner-polygon-contour.bmp new file mode 100644 index 0000000..fda5739 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-inner-polygon-contour.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-inner-polygon-contour1.bmp b/machine-it-dependencies/images/mill-outlines-inner-polygon-contour1.bmp new file mode 100644 index 0000000..f65dd90 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-inner-polygon-contour1.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-mildimension.bmp b/machine-it-dependencies/images/mill-outlines-mildimension.bmp new file mode 100644 index 0000000..45493d6 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-mildimension.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-ovrlpfp.bmp b/machine-it-dependencies/images/mill-outlines-ovrlpfp.bmp new file mode 100644 index 0000000..8eb4e96 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-ovrlpfp.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-ovrlppp.bmp b/machine-it-dependencies/images/mill-outlines-ovrlppp.bmp new file mode 100644 index 0000000..7b7c60c Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-ovrlppp.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-pour.bmp b/machine-it-dependencies/images/mill-outlines-pour.bmp new file mode 100644 index 0000000..6472b3f Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-pour.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-sec-isolate.bmp b/machine-it-dependencies/images/mill-outlines-sec-isolate.bmp new file mode 100644 index 0000000..b2fe1a2 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-sec-isolate.bmp differ diff --git a/machine-it-dependencies/images/mill-outlines-spacing.bmp b/machine-it-dependencies/images/mill-outlines-spacing.bmp new file mode 100644 index 0000000..a2aa8d4 Binary files /dev/null and b/machine-it-dependencies/images/mill-outlines-spacing.bmp differ diff --git a/machine-it-dependencies/images/single-bottom.bmp b/machine-it-dependencies/images/single-bottom.bmp new file mode 100644 index 0000000..52d2d96 Binary files /dev/null and b/machine-it-dependencies/images/single-bottom.bmp differ diff --git a/machine-it-dependencies/images/single-top.bmp b/machine-it-dependencies/images/single-top.bmp new file mode 100644 index 0000000..454d95c Binary files /dev/null and b/machine-it-dependencies/images/single-top.bmp differ diff --git a/machine-it-dependencies/todo b/machine-it-dependencies/todo new file mode 100644 index 0000000..5400ed1 --- /dev/null +++ b/machine-it-dependencies/todo @@ -0,0 +1,49 @@ +-Create a header containing all dialogs +-Create a --recalculate argument to run same process as last time (considering the user modified the board) +-Create a --undo argument to delete files and folders created +-Create support to different languages +-Create process as folowing: + 1. Write name and observations about this process + 2. Select board properties: + -Single layer + -Double layer + -Board width + -Copper width + 3. Select milling traces strategy: + -Simple milling (fastest) + -Contorn mill + -Isolation rubout + -Complete rubout (slowest) + 4. Set the milling tool size + 5. Drilling strategy: + -Order to drill: -> implement later + -top -> drill + -drill -> top + -bottom -> drill + -drill -> bottom + -top -> drill -> bottom + -bottom -> drill -> top + -top -> bottom -> drill + -drill -> top -> bottom + -Tools used: + -Use a single mill and interpole holes + -Use a drillset -> implement later + -Use different drills to vias, pads and holes + 6. Set drills size + 7. Configure board outline cut + -Tool diameter + -Gap to support board + 8. Select machine or create machine + 9. Finish +-Create a Machine as folowing: + 1. Set output file type: + 2. Select proprierties according to the filetype: + -Zero + -Number of files (one per step or whole process in single file) + -Spinner configuration + -Maximum speeds + -Tool change position + -Board flip position + -Command number digits format + 3. Finish +-Add a view screen to be executed after user doubleclicks the ListView, it shows all main information about the process if the user doesnt remember diff --git a/machine-it.ulp b/machine-it.ulp new file mode 100644 index 0000000..7ea9aab --- /dev/null +++ b/machine-it.ulp @@ -0,0 +1,753 @@ +// ***************************************************************************************************** +// +// Created by Gabriel D'Espindula 05 July 2018 +// +// ***************************************************************************************************** + +#usage "Wizard to fabricate PCBs under development\n" + "

" + "Author: Gabriel D'Espindula" + +#require 7.0200 + + +string IMAGES_PATH = "machine-it-dependencies/images"; +string ULP_NAME = "machine_it"; //used to save in eaglerc file + +// Global variables to buffer what is the user option---------------------------------------------------- +// This is necessary because the ulp scrip doesn't create classes nether strucs without modifying the xml file(or it does?) +string process_name = "New process"; //name of the process +string process_observations = "my observations"; //observations displayed on first window +int board_type = 0; //board_type: + // 0 -> single top + // 1 -> single bottom + // 2 -> double side +real copper_width = 0.10; //copper_width +real pcb_width = 0.70; //pcb_width +int milling_topology = 0; //milling_topology: + // 0 -> Simple mill + // 1 -> Contorn mill + // 2 -> Isolation rubout + // 3 -> Complete rubout +real end_mill = 0.40; +real rubout_mill = 0.70; +int overlap_isolation = 20; +int overlap_rubout = 20; +int drilling_topology = 0; //drilling_topology: + // 0 -> Interpolate holes + // 1 -> Drillset +real drilling_mill = 0.70; +real pad_drill = 0.8; //pad_drill +real via_drill = 0.8; //via_drill +real holes_drill = 0.8; //holes_drill +real outilne_mill = 2.0; //mill bit to cut the outline +real outline_spacer = 10.0; //the space to keep the board fixed after milling + +int process_index = 0; // variable that stores which process where selected by the user + +// Inform which machine was excluded---------------------------------------------------------------------- +int dlgExcludeProcess(int exclude_index){ + string processes[]; + string process_variables[]; + string aux; + string saved_processes = cfgget(ULP_NAME+".saved"); //verify if there is string! + string save = ""; + int actual_index = (strsplit(processes, saved_processes, '\v')-2); + + for( int i = 0 ; i<=actual_index; i++){ //create new vector to be saved, without the process that was excluded + if(i != exclude_index) //save all but the excluded + save = save + processes[i] + '\v'; + } + cfgset(ULP_NAME+".saved", save); //save new vector without entry + + //strsplit(process_variables, processes[exclude_index], ';'); //retrieve the data of the excluded entry from volatile memory + //sprintf(aux, "The process %s was excluded.", process_variables[0]); //print name of the data entry excluded + //dlgMessageBox(aux); + + process_index=0;//set selected process at the first window to zero again. + return 1; +} + +// Open the same state machine as add, but retrieve data from this specific process first----------------- +int dlgEditProcess(){ + dlgMessageBox("Starts editing"); + return 1; +} +void retrieveDetails(int index){ + string processes[]; + string details[]; + string saved_processes = cfgget(ULP_NAME+".saved"); //verify if there is string! + string message = ""; + + strsplit(processes, saved_processes, '\v'); + strsplit(details, processes[process_index], ';'); + + process_name = details[0]; + process_observations = details[1]; + //detais 2 is the time and it will always update when saving + board_type = strtol(details[3]); + copper_width = strtod(details[4]); + pcb_width = strtod(details[5]); + milling_topology = strtol(details[6]); + end_mill = strtod(details[7]); + rubout_mill = strtod(details[8]); + overlap_isolation = strtol(details[9]); + overlap_rubout = strtol(details[10]); + drilling_topology = strtol(details[11]); + drilling_mill = strtod(details[12]); + pad_drill = strtod(details[13]); + via_drill = strtod(details[14]); + holes_drill = strtod(details[15]); + outilne_mill = strtod(details[16]); //mill bit to cut the outline + outline_spacer = strtod(details[17]); //the space to keep the board fixed after milling +} + +// Quick view of process detailed information------------------------------------------------------------- +int dlgViewProcess(){ + string processes[]; + string details[]; + string saved_processes = cfgget(ULP_NAME+".saved"); //verify if there is string! + string message = ""; + + strsplit(processes, saved_processes, '\v'); + strsplit(details, processes[process_index], ';'); + /* + index 0 -> process_name + index 1 -> process_observations //observations displayed on first window + index 3 -> board_type //board_type: + // 0 -> single top + // 1 -> single bottom + // 2 -> double side + index 4 -> copper_width //copper_width + index 5 -> pcb_width //pcb_width + index 6 -> milling_topology //milling_topology: + // 0 -> Simple mill + // 1 -> Contorn mill + // 2 -> Isolation rubout + // 3 -> Complete rubout + index 7 -> end_mill + index 8 -> rubout_mill + index 9 -> overlap_isolation + index 10 -> overlap_rubout + index 11 -> drilling_topology//drilling_topology: + // 0 -> Interpolate holes + // 1 -> Drillset + index 12 -> drilling_mill + index 13 -> pad_drill//pad_drill + index 14 -> via_drill//via_drill + index 15 -> holes_drill//holes_drill + index 16 -> outilne_mill//mill bit to cut the outline + index 17 -> outline_spacer//the space to keep the board fixed after milling + */ + switch(details[3][0]){ //decode values for board type + case '0': details[3] = "Top Layer";break; + case '1': details[3] = "Bottom Layer";break; + case '2': details[3] = "Double face";break; + } + details[4] = details[4] + "mm"; + details[5] = details[5] + "mm"; + switch(details[6][0]){ //decode values for milling topology + case '0': details[6] = "Simple mill"; + details[8] = "none"; + details[9] = "none"; + details[10] = "none"; + break; + case '1': details[6] = "Contorn mill"; + details[8] = "none"; + details[9] = "none"; + details[10] = "none"; + break; + case '2': details[6] = "Isolation rubout"; + details[8] = details[7] + "mm"; + details[9] = details[8] + "%"; + details[10] = "none"; + break; + case '3': details[6] = "Complete rubout"; + details[8] = details[7] + "mm"; + details[9] = details[8] + "%"; + details[10] = details[9] + "%"; + break; + } + details[7] = details[7] + "mm"; + switch(details[11][0]){ //decode values for milling topology + case '0': details[11] = "Interpolate holes"; + details[12] = details[11] + "mm"; + details[13] = "none"; + details[14] = "none"; + details[15] = "none"; + break; + case '1': details[11] = "Drillset"; + details[12] = "none"; + details[13] = details[12] + "mm"; + details[14] = details[13] + "mm"; + details[15] = details[14] + "mm"; + break; + } + details[16] = details[16] + "mm"; + details[17] = details[17] + "mm"; + sprintf(message,"\ + Name = %s\n\ + Observation = %s\n\ + Board type = %s\n\ + Copper width = %s\n\ + PCB width = %s\n\ + Milling topology = %s\n\ + End mill = %s\n\ + Rubout mill = %s\n\ + Overlap isolation = %s\n\ + Overlap rubout = %s\n\ + Drilling topology = %s\n\ + Drilling mill = %s\n\ + Pad drill = %s\n\ + Via drill = %s\n\ + Holes drill = %s\n\ + Outline mill = %s\n\ + Outline spacer = %s\n" + ,details[0], details[1], details[3], details[4], details[5], details[6], details[7], details[8], details[9], details[10], details[11], details[12], details[13], details[14], details[15], details[16], details[17]); + dlgMessageBox(message); + return 1; +} + +// Here shoud run the program to generate all files------------------------------------------------------- +int generateFiles(){ + dlgMessageBox("Here the code runs and create the output files"); + return 1; +} + +// Read all process saved so far and return an information string about all currently stored process--------------- +string retrieveProcessesInformation(){ + string processes[]; + string single_process[]; + string saved_processes = cfgget(ULP_NAME+".saved"); //verify if there is string! + string information = ""; // Informations sown at the first window "Name\Layer\Output File\Last modified\Observations" + string layer; + + //the result i will have one more entry than the real number, + //because every time we save we write '\v' at the end, + //thats the reason to add "-i" after spliting the string + int datasize = strsplit(processes, saved_processes, '\v')-2; + + for( int i = 0; i<=datasize; i++){ //save all memory entries into volatile variables + + //split single processes to know individual data of each process + strsplit(single_process, processes[i], ';'); + + //create machine vector, used to display all saved processes at the dlgChooseProcess + // address 0 -> Name + // address 0 -> Layer + // address 0 -> Output File + // address 2 -> Last modified (date it was saved) + // address 1 -> Observations + switch (single_process[3][0]){ //decode the layer saved + case '0': layer = "Top"; break; + case '1': layer = "Bottom"; break; + case '2': layer = "Double side"; break; + } + information = information + single_process[0] + '\t' + layer + '\t'+ " " + '\t'+ single_process[2] + '\t' + single_process[1]; + if(i"; + string image_spacer = ""; + + int window = dlgDialog("Step 7 of 7: Set the outline milling") { + dlgLabel("To properly cut your outline, configure the following:"); + dlgSpacing(10); + dlgStretch(1); + dlgGroup("Configure the diameter and space [mm]:") { + dlgGridLayout { + dlgCell(0, 0) {dlgStretch(1);dlgLabel("Mill bit diameter:");dlgStretch(1);} + dlgCell(1, 0) {dlgStretch(1);dlgRealEdit(outilne_mill, 0.00, 5.00); dlgLabel("mm");dlgStretch(1);} + dlgCell(2, 0) {dlgStretch(1); dlgLabel(image_diameter); dlgStretch(1); } + + dlgCell(0, 1) {dlgStretch(1);dlgLabel("Space to avoid the board to completely cut:");dlgStretch(1);} + dlgCell(1, 1) {dlgStretch(1);dlgRealEdit(outline_spacer, 0.00, 20.00); dlgLabel("mm");dlgStretch(1);} + dlgCell(2, 1) {dlgStretch(1); dlgLabel(image_spacer); dlgStretch(1);} + } + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(8);} //return 3 to go to back to step 1 + dlgStretch(1); + dlgPushButton("+Finish"){ dlgAccept(1); saveNewProcess(index);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + //return window; + return 0; //to close wizard after finishing it +} + +// Create process step 6 - Option drill set--------------------------------------------------------------- +// Ask what are the drills +int dlgSetDrill(){ + string image = ""; + + int window = dlgDialog("Step 6 of 7: Set the drills") { + dlgLabel("You selected drill toolset:"); + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgGroup("Set the diameter of your tool(s) [mm]") { + dlgGridLayout { + dlgCell(0, 0) dlgLabel("Drilling pads:"); + dlgCell(0, 1) {dlgRealEdit(pad_drill, 0.00, 9.00); dlgLabel("mm");dlgStretch(1);} + dlgCell(1, 0) dlgLabel("Drilling vias:"); + dlgCell(1, 1) {dlgRealEdit(via_drill, 0.00, 9.00); dlgLabel("mm");dlgStretch(1);} + dlgCell(2, 0) dlgLabel("Drilling single holes:"); + dlgCell(2, 1) {dlgRealEdit(holes_drill, 0.00, 9.00); dlgLabel("mm");dlgStretch(1);} + } + } + dlgStretch(1); + dlgLabel(image, 1); + dlgStretch(1); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(5);} //return 4 to go to back to step 4 + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(7);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 6 - Option mill interpolation------------------------------------------------------ +// Select the mill tool for rubout +int dlgSetDillingMill(){ + + int window = dlgDialog("Step 6 of 7: Set the milling tool size") { + dlgLabel("You selected interpolated holes:"); + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgGroup("Set the diameter of your tool(s) [mm]") { + dlgGridLayout { + dlgCell(0, 0) dlgLabel("Endmill tool:"); + dlgCell(0, 1) {dlgRealEdit(drilling_mill, 0.00, 9.00); dlgLabel("mm");dlgStretch(1);} + } + } + dlgStretch(1); + dlgLabel(""); + dlgStretch(1); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(5);} //return 3 to go to back to step 1 + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(7);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 5---------------------------------------------------------------------------------- +// Ask to the user the strategy for drilling +int dlgDrillingStrategy(){ + + string image; + + switch(drilling_topology){ //This is necessary if the iser cames back and foward, to assume the first image + case 0: {image = "";break;} + case 1: {image = "";break;} + } + + int window = dlgDialog("Step 5 of 7: Milling traces strategy") { + dlgHBoxLayout { + dlgLabel("Set your drilling method according to the following options:"); + dlgSpacing(100); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgGroup("What will be your milling strategy?") { + dlgRadioButton("Interpolate holes using a milling bit to do all work", drilling_topology){ + image = ""; + dlgRedisplay(); + } + dlgRadioButton("Use actual drills instead of milling bits, it will \nallow to select three sizes, one for pads, other for \nvias and finally a third to single holes", drilling_topology){ + image = ""; + dlgRedisplay(); + } + } + dlgStretch(1); + dlgLabel(image, 1); //parameter one means this label can update. + dlgStretch(1); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(4);} //return 4 to go to back to step 4 + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(6);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 4---------------------------------------------------------------------------------- +// Argument selected define if there is only one endmill or an endmill plus a rubout +// selected = 0 -> Simple mill +// selected = 1 -> Contorn mill +// selected = 2 -> Isolation rubout +// selected = 3 -> Complete rubout +// Ask to the user the layer and toolset for endmilling process +int dlgSetEndmill(int selected){ + string image; + string image_ovlp_isolation = ""; + string image_ovlp_rubout = ""; + string mode; + + switch(selected){ + case 0: image = ""; + mode = "simple mill"; + break; + case 1: image = ""; + mode = "contorn mill"; + break; + case 2: image = ""; + mode = "isolation rubout"; + break; + case 3: image = ""; + mode = "complete rubout"; + break; + } + + int window = dlgDialog("Step 4 of 7: Set the milling tool size") { + dlgLabel("You selected "+mode+"."); + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgGroup("Set the diameter of your tool(s) [mm]") { + dlgGridLayout { + dlgCell(0, 0) dlgLabel("Endmill tool:"); + dlgCell(0, 1) {dlgRealEdit(end_mill, 0.00, 9.00); dlgLabel("mm");dlgStretch(1);} + if(selected > 1){ + dlgCell(1, 0) dlgLabel("Cutting and drilling tool:"); + dlgCell(1, 1) {dlgRealEdit(rubout_mill, 0.00, 9.00);dlgLabel("mm");dlgStretch(1);} + } + } + } + dlgStretch(1); + dlgLabel(image, 1); + dlgStretch(1); + } + dlgSpacing(10); + dlgStretch(1); + if(selected > 1){ + dlgGroup("Configure the overlap [%]:") { + dlgGridLayout { + dlgCell(0, 0) {dlgStretch(1);dlgLabel("Overlap when milling the isolation:");dlgStretch(1);} + dlgCell(1, 0) {dlgStretch(1);dlgIntEdit(overlap_isolation, 0, 99); dlgLabel("%");dlgStretch(1);} + dlgCell(2, 0) {dlgStretch(1); dlgLabel(image_ovlp_isolation, 1); dlgStretch(1); } + if(selected > 2){ + dlgCell(0, 1) {dlgStretch(1);dlgLabel("Overlap when milling the rubout:");dlgStretch(1);} + dlgCell(1, 1) {dlgStretch(1);dlgIntEdit(overlap_rubout, 0, 99); dlgLabel("%");dlgStretch(1);} + dlgCell(2, 1) {dlgStretch(1); dlgLabel(image_ovlp_rubout, 1); dlgStretch(1);} + } + } + } + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(3);} //return 3 to go to back to step 1 + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(5);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 3---------------------------------------------------------------------------------- +// Ask to the user about rubout and other options +int dlgMillingTracesStrategy(){ + + string image; + + switch(milling_topology){ //This is necessary if the iser cames back and foward, to assume the first image + case 0: {image = "";break;} + case 1: {image = "";break;} + case 2: {image = "";break;} + case 3: {image = "";break;} + } + + int window = dlgDialog("Step 3 of 7: Milling traces strategy") { + dlgHBoxLayout { + dlgLabel("Select your milling strategy according to the following options:"); + dlgSpacing(100); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgGroup("What will be your milling strategy?") { + dlgRadioButton("Simple milling - fastest", milling_topology){ + image = ""; + dlgRedisplay(); + } + dlgRadioButton("Contorn mill", milling_topology){ + image = ""; + dlgRedisplay(); + } + dlgRadioButton("Isolation rubout", milling_topology){ + image = ""; + dlgRedisplay(); + } + dlgRadioButton("Complete rubout - slowest", milling_topology){ + image = ""; + dlgRedisplay(); + } + } + dlgStretch(1); + dlgLabel(image, 1); //parameter one means this label can update. + dlgStretch(1); + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(2);} + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(4);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 2---------------------------------------------------------------------------------- +// Set which layer want to mill and what are the rought board dimensions +int dlgBoardProperties(){ + + string note1; + string image; + + switch(board_type){ //This is necessary if the iser cames back and foward, to assume the first image + case 0: {image = "";break;} + case 1: {image = "";break;} + case 2: {image = "";break;} + } + + int window = dlgDialog("Step 2 of 7: Board properties") { + dlgHBoxLayout { + dlgLabel("Select what kind of board you're willing to mill, as well as it's dimensions:"); + dlgSpacing(100); + } + dlgSpacing(10); + dlgStretch(1); + dlgGroup("Which layer you want to mill?") { + dlgRadioButton("Single layer on top - if you routed only in red", board_type){ + image = ""; + note1 = ""; + dlgRedisplay(); + } + dlgRadioButton("Single layer on bottom - if you routed only in blue", board_type){ + image = ""; + note1 = ""; + dlgRedisplay(); + } + dlgRadioButton("Double sided - if you routed in both red and blue", board_type){ + image = ""; + note1 = "*Both sides have the same width [b]"; + dlgRedisplay(); + } + dlgLabel(image, 1); //parameter one means this label can update. + } + dlgSpacing(10); + dlgStretch(1); + dlgGroup("Set the size of your rought board (mm)") { + dlgHBoxLayout { + dlgGridLayout { + dlgCell(0, 0) dlgLabel("Board width [a]:"); + dlgCell(0, 1) dlgRealEdit(pcb_width , 0.00, 9.00); + dlgCell(1, 0) dlgLabel("Copper width[b]:"); + dlgCell(1, 1) dlgRealEdit(copper_width , 0.00, 9.00); + dlgCell(1, 3) dlgLabel(note1, 1); //parameter one means this label can update. + } + dlgStretch(1); + } + } + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgPushButton("Back"){ dlgAccept(1);} //return 3 to go to back to step 1 + dlgStretch(1); + dlgPushButton("+Next"){ dlgAccept(3);} //return 3 to go to step 3 + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process step 1---------------------------------------------------------------------------------- +// Welcome message and requests new name and observations +int dlgAddProcess(){ + int window = dlgDialog("Step 1 of 7: Creating a new process") { + dlgLabel("Welcome to your PCB making process wizard!"); + dlgSpacing(5); + + dlgLabel( "Here you'll configure how you'd like to create your fabrication \nfiles, which layer, what kind of tools and so on. Later on you'll \nbe able to easily execute your previously setted process. \nYou can also create one process for each situation, for instance one \nwithout rubout to be faster or another only using a top Layer.\nSomething also very interesting is selecting your toolset based on \nyour actual stock.\nHave fun!"); + + dlgSpacing(10); + dlgStretch(1); + dlgLabel("What is the name of this new process?"); + dlgStringEdit(process_name); + dlgSpacing(10); + dlgStretch(1); + + dlgLabel("Do you have any observations to highlight about this new process? \n* This observations will be seing from the process selection \nwindow, as soon as you execute this ulp"); + + dlgStringEdit(process_observations); + dlgSpacing(10); + dlgStretch(1); + dlgHBoxLayout { + dlgStretch(1); + dlgPushButton("+Next") dlgAccept(2); //return 2 to go to step 2 + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +// Create process state machine, navigate through menus +// This function was only necessary because the language doesn't allow declaring only the functions +// state = 0 -> get out of creation wizard +// state = 1 -> Welcome message and requests new name and observations +// state = 2 -> Set which layer want to mill and what are the rought board dimensions +// state = 3 -> Ask to the user about rubout and other options +// state = 4 -> Ask to the user the layer and toolset for endmilling process +// state = 5 -> Ask to the user the strategy for drilling +// state = 6 -> Ask what are the drills +// State machine to navigate throug New process windows--------------------------------------------------------------- +int dlgNewProcess(int index){ //index to be edited or -1 to create a new process + int state=1; + + if(index == -1){//Clean all process varialbes to default value + process_name = "My new Process"; + process_observations = "Best process for my PCBs, made today"; + board_type = 1; + copper_width = 0.10; + pcb_width = 0.70; + milling_topology = 0; + end_mill = 0.40; + rubout_mill = 0.70; + overlap_isolation = 20; + overlap_rubout = 20; + drilling_topology = 0; + drilling_mill = 0.70; + pad_drill = 0.8; + via_drill = 0.8; + holes_drill = 0.8; + outilne_mill = 2.0; //mill bit to cut the outline + outline_spacer = 10.0; //the space to keep the board fixed after milling + } + else{ + retrieveDetails(index); + } + + while(state){ + switch(state){ + case 1: {state = dlgAddProcess();break;} + case 2: {state = dlgBoardProperties();break;} + case 3: {state = dlgMillingTracesStrategy(); break;} + case 4: {state = dlgSetEndmill(milling_topology); break;} + case 5: {state = dlgDrillingStrategy();break;} + case 6: { + if(drilling_topology == 0) state = dlgSetDillingMill(); + else state = dlgSetDrill(); + break; + } + case 7: {state = dlgOutlineStrategy(index); break;} + case 0: {state = 0; break;} + } + } + return 1; +} + +// Ask to the user what is the machine +int dlgChooseProcess(){ + string info[]; + string aux[]; + + strsplit(info,retrieveProcessesInformation(),'\n'); + + int window = dlgDialog("Let's prototype this board!") { + dlgHBoxLayout { + dlgLabel("Select the process you want to use:"); + dlgSpacing(80); + } + dlgListView("Name\tLayer\tOutput File\tLast modified\tObservations", info, process_index){ dlgAccept(1); dlgViewProcess();} //3 means it will sotr by date as default + dlgHBoxLayout { + dlgPushButton("Exclude"){ + strsplit(aux, info[process_index], '\t'); + if(dlgMessageBox("Are you sure to delete " + aux[0] +"?", "Yes", "No") == 0) //print a confirmation message containing the process name + dlgAccept(4); + else + dlgAccept(1); + } + dlgPushButton("Edit"){ dlgAccept(5);} + dlgPushButton("Add"){ dlgAccept(3);} + dlgSpacing(80); + dlgPushButton("+Run"){ dlgAccept(2);} + dlgPushButton("-Cancel") dlgReject(0); + } + }; + return window; +} + +//Has the main state machine +// state = 0 -> get out of ulp +// state = 1 -> Choose process screen +// state = 2 -> Generate output files +// state = 3 -> Add process +// state = 4 -> Exclude entry +// state = 5 -> Edit mode +void main(){ + int state=1; + while(state){ + switch(state){ + case 1: state = dlgChooseProcess(); break; + case 2: state = generateFiles(); break; + case 3: state = dlgNewProcess(-1); break; //-1 means a new process with default data + case 4: state = dlgExcludeProcess(process_index); break; + case 5: state = dlgNewProcess(process_index); break; + } + } +} \ No newline at end of file diff --git a/mill-outlines-dependencies/mill-outlines-bott.bmp b/mill-outlines-dependencies/mill-outlines-bott.bmp new file mode 100644 index 0000000..23c5901 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-bott.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-dim-down.bmp b/mill-outlines-dependencies/mill-outlines-cnc-dim-down.bmp new file mode 100644 index 0000000..bf3200b Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-dim-down.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-down.bmp b/mill-outlines-dependencies/mill-outlines-cnc-down.bmp new file mode 100644 index 0000000..16c8897 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-down.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-drill-down.bmp b/mill-outlines-dependencies/mill-outlines-cnc-drill-down.bmp new file mode 100644 index 0000000..7802453 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-drill-down.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-drill-safety.bmp b/mill-outlines-dependencies/mill-outlines-cnc-drill-safety.bmp new file mode 100644 index 0000000..7802453 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-drill-safety.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-fastvelocity.bmp b/mill-outlines-dependencies/mill-outlines-cnc-fastvelocity.bmp new file mode 100644 index 0000000..488481a Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-fastvelocity.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-parkposition.bmp b/mill-outlines-dependencies/mill-outlines-cnc-parkposition.bmp new file mode 100644 index 0000000..8f6821e Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-parkposition.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-rpm.bmp b/mill-outlines-dependencies/mill-outlines-cnc-rpm.bmp new file mode 100644 index 0000000..038b664 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-rpm.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-safety.bmp b/mill-outlines-dependencies/mill-outlines-cnc-safety.bmp new file mode 100644 index 0000000..36ad043 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-safety.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-up.bmp b/mill-outlines-dependencies/mill-outlines-cnc-up.bmp new file mode 100644 index 0000000..225c4c7 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-up.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc-velocity.bmp b/mill-outlines-dependencies/mill-outlines-cnc-velocity.bmp new file mode 100644 index 0000000..bec12bc Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc-velocity.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-cnc.bmp b/mill-outlines-dependencies/mill-outlines-cnc.bmp new file mode 100644 index 0000000..00f2245 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-cnc.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-coppdim.bmp b/mill-outlines-dependencies/mill-outlines-coppdim.bmp new file mode 100644 index 0000000..802ff0a Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-coppdim.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-dimension-contours.bmp b/mill-outlines-dependencies/mill-outlines-dimension-contours.bmp new file mode 100644 index 0000000..032a07a Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-dimension-contours.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-drc-info.bmp b/mill-outlines-dependencies/mill-outlines-drc-info.bmp new file mode 100644 index 0000000..c6566f9 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-drc-info.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-drill-velocity.bmp b/mill-outlines-dependencies/mill-outlines-drill-velocity.bmp new file mode 100644 index 0000000..726037c Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-drill-velocity.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-drill.bmp b/mill-outlines-dependencies/mill-outlines-drill.bmp new file mode 100644 index 0000000..bbf8457 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-drill.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-eagle.bmp b/mill-outlines-dependencies/mill-outlines-eagle.bmp new file mode 100644 index 0000000..2abf5f0 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-eagle.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-free.bmp b/mill-outlines-dependencies/mill-outlines-free.bmp new file mode 100644 index 0000000..515cf1f Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-free.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-get_board_zero.bmp b/mill-outlines-dependencies/mill-outlines-get_board_zero.bmp new file mode 100644 index 0000000..1a0218c Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-get_board_zero.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-hole.bmp b/mill-outlines-dependencies/mill-outlines-hole.bmp new file mode 100644 index 0000000..24d1c85 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-hole.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-hpgl.bmp b/mill-outlines-dependencies/mill-outlines-hpgl.bmp new file mode 100644 index 0000000..ab60d25 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-hpgl.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-inner-polygon-contour.bmp b/mill-outlines-dependencies/mill-outlines-inner-polygon-contour.bmp new file mode 100644 index 0000000..98e4afb Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-inner-polygon-contour.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-inner-polygon-contour1.bmp b/mill-outlines-dependencies/mill-outlines-inner-polygon-contour1.bmp new file mode 100644 index 0000000..6e06022 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-inner-polygon-contour1.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-inside-milling.bmp b/mill-outlines-dependencies/mill-outlines-inside-milling.bmp new file mode 100644 index 0000000..0ef3384 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-inside-milling.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-isel.bmp b/mill-outlines-dependencies/mill-outlines-isel.bmp new file mode 100644 index 0000000..be6a44b Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-isel.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-isol-pour.bmp b/mill-outlines-dependencies/mill-outlines-isol-pour.bmp new file mode 100644 index 0000000..09cfd71 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-isol-pour.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-mildimension.bmp b/mill-outlines-dependencies/mill-outlines-mildimension.bmp new file mode 100644 index 0000000..d1562bd Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-mildimension.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-mirror-nc-bottom.bmp b/mill-outlines-dependencies/mill-outlines-mirror-nc-bottom.bmp new file mode 100644 index 0000000..4acdc8c Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-mirror-nc-bottom.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-mirror-nc-top.bmp b/mill-outlines-dependencies/mill-outlines-mirror-nc-top.bmp new file mode 100644 index 0000000..923af5d Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-mirror-nc-top.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-mirror.bmp b/mill-outlines-dependencies/mill-outlines-mirror.bmp new file mode 100644 index 0000000..a6c160c Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-mirror.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-multi-dimension.bmp b/mill-outlines-dependencies/mill-outlines-multi-dimension.bmp new file mode 100644 index 0000000..453ec17 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-multi-dimension.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-no-blowup.bmp b/mill-outlines-dependencies/mill-outlines-no-blowup.bmp new file mode 100644 index 0000000..26f18cc Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-no-blowup.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-nomir.bmp b/mill-outlines-dependencies/mill-outlines-nomir.bmp new file mode 100644 index 0000000..b0e64b2 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-nomir.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-null_reference-drilling.bmp b/mill-outlines-dependencies/mill-outlines-null_reference-drilling.bmp new file mode 100644 index 0000000..0d42ed8 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-null_reference-drilling.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-null_reference.bmp b/mill-outlines-dependencies/mill-outlines-null_reference.bmp new file mode 100644 index 0000000..1a3d888 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-null_reference.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-ovrlpfp.bmp b/mill-outlines-dependencies/mill-outlines-ovrlpfp.bmp new file mode 100644 index 0000000..8eb4e96 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-ovrlpfp.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-ovrlppp.bmp b/mill-outlines-dependencies/mill-outlines-ovrlppp.bmp new file mode 100644 index 0000000..7b7c60c Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-ovrlppp.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-plus-text.bmp b/mill-outlines-dependencies/mill-outlines-plus-text.bmp new file mode 100644 index 0000000..e3cdf24 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-plus-text.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-pour.bmp b/mill-outlines-dependencies/mill-outlines-pour.bmp new file mode 100644 index 0000000..09cfd71 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-pour.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-question.bmp b/mill-outlines-dependencies/mill-outlines-question.bmp new file mode 100644 index 0000000..03038de Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-question.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-resolution.bmp b/mill-outlines-dependencies/mill-outlines-resolution.bmp new file mode 100644 index 0000000..6ee483a Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-resolution.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-script.bmp b/mill-outlines-dependencies/mill-outlines-script.bmp new file mode 100644 index 0000000..a180365 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-script.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-sec-isol.bmp b/mill-outlines-dependencies/mill-outlines-sec-isol.bmp new file mode 100644 index 0000000..be1c641 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-sec-isol.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-sec-isolate.bmp b/mill-outlines-dependencies/mill-outlines-sec-isolate.bmp new file mode 100644 index 0000000..f5e3c14 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-sec-isolate.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-spacing.bmp b/mill-outlines-dependencies/mill-outlines-spacing.bmp new file mode 100644 index 0000000..a2aa8d4 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-spacing.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-top.bmp b/mill-outlines-dependencies/mill-outlines-top.bmp new file mode 100644 index 0000000..12d690b Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-top.bmp differ diff --git a/mill-outlines-dependencies/mill-outlines-via.bmp b/mill-outlines-dependencies/mill-outlines-via.bmp new file mode 100644 index 0000000..32d66c4 Binary files /dev/null and b/mill-outlines-dependencies/mill-outlines-via.bmp differ diff --git a/mill-outlines.ulp b/mill-outlines.ulp index 2c67bf9..74e4450 100644 --- a/mill-outlines.ulp +++ b/mill-outlines.ulp @@ -226,7 +226,7 @@ Scalierung bei HPGL vorwahl 2/5/10 ** */ string Version = "Version 6.2.3"; // 2016-06-07 support@cadsoft.de - +string DEPENDENCIES = "mill-outlines-dependencies"; string Header = "Outlines generator for PCB milling."; int test = 0; // Flag zum debuggen @@ -3831,7 +3831,7 @@ void layer_info(void) { Infotext = INFOtext1_on + "

" + INFOtext16_on; } else if (!SelectedLayer1 && !SelectedLayer16) { - info = ""; + info = ""; Infotext = "Kein Layer gewählt!"; } else if (SelectedLayer1 && !SelectedLayer16) { @@ -4184,46 +4184,46 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { if (fault) exit("CLASS"); } - Showpic[0] = ""; - Showpic[1] = ""; - Showpic[2] = ""; - Showpic[3] = ""; - Showpic[4] = ""; - Showpic[5] = ""; - Showpic[6] = ""; - Showpic[7] = ""; - Showpic[8] = ""; - Showpic[9] = ""; - Showpic[10] = ""; - Showpic[11] = ""; - Showpic[12] = ""; - Showpic[13] = ""; - Showpic[14] = ""; - Showpic[15] = ""; - Showpic[16] = ""; - Showpic[17] = ""; - Showpic[18] = ""; - Showpic[19] = ""; - Showpic[20] = ""; - Showpic[21] = ""; - Showpic[22] = ""; - Showpic[23] = ""; - Showpic[24] = ""; - Showpic[25] = ""; - Showpic[26] = ""; - Showpic[27] = ""; - Showpic[28] = ""; - Showpic[29] = ""; - Showpic[30] = ""; - Showpic[31] = ""; - Showpic[32] = ""; - Showpic[33] = ""; // 2011-02-07 Nullpunkt des Board = Maschinennullpunkt - Showpic[34] = ""; - Showpic[35] = ""; - Showpic[36] = ""; // 2010-01-25 inner/outer polygon contour - Showpic[37] = ""; - Showpic[38] = ""; // 2011-02-02 Auflösung Vor- Nachkommastellen - Showpic[39] = ""; // 2011-02-11 + Showpic[0] = ""; + Showpic[1] = ""; + Showpic[2] = ""; + Showpic[3] = ""; + Showpic[4] = ""; + Showpic[5] = ""; + Showpic[6] = ""; + Showpic[7] = ""; + Showpic[8] = ""; + Showpic[9] = ""; + Showpic[10] = ""; + Showpic[11] = ""; + Showpic[12] = ""; + Showpic[13] = ""; + Showpic[14] = ""; + Showpic[15] = ""; + Showpic[16] = ""; + Showpic[17] = ""; + Showpic[18] = ""; + Showpic[19] = ""; + Showpic[20] = ""; + Showpic[21] = ""; + Showpic[22] = ""; + Showpic[23] = ""; + Showpic[24] = ""; + Showpic[25] = ""; + Showpic[26] = ""; + Showpic[27] = ""; + Showpic[28] = ""; + Showpic[29] = ""; + Showpic[30] = ""; + Showpic[31] = ""; + Showpic[32] = ""; + Showpic[33] = ""; // 2011-02-07 Nullpunkt des Board = Maschinennullpunkt + Showpic[34] = ""; + Showpic[35] = ""; + Showpic[36] = ""; // 2010-01-25 inner/outer polygon contour + Showpic[37] = ""; + Showpic[38] = ""; // 2011-02-02 Auflösung Vor- Nachkommastellen + Showpic[39] = ""; // 2011-02-11 info = Showpic[10]; zinfo = Showpic[24]; zInfotext = Z_Machine_Menu; @@ -4325,7 +4325,7 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { dlgCell( 1, 1) dlgHBoxLayout { dlgLabel("Layer "); dlgCheckBox("Top ", SelectedLayer1) { - info = ""; + info = ""; layer_info(); } dlgStretch(1); @@ -4334,7 +4334,7 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { dlgCell( 1, 3) dlgHBoxLayout { dlgLabel("plus Layer"); dlgComboBox(plus_Text, SelectedPlusLayerTop) { - info = ""; + info = ""; Infotext = TextInfoPlus; } dlgStretch(1); @@ -4342,8 +4342,8 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { dlgCell( 2, 0) dlgHBoxLayout { dlgCheckBox("&Mirror ", Mirror_On) { - if (Mirror_On) info = ""; - else info = ""; + if (Mirror_On) info = ""; + else info = ""; mirror_info(); } dlgStretch(1); @@ -4352,7 +4352,7 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { dlgCell( 2, 1) dlgHBoxLayout { dlgLabel("Layer "); dlgCheckBox("Bottom ", SelectedLayer16) { - info = ""; + info = ""; layer_info(); } dlgStretch(1); @@ -4361,7 +4361,7 @@ if ( !InPass2 && !InPassPour && !InPassOutmill && !InPassDimensionPoly) { dlgCell( 2, 3) dlgHBoxLayout { dlgLabel("plus Layer"); dlgComboBox(plus_Text, SelectedPlusLayerBot) { - info = ""; + info = ""; Infotext = TextInfoPlus; } dlgStretch(1); @@ -5053,7 +5053,7 @@ if (InPassDimensionPoly) { // ## first run calculate the real outline ## dlgDialog("Contour error") { // 2010-01-20 dlgLabel(i1); - dlgLabel(""); + dlgLabel(""); dlgLabel(i2); dlgHBoxLayout { dlgStretch(1); @@ -5339,7 +5339,7 @@ if (InPassOutmill) { // ## fourth run, drill holes, milling big holes and milli else { if (MillToolFree) { // 2013-03-05 nur wenn Tool#2 blow-up benutzt string polerror; - string polerrorimg = ""; + string polerrorimg = ""; sprintf(polerror, "ERROR: %d VIA, %d positive und %d negative Konturen im Polygon %s

" + "Überprüfen Sie, ob außerhalb der Boardkontur, Texte, Logos oder sonstige Elemente im Top oder Bottom Layer " + "platziert sind. Entweder entfernen Sie diese Elemente oder legen diese in einen nicht Kupferlayer.
" + @@ -5445,4 +5445,4 @@ if (InPassOutmill) { // ## fourth run, drill holes, milling big holes and milli Cmd+=g; exit(Cmd); } -} \ No newline at end of file +}