📄 eagle4-1.ulp
字号:
}
}
}
if (!gefunden && project.schematic) project.schematic(sch) {
sch.sheets(S) {
S.parts(P) {
P.instances(I) {
if (I.name == SymbolName) {
AnschlussNr=0;
I.gate.symbol.pins(pi) {
if (!gefunden) AnschlussNr++;
if (pi.name == AnschlussName && !gefunden) gefunden=TRUE;
}
}
}
}
}
}
if (gefunden) return AnschlussNr;
else return 0;
}
*/
//EagleVorlage________________________________________________________________
void SetEagleVorlage(void)
{
// NurPlatine
if (project.schematic) NurPlatine=FALSE;
else NurPlatine=TRUE;
// TargetEbeneFarben
TargetEbeneFarbe[0]=TARGET_DROT;
TargetEbeneFarbe[1]=TARGET_SCHWARZ;
TargetEbeneFarbe[2]=TARGET_DROT;
TargetEbeneFarbe[3]=TARGET_BRAUN;
TargetEbeneFarbe[4]=TARGET_DGRUEN;
TargetEbeneFarbe[5]=TARGET_HGRAU;
TargetEbeneFarbe[6]=TARGET_DMAGENTA;
TargetEbeneFarbe[7]=TARGET_DCYAN;
TargetEbeneFarbe[8]=TARGET_DGRUEN;
TargetEbeneFarbe[9]=TARGET_SCHWARZ;
TargetEbeneFarbe[10]=TARGET_DGRUEN;
TargetEbeneFarbe[11]=TARGET_BRAUN;
TargetEbeneFarbe[12]=TARGET_SCHWARZ;
TargetEbeneFarbe[13]=TARGET_BRAUN;
TargetEbeneFarbe[14]=TARGET_DBLAU;
TargetEbeneFarbe[15]=TARGET_SCHWARZ;
TargetEbeneFarbe[16]=TARGET_DBLAU;
TargetEbeneFarbe[17]=TARGET_BRAUN;
TargetEbeneFarbe[18]=TARGET_DGRUEN;
TargetEbeneFarbe[19]=TARGET_HGRAU;
TargetEbeneFarbe[20]=TARGET_DMAGENTA;
TargetEbeneFarbe[21]=TARGET_SCHWARZ;
TargetEbeneFarbe[22]=TARGET_DGRAU;
TargetEbeneFarbe[23]=TARGET_HROT;
TargetEbeneFarbe[24]=TARGET_BRAUN;
TargetEbeneFarbe[25]=TARGET_BRAUN;
TargetEbeneFarbe[26]=TARGET_SCHWARZ;
TargetEbeneFarbe[27]=TARGET_DGRUEN;
// TargetEbeneBezug
TargetEbeneBezug[0]=2;
TargetEbeneBezug[1]=2;
TargetEbeneBezug[2]=2;
TargetEbeneBezug[3]=2;
TargetEbeneBezug[4]=2;
TargetEbeneBezug[5]=2;
TargetEbeneBezug[6]=2;
TargetEbeneBezug[7]=2;
TargetEbeneBezug[8]=10;
TargetEbeneBezug[9]=10;
TargetEbeneBezug[10]=10;
TargetEbeneBezug[11]=13;
TargetEbeneBezug[12]=13;
TargetEbeneBezug[13]=13;
TargetEbeneBezug[14]=16;
TargetEbeneBezug[15]=16;
TargetEbeneBezug[16]=16;
TargetEbeneBezug[17]=16;
TargetEbeneBezug[18]=16;
TargetEbeneBezug[19]=16;
TargetEbeneBezug[20]=16;
TargetEbeneBezug[21]=16;
TargetEbeneBezug[22]=255;
TargetEbeneBezug[23]=255;
TargetEbeneBezug[24]=255;
TargetEbeneBezug[25]=255;
TargetEbeneBezug[26]=255;
TargetEbeneBezug[27]=255;
// TargetEbeneFunktion
TargetEbeneFunktion[0]=TARGET_EF_FLAECHEUNTEN;
TargetEbeneFunktion[1]=TARGET_EF_LOESCHUNTEN;
TargetEbeneFunktion[2]=TARGET_EF_KUPFERUNTEN;
TargetEbeneFunktion[3]=TARGET_EF_GOLDUNTEN;
TargetEbeneFunktion[4]=TARGET_EF_LOETSTOPUNTEN;
TargetEbeneFunktion[5]=TARGET_EF_LOETPASTEUNTEN;
TargetEbeneFunktion[6]=TARGET_EF_KLEBERUNTEN;
TargetEbeneFunktion[7]=TARGET_EF_BESTUECKUNGUNTEN;
TargetEbeneFunktion[8]=TARGET_EF_FLAECHEINNEN;
TargetEbeneFunktion[9]=TARGET_EF_LOESCHINNEN;
TargetEbeneFunktion[10]=TARGET_EF_KUPFERINNEN;
TargetEbeneFunktion[11]=TARGET_EF_FLAECHEINNEN;
TargetEbeneFunktion[12]=TARGET_EF_LOESCHINNEN;
TargetEbeneFunktion[13]=TARGET_EF_KUPFERINNEN;
TargetEbeneFunktion[14]=TARGET_EF_FLAECHEOBEN;
TargetEbeneFunktion[15]=TARGET_EF_LOESCHOBEN;
TargetEbeneFunktion[16]=TARGET_EF_KUPFEROBEN;
TargetEbeneFunktion[17]=TARGET_EF_GOLDOBEN;
TargetEbeneFunktion[18]=TARGET_EF_LOETSTOPOBEN;
TargetEbeneFunktion[19]=TARGET_EF_LOETPASTEOBEN;
TargetEbeneFunktion[20]=TARGET_EF_KLEBEROBEN;
TargetEbeneFunktion[21]=TARGET_EF_BESTUECKUNGOBEN;
TargetEbeneFunktion[22]=TARGET_EF_BEMASSUNG;
TargetEbeneFunktion[23]=TARGET_EF_UMRISS;
TargetEbeneFunktion[24]=TARGET_EF_BOHRLOECHER;
TargetEbeneFunktion[25]=TARGET_EF_FRAESEN;
TargetEbeneFunktion[26]=TARGET_EF_LOETPUNKTNUMMERN;
TargetEbeneFunktion[27]=TARGET_EF_LUFTLINIE;
}
//TargetText: BEGIN, END, (Kommentar)_________________________________________
void TargetText_BEGIN(void)
{
if (NurPlatine) printf("BEGIN\t%d\n", 1);
else printf("BEGIN\t%d\n", 0);
printf("Ebene");
printf("\t%d", 24); // BohrlochEbene
printf("\t%d", TEFunktion(24));
printf("\t%d", TEBezug(24));
printf("\t%d", TEFarbe(24));
printf("\t%d\n", 1);
}
void TargetText_END(void)
{
printf("END\n");
}
void TargetText_Kommentar(string s)
{
printf("{%s}\n", s);
}
//BoardObjekte in TargetText umsetzen_________________________________________
void BoardArc2TargetText(UL_ARC A, int BauteilNr, int SignalNr)
{
printf("Torus");
printf("\t%d", EL2TL(A.layer));
printf("\t%d",BauteilNr);
printf("\t%d",SignalNr);
printf("\t%d",0);//ist sichtbar
printf("\t%d",int(u2mic(A.xc)));
printf("\t%d",int(u2mic(A.yc)));
printf("\t%d",int(u2mic(A.radius)));
printf("\t%d",int(u2mic(A.width)));
printf("\t%d",0);
printf("\t%f",A.angle1);
printf("\t%f",A.angle2);
printf("\t%d",0);
printf("\n");
}
void BoardCircle2TargetText(UL_CIRCLE C, int BauteilNr)
{
printf("Torus");
printf("\t%d", EL2TL(C.layer));
printf("\t%d",BauteilNr);
printf("\t%d",0);
printf("\t%d",0);//ist sichtbar
printf("\t%d",int(u2mic(C.x)));
printf("\t%d",int(u2mic(C.y)));
printf("\t%d",int(u2mic(C.radius)));
printf("\t%d",int(u2mic(C.width)));
printf("\t%d",0);
printf("\t%f",0.0);
printf("\t%f",360.0);
printf("\t%d",0);
printf("\n");
}
void BoardHole2TargetText(UL_HOLE H, int BauteilNr)
{
printf("Punkt");
printf("\t%d", 100);
printf("\t%d",BauteilNr);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",int(u2mic(H.x)));
printf("\t%d",int(u2mic(H.y)));
printf("\t%d",PunktForm(PAD_SHAPE_ROUND));
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",int(u2mic(H.drill)));
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",0);
printf("\n");
}
void BoardElementWire2TargetText(UL_WIRE W, int BauteilNr, int SignalNr)
{
if (W.arc)
BoardArc2TargetText(W.arc, BauteilNr, SignalNr);
else {
printf("Linie");
printf("\t%d", EL2TL(W.layer));
printf("\t%d", BauteilNr);
printf("\t%d", SignalNr);
printf("\t%d", 0);
printf("\t%d", int(u2mic(W.x1)));
printf("\t%d", int(u2mic(W.y1)));
printf("\t%d", int(u2mic(W.x2)));
printf("\t%d", int(u2mic(W.y2)));
printf("\t%d", int(u2mic(W.width)));
printf("\t%d", 0);
printf("\t%d", 0);
printf("\t%d", 1);//abgerundet
printf("\t%d\n", 0);
}
}
void BoardElementRectangle2TargetText(UL_RECTANGLE R, int BauteilNr, int SignalNr)
{
real x0,y0;
printf("Rechteck");
printf("\t%d", EL2TL(R.layer));
printf("\t%d",BauteilNr);
printf("\t%d",SignalNr);
printf("\t%d",0);
//rotate
x0=(R.x2+R.x1)/2;
y0=(R.y2+R.y1)/2;
rotate(x0,y0,R.x1,R.y1,R.angle);
printf("\t%d",int(u2mic(rx)));
printf("\t%d",int(u2mic(ry)));
//rotate end
printf("\t%d",int(u2mic(R.x2-R.x1)));
printf("\t%d",int(u2mic(R.y2-R.y1)));
printf("\t%f",R.angle);
printf("\t%d",0);
printf("\n");
}
void BoardElementContact2TargetText(UL_CONTACT C, int BauteilNr, int SignalNr, int AnschlussNr)
{
int MyLayer;
int MyDiameterLayer;
// Punkt
printf("Punkt");
if (C.pad)
MyLayer=100;
else
MyLayer=EL2TL(C.smd.layer);
printf("\t%d", MyLayer);
printf("\t%d",BauteilNr);
printf("\t%d",SignalNr);
printf("\t%d",0);
printf("\t%d",int(u2mic(C.x)));
printf("\t%d",int(u2mic(C.y)));
if (C.pad) {
printf("\t%d",PunktForm(C.pad.shape[LAYER_PADS]));
if (C.pad.diameter[LAYER_PADS]==auto)
MyDiameterLayer=LAYER_BOTTOM;
else
MyDiameterLayer=LAYER_PADS;
/*
The pad shapes ANNULUS, THERMAL and OFFSET are not exactly converted!!!
For LONG and OFFSET:
elongation=e/d*100
d = hoehe
e = breite-d
*/
switch (C.pad.shape[LAYER_PADS]) {
case PAD_SHAPE_SQUARE:
case PAD_SHAPE_ROUND:
case PAD_SHAPE_OCTAGON:
case PAD_SHAPE_THERMAL:
case PAD_SHAPE_OFFSET:
printf("\t%d",int(u2mic(C.pad.diameter[MyDiameterLayer])));
printf("\t%d",int(u2mic(C.pad.diameter[MyDiameterLayer])));
break;
case PAD_SHAPE_LONG:
printf("\t%d",int(u2mic(C.pad.diameter[MyDiameterLayer])*(100+u2mic(C.pad.elongation))/100));
printf("\t%d",int(u2mic(C.pad.diameter[MyDiameterLayer])));
break;
case PAD_SHAPE_ANNULUS:
printf("\t%d",int(u2mic(C.pad.drill))*1.01);
printf("\t%d",int(u2mic(C.pad.drill))*1.01);
break;
}
}
else {
printf("\t%d",PunktForm(PAD_SHAPE_SQUARE));
printf("\t%d",int(u2mic(C.smd.dx)));
printf("\t%d",int(u2mic(C.smd.dy)));
}
printf("\t%d",0);
if (C.pad) printf("\t%d",int(u2mic(C.pad.drill)));
else printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",AnschlussNr);
if (C.pad) printf("\t%f",C.pad.angle);
else printf("\t%f",C.smd.angle);
printf("\t%d",0);
printf("\n");
}
void BoardText2TargetText(UL_TEXT T, int BauteilNr, int AnschlussNr)
{
printf("Text");
printf("\t%d", EL2TL(T.layer));
printf("\t%d", BauteilNr);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",int(u2mic(T.x)));
printf("\t%d",int(u2mic(T.y)));
printf("\t%s",T.value); // Inhalt
printf("\t%d",int(u2mic(T.size))); // Hoehe
printf("\t%d",int(u2mic(T.size)*0.7)); // Breite
printf("\t%d",8); // Staerke , % der Breite. Fett ab 11% , 0..100
printf("\t%d",0); // Starr/dynamisch , Boolean
printf("\t%d",T.mirror); // Gespiegelt
printf("\t%d",TextFunktion(T.layer));
printf("\t%d",AnschlussNr); // AnschlussNummer , Word
printf("\t%s","TARGET"); // SchriftArtName, "" = Vektorschrift , string[80]
printf("\t%f",T.angle); // Richtung, single
printf("\t%d",0); // SymbolNr, Word
printf("\n");
}
void BoardElement2TargetText(UL_ELEMENT E, int BauteilNr)
{
int Ebene;
if (E.mirror) Ebene=EL2TL(LAYER_BPLACE);
else Ebene=EL2TL(LAYER_TPLACE);
//Bauteil
printf("Bauteil");
printf("\t%d",Ebene);
printf("\t%d",BauteilNr);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",int(u2mic(E.x)));
printf("\t%d",int(u2mic(E.y)));
printf("\t%s","#");
printf("\t%s",E.value);
printf("\t%s",GetPraefix(E.name)); // Praefix
printf("\t%s",E.name);
printf("\t%s","#");
printf("\t%s","#");
printf("\t%s","#");
printf("\t%s",GetOrdnungsNr(E.name));
printf("\t%d",50);
printf("\n");
//Gehaeuse
printf("Gehaeuse");
printf("\t%d",Ebene);
printf("\t%d",BauteilNr);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",int(u2mic(E.x)));
printf("\t%d",int(u2mic(E.y)));
printf("\t%s",E.name);
printf("\t%s","");
printf("\t%d",50);
printf("\t%d",E.mirror);
printf("\t%f",E.angle);
printf("\n");
}
void BoardLayer2TargetText(UL_LAYER L)
{
if (EL2TL(L.number)<100 && L.used==1) {
printf("Ebene");
printf("\t%d", EL2TL(L.number));
printf("\t%d", TEFunktion(EL2TL(L.number)));
printf("\t%d", TEBezug(EL2TL(L.number)));
printf("\t%d", TEFarbe(EL2TL(L.number)));
printf("\t%d\n", L.visible);
}
}
void BoardSignal2TargetText(UL_SIGNAL S, int SignalNr)
{
printf("Signal");
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",SignalNr);
printf("\t%d",0); // unsichtbar
printf("\t%d",0); // # x
printf("\t%d",0); // # y
printf("\t%s",S.name);
printf("\t%s","");
printf("\t%s","");
printf("\t%s","");
printf("\n");
}
void BoardVia2TargetText(UL_VIA V, int SignalNr)
{
int MyDiameterLayer;
printf("Punkt");
printf("\t%d", 100);
printf("\t%d",0);
printf("\t%d",SignalNr);
printf("\t%d",0);
printf("\t%d",int(u2mic(V.x)));
printf("\t%d",int(u2mic(V.y)));
printf("\t%d",PunktForm(V.shape[LAYER_VIAS]));
if (V.diameter[LAYER_VIAS]==auto)
MyDiameterLayer=LAYER_BOTTOM;
else
MyDiameterLayer=LAYER_VIAS;
printf("\t%d",int(u2mic(V.diameter[MyDiameterLayer])));
printf("\t%d",int(u2mic(V.diameter[MyDiameterLayer])));
printf("\t%d",0);
printf("\t%d",int(u2mic(V.drill)));
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",0);
printf("\t%d",0);
printf("\n");
}
//BoardLoops__________________________________________________________________
void LoopBoardElement2TargetText(UL_BOARD B)
{
int BauteilNr=1;
int AnschlussNr;
B.elements(E) {
AnschlussNr=1;
// Bauteil und Gehaeuse
BoardElement2TargetText(E, BauteilNr);
// Linie; Arcs are also wires!
E.package.wires(W) {
BoardElementWire2TargetText(W, BauteilNr, 0);
}
E.package.polygons(P) {
P.wires(W) {
BoardElementWire2TargetText(W, BauteilNr, 0);
}
}
// Punkt und Anschluss
E.package.contacts(C) {
BoardElementContact2TargetText(C, BauteilNr, GetSignalNr(C.signal), AnschlussNr);
AnschlussNr++;
}
E.package.circles(C) {
BoardCircle2TargetText(C, BauteilNr);
}
E.package.holes(H) {
BoardHole2TargetText(H, BauteilNr);
}
// Rechteck
E.package.rectangles(R) {
BoardElementRectangle2TargetText(R, BauteilNr, 0);
}
// Text
E.texts(T) {
BoardText2TargetText(T, BauteilNr, 0);
}
E.package.texts(T) {
BoardText2TargetText(T, BauteilNr, 0);
}
// BauteilNr+1
BauteilNr++;
}
}
void LoopBoardLayer2TargetText(UL_BOARD B)
{
B.layers(L) {
BoardLayer2TargetText(L);
}
}
void LoopBoardPolygon2TargetText(UL_BOARD B)
{
B.polygons(P) {
P.wires(W) {
BoardElementWire2TargetText(W, 0, 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -