#usage "Export descriptions of devices and packages to a script\n" "

" "Use this ULP to export the device and package descriptions " "of a library to a file." "

" "You can then edit this file with a text editor and read back " "changed descriptions with the SCRIPT command." "

" "Author: support@cadsoft.de" // THIS PROGRAM IS PROVIDED AS IS AND WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED string cmd = ""; string dev[]; string descript[]; string dest; int count = 0; int n = 0; // Find some path names --------- string ulp_path = ""; string eagle_path = ""; // certain only for EAGLE standard installation string scr_path = ""; // certain only for EAGLE standard installation string direntry[]; char c = '/'; int dirnr, j; int pos = strrchr(argv[0], c); if (pos >= 0) { ulp_path = strsub(argv[0], 0, pos + 1); eagle_path = ulp_path; eagle_path = strsub(eagle_path, 0, pos); int pos = strrchr(eagle_path, c); if (pos >= 0) { eagle_path = strsub(eagle_path, 0, pos + 1); dirnr = fileglob(direntry, eagle_path+"*"); scr_path = eagle_path; for (j; j<= dirnr; j++) { if (strrstr(direntry[j], "scr/") > 0) { scr_path = direntry[j]; } } } } //-------------------------------- string replacenewline(string nl) { string a[]; int n = strsplit(a, nl, '\n'); if (n > 0) { nl = ""; for (int x = 0; x < n - 1; x++) { nl += a[x] + "\\n"; } nl += a[x]; } return nl; } if (library) library(L) { L.devicesets(D) { count++; dev[count] = D.name; descript[count] = replacenewline(D.description); string h = ""; sprintf(h, "EDIT %s.dev ;\nDESCRIPT '%s'\n", dev[count], descript[count]); cmd += h; } L.packages(P) { count++; dev[count] = P.name; descript[count] = replacenewline(P.description); string h = ""; int l = strlen(dev[count]); string s = strsub(dev[count], 0, 2); string t = strsub(dev[count], 3, l); sprintf(h, "EDIT %s.pac ;\nDESCRIPT '%s'\n", dev[count], descript[count]); cmd += h; } cmd = "SET UNDO_LOG OFF;\n" + cmd + "SET UNDO_LOG ON;\n"; // EditBox dlgDialog("Descriptions") { dlgTextEdit(cmd); dlgHBoxLayout { dlgPushButton("+Ok") dlgAccept(); dlgPushButton("-Cancel Changes") dlgReject(); } }; // define destination path name // for a fixed destination, delete next line, uncomment the one after // the next line and edit it dest = dlgFileSave("Save Description File", scr_path+"descript.scr", "*.scr"); //dest = "c:/eagle/scr/descript.scr"; if (dest == "") exit(0); output(dest, "wt") { printf(cmd); } }