Eagle - wyświetlanie warstw (DISPLAY)

Witam,

Ma ktoś może skrypt albo jakiś przykład jak przypisać sobie do skrótu klawiszowego włączanie i wyłączanie warstwy (toggle) bo to klikanie myszkOM doprowadza mnie do szału?

Chodzi o to, żeby pozbyć się tej kretyńskiej funkcji (z helpa do Eagle'a):

"If tPlace or bPlace is selected, t/bNames, t/bValues, t/bOrigins and t/bDocu are automatically selected, too."

Pozdrawiam, sword

Reply to
Adam Jurkiewicz
Loading thread data ...

Dnia 10/7/2004 7:37 PM, Użytkownik Górski Adam napisał:

To znam ale chodzi konkretnie o warstwe t/bplace, chcę miec możliwość włączania i wyłączania tylko tej jednej, a ona jest połączona z kilkoma innymi. Niestety to strasznie upierdliwy 'ficzer' i próbuję się go jakoś pozbyć.

pozdrawiam, sword

Reply to
Adam Jurkiewicz

Użytkownik Adam Jurkiewicz napisał:

Np. display none top vias pads

Aby zobaczyc tylko gorna warstwe.

Np. display -vias -pads

Aby wylaczyc tylko pady i przelotki

Adam Górski

Reply to
Górski Adam

Użytkownik Adam Jurkiewicz napisał:

Nie widze problemu Np. Pod jeden klawisz włączanie display tplace -tdocu a pod drugi wyłączanie display -tplace

Reply to
Górski Adam

Użytkownik Adam Jurkiewicz napisał:

Można też to zrobić pod jednym klawiszem w stylu włącz /wyłącz,ale to troche wiecej zabawy.

BTW ja mam pod jednym klawiszem

:)

Adam

Reply to
Górski Adam

No tak ale jeszcze się włączają dodatkowo, Origins, Names i Values i jak zrobię włącz/wyłącz to stracę te warstwy, które były pokazane. Dlatego właśnie myślę o skrypcie, który by zapamiętał wyświetlone warstwy wyłączył/włączył Place i ustawił pozostałe jak były.

No właśnie o to mi chodzi, mógłbyś się podzielić jak to masz zrobione (priv)? Miałbym przynajmniej punkt zaczepienia jak się za to zabrać, jeszcze się w skrypty nie bawiłem ale powoli do tego zmierzam.

Mam jeszcze takie pytanie może będziesz wiedział. Podmontowałem sobie wszystkie funkcje pod skróty klawiszowe lewy Alt + klawisz, ale to jeszcze w wersji 4.09. Teraza pracuję na wersji 4.11 no te skróty chodzą teraz nieciekawie bo pod Alt coś tam sami podmontowali i muszę naciskać ten skrót dwa razy, żeby wywołać funkcję. Czy da się jakoś wyłączyć te wewnętrzne przypisania eagla, żeby Alt był wolny i moje skróty chodziły normalnie? Już się do nich przyzwyczaiłem i nie chciał bym ich zmieniać.

pozdrawiam, sword

Reply to
Adam Jurkiewicz

Adam Jurkiewicz wrote on Fri, 08 Oct 2004 09:01:38 +0200:

Zwykłym skryptem tego nie zrobisz. Myślałem żeby zrobić to przy pomocy ULP, ale natknąłęm się na problem - do pola obiektu nie można przypisać wartości!. Np. [.....] UL_LAYER l; l.visible = 0; <- tutaj wyskakuje parse error [.....] Wygląda tak, jakby obiekty były read-only. Kurna, ale w helpie nic na ten temat nie widziałem.

Spokojnie można to zrobić poprzez kombinację ULP-a i skryptu: ULP otczytuje aktualny stan warstw i generuje odpowiedni skrypt który zostaje zapisany np. w pliku dupa.scr. I jeśli nasz ULP znalduje się np. w pliku dupa.ulp, to podpięcie pod jakiś klawisz sekwencji komend "run dupa.ulp; script dupa.scr;" powinno dać oczekiwany efekt. Problem w tym że jest to IMO mało eleganckie rozwiązanie.

AFAIR podpieli pod Alt-a chwilowe przełączanie się na alternatywną siatkę. Przy czym u mnie pod Linuksem nigdy to nie działało, a gdy bawiłem się przez chwilę wersją pod Win, to ten ficzer też jakoś nie chciał działać. Inna sprawa że nigdy tego nie potrzebowałem. W każdym bądź razie nie zauważyłem problemu o którym piszesz.

Regards, /J.D.

Reply to
Jan Dubiec

Dnia 10/8/2004 10:29 AM, Użytkownik Jan Dubiec napisał:

Wow, pomysł czadowy :) ciekawe jak by się rozkładało czasowo takie wywołanie. Jak się przegryzę przez te skrypty to może spróbuje.

No faktycznie jest coś takiego, nawet mi to działa. Jak się prowadzi ścieżkę to po przytrzymaniu Alt chodzisz z drugim gridem przy czym grid wizualny pozostaje bez zmian.

Poszukam, może da się ten ficzer wyłączyć albo przenieść pod inny klawisz. Tez z tego nie korzystam bo zmianę gridu mam podmontowaną pod osobne klawisze.

sword

Reply to
Adam Jurkiewicz

Adam Jurkiewicz wrote on Fri, 08 Oct 2004 12:00:16 +0200:

[.....]

Ja wiem czy czadowy? Sporo ULPów działa w ten sposób - najpierw tworzy skrypt a później go wykonuje.

Tzn. czy działałoby szybko? Tak, w takim prostym przypadku będzie działać szybko.

[.....]

Hehe, chyba wiem dlaczego mi nie działało. :-)

Regards, /J.D.

Reply to
Jan Dubiec

Jan Dubiec wrote on Fri, 8 Oct 2004 11:15:35 +0000 (UTC):

W przypływie weny twórczej napisałem małego ULP-a który tworzy skrypt w pamięci, tzn. nie ma potrzeby użycia dodatatkowego pliku na dysku na ciało skryptu. ULP włącza/wyłącza warstwę tPlace zachowując przy tym aktualny stan warstw tOrigins, tNames, tValues i tDocu.

Instrukcja obsługi:

  1. Zapisujemy ULP-a do pliku, np. dupa.ulp i umieszczamy go gdzieś na ścieżce ULP-ów tak aby Eagle go widział.
  2. Dla jakiejś kombinacji klawiszy przypisujemy komendę "run dupa.ulp;"
  3. Kolejne przyciśnięcia wybranej kombinacji powodują zmianę stanu warstwy tPlace na przeciwny, tj. jeśli była ona włączona, to po wciśnięciu wybranej kombinacji będzie wyłączona, itd.

A oto i ULP który może posłużyć jako baza do napisania czegoś bardziej zaawansowanego:

board(B) { string cmd = "display"; int tPlace_v, tOrigins_v, tNames_v, tValues_v, tDocu_v;

B.layers(L) { switch (L.number) { case LAYER_TPLACE: tPlace_v = L.visible; break; case LAYER_TORIGINS: tOrigins_v = L.visible; break; case LAYER_TNAMES: tNames_v = L.visible; break; case LAYER_TVALUES: tValues_v = L.visible; break; case LAYER_TDOCU: tDocu_v = L.visible; break; } }

if (tPlace_v == 1) { cmd += " -tPlace"; } else { cmd += " tPlace"; }

if (tOrigins_v == 1) { cmd += " tOrigins"; } else { cmd += " -tOrigins"; }

if (tNames_v == 1) { cmd += " tNames"; } else { cmd += " -tNames"; }

if (tValues_v == 1) { cmd += " tValues"; } else { cmd += " -tValues"; }

if (tDocu_v == 1) { cmd += " tDocu;"; } else { cmd += " -tDocu;"; }

exit(cmd); }

Regards, /J.D.

Reply to
Jan Dubiec

Dnia 10/8/2004 2:11 PM, Użytkownik Jan Dubiec napisał:

Dzięki wilekie GURU :) i o to chodziło, działa piknie.

Śmiesznie się ta pętlę robi w tym ulpie ale już załapałem jak, teraz sobie porobię toggle na resztę warstw :)

pozdrawiam, sword

Reply to
Adam Jurkiewicz

Dnia 10/8/2004 2:11 PM, Użytkownik Jan Dubiec napisał:

Dzięki wielkie GURU :) i o to chodziło, działa piknie.

Śmiesznie się ta pętlę robi w tym ulpie ale już załapałem jak, teraz sobie porobię toggle na resztę warstw :)

pozdrawiam, sword

Reply to
Adam Jurkiewicz

No to jak rzekłem tak zrobiłem, zainspirowany wiedzą jaką otrzymałem wygenerowałem coś takiego:

if (board) board(B) { string cmd = "display "; string Layer_Toggle = strupr (argv[1]);

B.layers(L) if (!strstr(strupr(L.name), Layer_Toggle)) { if (L.visible) cmd += "-"; cmd += Layer_Toggle; break; }

exit (cmd); }

Warstwa do zmiany stanu wyświetlania podawana jest jako parametr linii poleceń (działają skróty nazw):

run toggle top

Nie jestem tylko w tym wypadku pewien czy muszę korzystać z pętli do testowania aktualnego stanu warstwy czy można się jakoś odwołać bezpośrednio(?)

sword

Reply to
Adam Jurkiewicz

On Sat, 09 Oct 2004 17:55:38 +0200, Adam Jurkiewicz snipped-for-privacy@ajpic.zonk.pl> wrote: [.....]

No niestety, AFAIK innej metody nie ma. Wogóle te loop members to mi tak trochę programowaniem funkcyjnym "zalatują". :-)

Regards, /J.D.

Reply to
Jan Dubiec

Dnia 10/10/2004 3:22 PM, Użytkownik Jan Dubiec napisał:

Trzeba się przystosować, innej rady niema :)

Dzięki za naprowadzenie.

pozdrawiam, sword

Reply to
Adam Jurkiewicz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.