/* * This EAGLE User Language Program prints the netlist with x,y locations of pads * of a board or net list of schematic. */ if (board) board(B) { output(filesetext(B.name, ".tst")) { printf("%s\n\n", EAGLE_SIGNATURE); printf("Netlist with pin locations exported from %s at %s\n\n", B.name, t2string(time())); printf("%-*s %-*s %s %s %s\n", SIGNAL_NAME_LENGTH, "Net", ELEMENT_NAME_LENGTH, "Part", "Pad"," x"," y"); B.signals(S) { numeric string Part[], Pad[]; real x[], y[]; int cnt = 0, index[]; S.contactrefs(C) { Part[cnt] = C.element.name; Pad[cnt] = C.contact.name; x[cnt] = u2mil(C.contact.x); y[cnt] = u2mil(C.contact.y); cnt++; } if (cnt) { sort(cnt, index, Part, Pad, x, y); printf("\n"); for (int i = 0; i < cnt; i++) printf("%-*s %-*s %s %f %f\n", SIGNAL_NAME_LENGTH, i ? "" : S.name, ELEMENT_NAME_LENGTH, Part[index[i]], Pad[index[i]], x[index[i]], y[index[i]]); } } } } if (schematic) schematic(SCH) { output(filesetext(SCH.name, ".NET")) { printf("%s\n\n", EAGLE_SIGNATURE); printf("Netlist exported from %s at %s\n\n", SCH.name, t2string(time())); printf("%-*s %-*s %s\n", NET_NAME_LENGTH, "Net", PART_NAME_LENGTH, "Part", "Pin"); SCH.nets(N) { numeric string Part[], Pin[]; int cnt = 0, index[]; N.pinrefs(P) { Part[cnt] = P.part.name; Pin[cnt] = P.pin.name; cnt++; } if (cnt) { sort(cnt, index, Part, Pin); printf("\n"); for (int i = 0; i < cnt; i++) printf("%-*s %-*s %s\n", NET_NAME_LENGTH, i ? "" : N.name, PART_NAME_LENGTH, Part[index[i]], Pin[index[i]]); } } } }