// DATA GENERATION FOR SMD GLUE DISPENSER EQUIPMENT // // 1. Define glue points in library as circles on tGlue layer. Use as many circles as // you like. If no circle is defined, one default point is used (center of wires // in tPlace layer). // 2. Run GLUEMARK.ULP to generate script file GLUEMARK.SCR. // 3. Execute GLUEMARK.SCR which draws circles on layers 111 and 112 // to mark glue points for smd packages on top or bottom layers // 4. Edit 111 + 112 if necessary (you can also add or delete circles) and then // use GLUEOUT.ULP to generate data for glue dispenser. GLUEOUT.ULP has to be // changed to get the data format wanted. // 5. Use GLUETOP.DAT and GLUEBOT.DAT for your dispenser. int issmd, gluedef, ontop; real xmin , xmax, ymin, ymax, x, y; void setgluepoint(UL_ELEMENT E){ gluedef = 0; E.package.circles(CI){ if (CI.layer == LAYER_TGLUE) { x = u2inch(CI.x); y = u2inch(CI.y); printf("Layer tGTest;\nCircle 0.016 (%f %f) (%f %f);\n", x, y, x+0.016, y); gluedef = 1; } if (CI.layer == LAYER_BGLUE) { x = u2inch(CI.x); y = u2inch(CI.y); printf("Layer bGTest;\nCircle 0.016 (%f %f) (%f %f);\n", x, y, x+0.016, y); gluedef = 1; } } xmin = u2inch(E.x); xmax = xmin; ymin = u2inch(E.y); ymax = ymin; if (gluedef == 0){ E.package.wires(W){ if (W.layer == LAYER_TPLACE) { ontop = 1; xmin = min(u2inch(W.x1),xmin); xmin = min(u2inch(W.x2),xmin); ymin = min(u2inch(W.y1),ymin); ymin = min(u2inch(W.y2),ymin); xmax = max(u2inch(W.x1),xmax); xmax = max(u2inch(W.x2),xmax); ymax = max(u2inch(W.y1),ymax); ymax = max(u2inch(W.y2),ymax); } if (W.layer == LAYER_BPLACE) { ontop = 0; xmin = min(u2inch(W.x1),xmin); xmin = min(u2inch(W.x2),xmin); ymin = min(u2inch(W.y1),ymin); ymin = min(u2inch(W.y2),ymin); xmax = max(u2inch(W.x1),xmax); xmax = max(u2inch(W.x2),xmax); ymax = max(u2inch(W.y1),ymax); ymax = max(u2inch(W.y2),ymax); } } x = (xmin+xmax)/2; y = (ymin+ymax)/2; if (ontop == 1) printf("LAYER tGTest;\nCircle 0.016 (%f %f) (%f %f);\n", x, y, x+0.016, y); if (ontop == 0) printf("LAYER bGTest;\nCircle 0.016 (%f %f) (%f %f);\n", x, y, x+0.016, y); } } output("gluemark.scr") { printf("Layer 111 tGTest;\n"); printf("Layer 112 bGTest;\n"); printf("Set Color_Layer 111 red;\n"); printf("Set Color_Layer 112 blue;\n"); printf("Grid inch;\n"); board(B){ B.elements(E) { issmd = 0; E.package.contacts(C) { if (C.smd) { issmd = 1; break; } } if (issmd) { // printf("Package: %s\n", E.package.name); setgluepoint(E); } } } }