 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
bpavsic Član


Pridružen-a: Pet 03 Apr 2009 20:45 Prispevkov: 354 Aktiv.: 1.79 Kraj: Maribor
|
Objavljeno: Ned Nov 11, 2012 5:25 pm Naslov sporočila: Eagle - slika v ozadju |
|
|
Pozdravljeni,
zanima me ali je možno pri risanju PCBja v ozadje postavit sliko?
V temi sem načel opis projekta. Prvo ploščico sem narisal, sedaj pa sem se spravil na naslednjo. Ta bo kopija obstoječe (po obliki, ne pa funkcionalnosti). Kot se vidi na sliki, bodo največji problem rotacijski enkoderji (oz. kakorkoli se pač reče tem krogcem). Sam lahko razstavim en oddajnik in ga skeniram ali kako drugače spravim do računalnika, kjer ga spravim v natančne dimenzije (popravim perspektivo, če bi npr. slikal). Nato pa bi to sliko dal v ozadje Eagle-a in po njej narisal novo ploščico.
Tule je še slikica zadnje strani originalne ploščice. |
|
Nazaj na vrh |
|
 |
ule Član


Pridružen-a: Tor 13 Jan 2004 20:32 Prispevkov: 1583 Aktiv.: 6.66 Kraj: Babno Polje
|
Objavljeno: Ned Nov 11, 2012 5:32 pm Naslov sporočila: |
|
|
Za eagla nisem čisto prepričan (ali pač ne znam) če to omogoča, zna pa to program Sprint layout. |
|
Nazaj na vrh |
|
 |
bpavsic Član


Pridružen-a: Pet 03 Apr 2009 20:45 Prispevkov: 354 Aktiv.: 1.79 Kraj: Maribor
|
Objavljeno: Ned Nov 11, 2012 5:45 pm Naslov sporočila: |
|
|
No, v bistvu sem našel neko varianto s skripto "import-bmp.ulp" ampak bi raje kaj bolj normalnega.
Glede programa je pa tak... Eagle še najbolj poznam in bi zaenkrat ostal pri tem.
Sem preveril skripto. V bistvu deluje tako, da ustvari do 16 layerjev (vsak svoje barve), potem pa glede na pixle v sliki generira poligone v ustreznem layerju.
Si bom napisal programček, da mi zgenerira poligone za te krožne pad-e, in jih bom imenoval isto kot signali... Bi moralo špilat. |
|
Nazaj na vrh |
|
 |
ule Član


Pridružen-a: Tor 13 Jan 2004 20:32 Prispevkov: 1583 Aktiv.: 6.66 Kraj: Babno Polje
|
Objavljeno: Ned Nov 11, 2012 6:19 pm Naslov sporočila: |
|
|
Sprint layout niti približno ni tako zahteven kot eagle. Tako da če dokaj dobro poznaš eagle, bi sprint layout osvojil v 20min. Obstaja na forumu nekje ena debata o tem pogramu. |
|
Nazaj na vrh |
|
 |
bpavsic Član


Pridružen-a: Pet 03 Apr 2009 20:45 Prispevkov: 354 Aktiv.: 1.79 Kraj: Maribor
|
Objavljeno: Ned Nov 11, 2012 6:46 pm Naslov sporočila: |
|
|
V bistvu je bolj problem v tem, da imam že par ploščic narisanih, za katere sem moral narediti nove elemente. Ni mi tega postopka ponavljat še v drugem programu.
Glede na to, da sem sedaj ugotovil, kako se delajo skripte, bom kar v excelu naredil skripto, ki mi bo narisala poligone za ta dva enkoderja. |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.59 Kraj: Kranj - struževo
|
Objavljeno: Ned Nov 11, 2012 6:54 pm Naslov sporočila: |
|
|
Mnogo bolje kot copy-paste po sliki (sploh če nimaš vezja skeniranega) je merjenje premerov in izračun pozicij kontaktov.
Vezje lahko skeniraš, naviješ kontrast, znižaš barvno globino slike in potem uvoziš v kakšen program za vektoriziranje, recimo coreldraw, mogoče tudi inkscape zna. Potem pa izvoziš v formatu, ki ga program za vezja pozna, za p-cad vem da DXF brez težav uvozi.
Tretja rešitev pa je uporaba alternativnega tipa enkoderja, ki ti ga lahko jaz zrihtam - klik _________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
bpavsic Član


Pridružen-a: Pet 03 Apr 2009 20:45 Prispevkov: 354 Aktiv.: 1.79 Kraj: Maribor
|
Objavljeno: Ned Nov 11, 2012 7:18 pm Naslov sporočila: |
|
|
@aly
Ni problem v copy-paste. Koordinate posameznih pad-ov je trivialno izračunat (polarne koordinate - tudi eagle jih podpira v skripti). Potem pač zgeneriraš poligone. Bolj me muči notranji krog oz. kolobar.
Ali ga naj sestavim iz več segmentov (trapezov) ali pa uporabim ukaz CIRCLE pa potem delam z restrict layerjem... ne vem pa kaj potem to dalje prinese za izdelavo vezja... Bom zdaj do konca napisal skripto, pa da vidim rezultat.
Alternative pa ni. Rad bi samo zamenjal ploščico iz originalnega pilota, tako da lahko vsak trenutek menjam nazaj na original.
Ok, ravnokar sem ugotovil, da CIRCLE in RECT odpadeta, ker jih ne moreš povezat s signali. Torej ostane POLYGON, ki je lahko tudi "cutout". |
|
Nazaj na vrh |
|
 |
bpavsic Član


Pridružen-a: Pet 03 Apr 2009 20:45 Prispevkov: 354 Aktiv.: 1.79 Kraj: Maribor
|
Objavljeno: Ned Nov 11, 2012 8:26 pm Naslov sporočila: |
|
|
Ok, problem rešen.
"votli" poligoni
"pobarvani" poligoni
Generirani so kot POLYGON v eagle-u. V bistvu bi lahko naredil vse skupaj direkt v eagleu s skripto. Zdaj sem si napisal program v C# in rezultat skopiral v eaglovo ukazno vrstico.
Če je tema zanimiva, lahko tudi naštudiram Eaglove ULP skripte in naredim to isto stvar tam.
Moram edino zmerit točne podatke pa zdaj nimam originalne ploščice pri roki...
Koda: |
private void P2R(double r, double a, out double x, out double y)
{
x = r * Math.Cos(a);
y = r * Math.Sin(a);
}
// name = ime segmenta,
// locX, locY = lokacija središča,
// segCnt = število segmentov,
// rMin, rMax = notranji in zunanji radij,
// aOfs = zamik (rotacijski) v radianih
// ratio = razmerje med polnim in praznim delom segmenta (1 = cel polni)
private string GenSeg(string name, double locX, double locY, int segCnt, double rMin, double rMax, double aOfs, double ratio)
{
double aSeg = 2 * Math.PI / segCnt;
StringBuilder res = new StringBuilder();
for (int i = 0; i < segCnt; i ++)
{
res.Append("POLYGON \"" + name + "\" ");
double aSeg1 = aSeg * i + aOfs;
double aSeg2 = aSeg * (i + ratio) + aOfs;
double x, y;
P2R(rMin, aSeg1, out x, out y); x += locX; y += locY;
res.Append(String.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), "({0:0.00000000} {1:0.00000000}) ", x, y));
P2R(rMax, aSeg1, out x, out y); x += locX; y += locY;
res.Append(String.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), "({0:0.00000000} {1:0.00000000}) ", x, y));
P2R(rMax, aSeg2, out x, out y); x += locX; y += locY;
res.Append(String.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), "({0:0.00000000} {1:0.00000000}) ", x, y));
P2R(rMin, aSeg2, out x, out y); x += locX; y += locY;
res.Append(String.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), "({0:0.00000000} {1:0.00000000}) ", x, y));
P2R(rMin, aSeg1, out x, out y); x += locX; y += locY;
res.AppendLine(String.Format(System.Globalization.CultureInfo.GetCultureInfo("en-US"), "({0:0.00000000} {1:0.00000000});", x, y));
}
return res.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text =
GenSeg("VCC", 0.85, 1.85, 40, 0.3, 0.38, 0, 1) +
GenSeg("A1", 0.85, 1.85, 21, 0.4, 0.48, -2 * Math.PI / 21 / 2 + 2 * Math.PI / 21 / 4, 0.5) +
GenSeg("B1", 0.85, 1.85, 21, 0.5, 0.58, -2 * Math.PI / 21 / 2, 0.5) +
GenSeg("VCC", 2.80, 1.85, 40, 0.3, 0.38, 0, 1) +
GenSeg("A1", 2.80, 1.85, 21, 0.4, 0.48, -2 * Math.PI / 21 / 2 + 2 * Math.PI / 21 / 4, 0.5) +
GenSeg("B1", 2.80, 1.85, 21, 0.5, 0.58, -2 * Math.PI / 21 / 2, 0.5);
}
|
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 11 dni
Powered by phpBB © 2001, 2005 phpBB Group
|