📄 import-ultiboard-ddf.ulp
字号:
case 0 :
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (rely) + (size/2),
u2mil(E.y) + relx - slen);
break;
case 90 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (rely) - slen,
u2mil(E.y) + (relx) - (size/2) );
break;
case 180 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) + (relx) + slen,
u2mil(E.y) + (rely) + (size/2));
break;
case 270 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - rely + slen,
u2mil(E.y) + relx + (size/2) );
break;
}
break;
case 180 :
switch(trotate) {
case 0 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (relx) - slen,
u2mil(E.y) - (rely) - (size/2) );
break;
case 90 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (relx) + (size/2),
u2mil(E.y) - (rely) - slen );
break;
case 180 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (relx) - slen,
u2mil(E.y) - (rely) - (size/2) );
break;
case 270 :
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) + (relx) - slen,
u2mil(E.y) + (rely) - (size/2) );
break;
}
break;
case 270 :
switch(trotate) {
case 0 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) + (rely) + (size/2),
u2mil(E.y) - (relx) - slen );
break;
case 90 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) + (rely) - slen,
u2mil(E.y) - relx - (size/2) );
break;
case 180 :
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) - (relx) + (size/2),
u2mil(E.y) + (rely) - slen);
break;
case 270 :
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("ROTATE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
printf("MOVE (%.2f %.2f) (%.2f %.2f);\n",
u2mil(T.x), u2mil(T.y),
u2mil(E.x) + rely + slen,
u2mil(E.y) - relx + (size/2) );
break;
}
break;
default : if(dlgMessageBox("Rotation only in 0, 90, 180, 270 drgree", "OK", "ESC") != 0) exit (0);
}
}
else dlgMessageBox( s[n+0] + "\nPackage und Textplatzhalter ungleiche Rotation", "OK");
}
else printf("DELETE (%.2f %.2f);\n", u2mil(T.x), u2mil(T.y) );
}
}
}
}
}
printf("DISPLAY 1 16 17 18 20 21 -23 49;\n");
printf("GRID LAST;\n");
printf("# WRITE;\n");
}
}
exit ("SCRIPT '" + scriptfile + "';\n");
}
void test(char cc) {
sprintf(st, "Caracter=>%c<\n", cc);
if (dlgMessageBox("Character =" + st, "&Yes", "&No") != 0) {
exit (0);
}
return ;
}
real val2mil(string val) {
return strtod(val) * xScale;
}
real v2mil(real val) {
return val * xScale;
}
string format(real rval) {
string fmt;
sprintf(fmt, "%.3f", rval);
return fmt;
}
void rwire( int netnr, int layer, real x1, real y1, real x2, real y2) {
string w;
if (netnr < 0) {
string h;
sprintf(h, "Netz#=%d\n", netnr);
dlgMessageBox(h, "OK");
}
cmdroute += "CHANGE LAYER " + refLayer[layer] + ";\n";
if(netname[netnr] != "") {
sprintf(w, "WIRE '%s' (%s %s) (%s %s);\n", netname[netnr],
format(v2mil(x1)), format(v2mil(y1)),
format(v2mil(x2)), format(v2mil(y2)) );
}
else {
sprintf(w, "WIRE (%s %s) (%s %s);\n",
format(v2mil(x1)), format(v2mil(y1)),
format(v2mil(x2)), format(v2mil(y2)) );
}
cmdroute += w;
return ;
}
void route(int layer, real coord1, real coord2, real coord3, int Netnr, int Code, int Type, int Orient) {
cmdroute += "CHANGE Layer " + refLayer[layer] + ";\n";
cmdroute += "CHANGE WIDTH " + format(v2mil(tracewidth[Code])) + ";\n" ;
switch (Orient) {
case 1 : rwire(Netnr, layer, coord2, coord1, coord3, coord1);
break;
case 2 : rwire(Netnr, layer, coord1, coord2, coord1, coord3);
break;
case 4 : rwire(Netnr, layer, coord2 + ((coord1 - coord2) / 2 ) ,
(coord1 - coord2) / -2, coord3 + ((coord1 - coord3) / 2 ) ,
(coord1 - coord3) / -2);
break;
case 8 : rwire(Netnr, layer, coord2 - ((coord2 - coord1) / 2 ) ,
(coord2 - coord1) / -2, coord3 - ((coord3 - coord1) / 2 ) ,
(coord3 - coord1) / -2);
break;
default: {
string o;
sprintf(o, "Route error:\nLayer=%d\n%.2f\n%.2f\n%.2f\nN#%d\nC=%d\nT=%d\nO=%d\n",
layer, coord1, coord2, coord3, Netnr, Code, Type,Orient);
if (dlgMessageBox(o, "&Yes", "&No") != 0) exit (0);
}
}
return ;
}
void arcDraw( int Layer, real X, real Y, real Radius, real arcs, real arce, int Netnr, int TraceCode, string TraceType) {
string as;
sprintf (as, " Change Layer %s;\n", refLayer[Layer]);
if (arce == 360) {
sprintf (as, " Circle (%.3f %.3f) (%.3f %.3f);\n",X, Y, X + Radius, Y);
arcscript += as;
}
else {
real arcStart = 360 + (arcs);
if (arcStart > 360) arcStart -= 360;
real arcEnd = arcStart + (arce);
if (arcEnd > 360) arcEnd -= 360;
real xArcStart = Radius * cos(PI / 180 * arcStart);
real yArcStart = Radius * sin(PI / 180 * arcStart);
real xArcEnd = Radius * cos(PI / 180 * arcEnd);
real yArcEnd = Radius * sin(PI / 180 * arcEnd);
sprintf (as, " ARC CCW (%.3f %.3f) (%.3f %.3f) (%.3f %.3f);\n",
X + xArcStart, Y + yArcStart,
X - xArcStart, Y - yArcStart,
X + xArcEnd, Y + yArcEnd);
arcscript += as;
}
return;
}
string scriptheader(void) {
string scrh = "Grid " + Grid + " FINEST;\n";
scrh += "Grid ON;\nSET UNDO_LOG OFF;\nSET WIRE_BEND 2;\n";
scrh += "LAYER 125 Alias;\n";
return scrh ;
}
string readTstring(void) {
string s = "";
do {
if (c[n] == cr) {
n++;
return s;
}
else {
s += c[n];
n++;
}
} while (c[n]);
}
string read(char srch, int rdlf) {
string s = "";
do {
if (c[n] != ' ') {
break;
}
else n++;
} while (c[n]);
do {
if (c[n] != cr) {
break;
}
else n++;
} while (c[n]);
do {
if (c[n] != lf) {
break;
}
else {
n++;
if (rdlf) {
return s;
}
}
} while (c[n]);
do {
if (c[n] == ';' || c[n] == ':') {
if (s == "") {
string cc;
sprintf(cc, "%c", c[n]);
return cc;
}
else return s;
}
if (c[n] == srch || c[n] == cr) {
n++;
return s;
}
else {
s += c[n];
n++;
}
} while (c[n]);
return s;
}
string readstring(char separ, char eol, char sepline) {
string sline = "";
do {
string wx = read(separ, 0);
if (wx[0] ==eol || wx[0] == sepline) {
if ( sline == "") {
return wx;
}
else return sline;
}
string wy = read(separ, 1);
sprintf(st, "(%s %s) ", format(val2mil(wx)), format(val2mil(wy)));
sline += st;
} while (c[n]);
sprintf(st, "%d", n);
if(dlgMessageBox( "Progr. end by counter " + st , "&Yes", "&No") != 0) exit (0);
exit (0);
}
void Headerfield(void) {
n++;
costomer = read(lf, 0);
versionnumb = read(' ', 0);
revisionnum = read(' ', 0);
for (int v = 0; v < VersionCnt; v++) {
if (versionnumb + revisionnum == ULTIversion[v]) {
xScale = 1 / ULTIscale[v];
rotatemultiple = rotatemult[v];
break;
}
}
printf("%s", scriptheader());
boardoutline[1] = strtol(read(',', 0));
boardoutline[2] = strtol(read(',', 0));
boardoutline[3] = strtol(read(',', 0));
boardoutline[4] = strtol(read(',', 0));
def_grid = strtol(read(',', 0));
int grid_step = strtol(read(',', 0));
string swaplevel = read(',', 0);
int max_layers = strtod(read(';', 0));
n++;
string layerlaminat = read(' ', 0);
refpointx = strtol(read(',', 0));
refpointy = strtol(read(cr, 0));
string routeroptions[];
int x = 0;
routeroptions[0] = read(' ', 0);
st = routeroptions[0] ;
do {
x++;
routeroptions[x] = read(' ', 1);
st += " " + routeroptions[x];
} while (routeroptions[x] != "");
x = 1;
layerDirection[x] = read(' ', 0);
do {
st += "\nLayer " + refLayer[x] + "=" + layerDirection[x];
x++;
layerDirection[x] = read(' ', 1);
} while (layerDirection[x] != "");
string powerplanes[];
for (int p = 1; p <= 32; p++) {
powerplanes[p] = read(' ', 0);
}
return ;
}
void padset(void) {
n++;
string padsetword = read(cr, 1);
return ;
}
void TraceCode(void) {
n++;
string nb = read(',', 0);
int number = strtol(nb);
tracewidth[number] = strtol(read(',', 0));
traceclearance[number] = strtol(read(cr, 1));
return ;
}
void Drilltolerance(void) {
n++;
drilltolerance = strtol(read(' ', 0));
drilltolerancevalue = strtol(read(cr, 0));
return ;
}
void DrillCode(void) {
n++;
string nb = read(',', 0);
int number = strtol(nb);
drillcode[number] = strtod(read(cr, 1));
return ;
}
void PadDefinitionInner(void) {
n++;
string nb = read(',', 0);
int number = strtol(nb);
pad0innerX1[number] = strtol(read(',',0));
pad0innerX2[number] = strtol(read(',',0));
pad0innerY[number] = strtol(read(',',0));
pad0innerRadius[number] = strtol(read(',',0));
pad0innerClear[number] = strtol(read(',',0));
pad0innerHorizont[number] = strtol(read(',',0));
pad0innerVertical[number] = strtol(read(',',0));
pad0innerThermH[number] = strtol(read(',',0));
pad0innerThermV[number] = strtol(read(cr, 1));
return ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -