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" + "
"
+ " " + INFOtext16_on;
}
else if (!SelectedLayer1 && !SelectedLayer16) {
- info = " " +
"Ü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.";
+
+ 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 + "
";
+ 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, "
" +
@@ -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
+}