#usage "Data generation for mounting machines

\n" "This ULP generates files for top and bottom layers " "wich can be used with mounting machines. " "Use x and y coordinates of the origin points (units: mm) of the SMD elements" "and packages from defined lbr." "The syntax of the output data looks like this:

" "Name x-coord y-coord Rotation Value Package

" "Author: support@cadsoft.de" string Version = "1.0.2"; // 2013-10-25 no duplicate listing // 2013-10-16 if(C.smd) ... delete if C.smd.layer alf@cadsoft.de // now Display exported data string def_lbr = "marks"; // define a library name to export also place coordinates // 2006-04-18 alf@cadsoft.de char Tab = '\t'; // ';'; board(B) { // Get filename string fileNameTop = dlgFileSave("Save File", filesetext(B.name, ".mnt"), "*.mnt"); if (fileNameTop == "") exit(0); string fileNameBot = dlgFileSave("Save File", filesetext(B.name, ".mnb"), "*.mnb"); if (fileNameBot == "") exit(0); int wasSmd = 0; output(fileNameBot, "wt") ; output(fileNameTop, "wt") { B.elements(E) { if (strlwr(E.package.library) == def_lbr) { // 2013-10-25 if (E.mirror == 0) { printf("%s%c%.4f%c%.4f%c%.1f%c%s%c%s\n", E.name, Tab, u2mm(E.x), Tab, u2mm(E.y), Tab, E.angle, Tab, E.value, Tab, E.package.name); } else { output(fileNameBot, "at") { printf("%s%c%.4f%c%.4f%c%.1f%c%s%c%s\n", E.name, Tab, u2mm(E.x), Tab, u2mm(E.y), Tab, E.angle, Tab, E.value, Tab, E.package.name); } } } else { E.package.contacts(C) { if (C.smd ) { // && C.smd.layer == 1) { if (E.mirror == 0) { printf("%s%c%.4f%c%.4f%c%.1f%c%s%c%s\n", E.name, Tab, u2mm(E.x), Tab, u2mm(E.y), Tab, E.angle, Tab, E.value, Tab, E.package.name); } else { output(fileNameBot, "at") { printf("%s%c%.4f%c%.4f%c%.1f%c%s%c%s\n", E.name, Tab, u2mm(E.x), Tab, u2mm(E.y), Tab, E.angle, Tab, E.value, Tab, E.package.name); } } break; } } } } } string mt, mb; int cntt = fileread(mt, fileNameTop); int cntb = fileread(mb, fileNameBot); dlgDialog("Mount data") { dlgHBoxLayout dlgSpacing(500); dlgLabel("Top place"); dlgTextView(mt); dlgLabel("Bottom place"); dlgTextView(mb); dlgHBoxLayout { dlgStretch(1); dlgPushButton("OK") dlgAccept(); dlgStretch(1); } }; }