Eagle: Vorschlag zu neuem Vorgehen beim Ermitteln der Leitungslänge

OP #6201082
Seit langem möchte auch ich wieder mal was zum Forum beitragen, meist 
lese ich ja nur...

Es geht um die Ermittlung der Leitungslängen im Eagle-Router (4.x, 5.x). 
Da gibt es ja die Skripte /length-freq-ri.ulp/ und /length.ulp/, die es 
ermöglichen, die Leitungslängen aller Signale im Layout anzuzeigen. Wenn 
man aber intensiv Leitungspaare verlegt oder zeitkritisch routet, wird 
es extrem nervig, immer das Fenster aufzurufen (auch wenn das direkt auf 
eine Funktionstaste gelegt wird), das Signal rauszusuchen (das wird 
unangenehm und zeitaufwendig, wenn es mehrere Hundert sind!), sich die 
Länge zu merken und das Fenster wieder zuzuklickern.

Weil es mich so extrem genervt hat, habe ich mal nach Möglichkeiten bei 
der Skriptsprache gesucht, aber da scheint es keine Möglichkeiten zu 
geben. Sämtliche Ausgaben sind modal, eine Art Callback bei 
Nutzerinteraktion gibt es auch nicht. Vielleicht habe ich ja da auch was 
übersehen... Letztlich kam mir aber eine bestechend einfache Idee: Bei 
z.B. F5 (so schön ähnlich zu Aktualisieren ;-) wird ein Skript 
*writelen.ulp* aufgerufen, welches die Signale und ihre Länge in eine 
externe Datei schreibt. Ein anderes Programm *showlengths.exe* mit einer 
schicken Tabelle "lauert" nun auf Änderungen im Inhalt und stellt sie 
dar. In /showlengths.exe/ kann man im linken Teil nun auch die wenigen 
Signale auswählen, die man gerade routet, und dann rechts auch noch (in 
der Tabelle) farbig markieren, das erhöht etwas die Übersicht.

Das Programm /showlengths.exe/ habe ich selbst geschrieben (es ist 
natürlich virenfrei), und es darf frei verwendet werden (siehe auch 
"about" im Programm). Es braucht nicht installiert, sondern einfach nur 
parallel zu /eagle.exe/ gestartet zu werden. Der Name der von Eagle 
dafür benutzten Datei steht in /writelen.ulp/, bei /showlengths.exe/ 
lädt man gleich am Anfang diese Datei. Im Prinzip kann es dann dauerhaft 
laufen, auch für unterschiedliche Boards. /writelen.ulp/ stammt von 
/lengths.ulp/ ab und ist nur vereinfacht. Alles ganz simpel eigentlich.

In der Hoffnung, dass ich dafür nicht geblamt werde und der eine oder 
andere etwas Nutzen aus dem Programm ziehen kann und/oder vielleicht 
sogar Verbesserungsvorschläge macht, freue ich mich auf Rückmeldungen. 
Wenn nicht, ist auch ok. Mir hat das Programm jedenfalls schon sehr 
geholfen.

(PS: In der Vorschau werden meine Formatierungen nicht richtig 
angezeigt, was mache ich falsch? Schade)
Angehängte Dateien:
Gast
Hi Schmitti,

nett! (im positivsten aller Sinne!).

Allerdings wäre es toll, wenn
1
string  destFile = "/Dokumente und Einstellungen/nutzer/Eigene Dateien/elec/eagle/projects/lengths.txt";

nicht auf (Dokumente und Einstellungen...) [benutzt das wirklich 
jemand absichtlich?] sondern auf den WorkFolder des gerade geöffneten 
BRDs zeigen würde. Das geht doch bestimmt irgendwie...

Und das "UI": funktioniert tadellos und Virenfrei ;)
Wäre natürlich toll, wenn da auch die Delta_in_% Angabe für die 
klassischen _N/_P Signalnamen dabei wäre... Da schaue ich meist drauf...

Vielen Dank für die Arbeit,
Stephan
OP
Danke für die Rückmeldung!
Ich hatte mal auf die Schnelle im ULP-Manual nach solchen vorgegebenen 
Variablen/Konstanten gesucht, aber nicht gefunden. Daher die Bemerkung, 
wo sich der String für die Datei zum Ändern befindet. Wer das passende 
findet, kann es ja einsetzen. Schlimmer wäre sowas im Binary ;-) ...

Das mit der automatischen Namenszuordnung _P/_N oder auch +/- und der 
Anzige der Differenz wäre noch interessant, stimmt. Wenn das noch mehr 
Resonanz findet, würde ich das noch machen.
Gast
Hi Schmitti,

//string destFile
gaanz oben auskommentieren.

BOARD context holen;

b.name und ".outlen" (z.B.) dranhängen.

filesetext() macht den Rest.

1
sort( n, index, Signal);
2

3
//20200330,sd-START
4
string destFile;
5
if (board) board(B) {
6
  destFile = filesetext(B.name, ".outlen");
7
  dlgMessageBox("destFile:", destFile);
8
}  
9
//20200330,sd-END
10

11
output( destFile, "wt") {


vg, Stephan
OP
stimmt, so kann man es machen.
Allerdings erzeugt man so zu jedem Board ein *.outlen-File, was man 
eigentlich nicht unbedingt braucht. Mit meinem bisherigen Verfahren wäre 
ja auch ein Temp-File gleichzusetzen, welches ja als File nicht 
interessiert, sondern nur den Datentransfer bereitstellt. Hätte ich 
eigentlich besser gleich so machen sollen, dann wäre vielleicht mein 
"C:\Dokumente und ..." gar nicht negativ aufgefallen...  Dennoch ist das 
alles ganz leicht im ULP-Skript zu ändern, und zwar ganz simpel, so dass 
ich es lieber dem Anwender überlasse.
Trotzdem vielen Dank für die Idee!
M. S. schrieb:
> so dass
> ich es lieber dem Anwender überlasse.

Die Idee ist gut, deine Meinung imho nicht.
Nicht jeder, so wie ich, ist gut im ULP schreiben. Warum berücksichst du 
nicht die Vorschläge und schreibst das ULP dann fertig. Das wäre dann 
eine Sache.
Du bist jetzt drin, andere müssen sich da erst reinlesen.
Gast
Lass dir von jedem 10Cent überweisen.
2000 rum habe ich mal eine Delphi_Anwendung geschrieben, die alle 10 
Minuten (einstellbar) das komplette EagleProjekt gesichert hat. ( Über 
Timergesteuerte Windows-Messages "Menu->Save all". Das gab es bei der 
damals aktuellen Version 3.2(?) noch nicht. Später kam es ja dann hinzu.
Ist, glaube ich, jetzt nicht mehr downloadbar.
Wurde aber zigtausende Male heruntergeladen ;)
Danke für deine Mühe!
Gruß
OP
Also in einer Zeile (10.) eine Zeichenkette "/Dokumente und ..." in eine 
andere Pfadangabe zu ändern, ist ja noch nicht "ULP Schreiben". Es ist 
nicht mehr, dazu muss man sich auch nicht einlesen (höchstens in die 
Bedienung eines Texteditors ;-).

Ich tendiere nach einiger Überlegung sowieso eher dazu, dort besser 
"c:\temp\lengths.txt" oder was ähnliches reinzuschreiben, dann gibt es 
weder Probleme noch "merkwürdige" Pfade. Wer die Längen als Datei 
braucht, ist mit 'length-freq-ri.ulp' bzw. 'length.ulp' ja schon gut 
bedient.

Schön wäre eher noch eine Pipe gewesen, aber das geht wohl nicht...
OP
schmitti schrieb:

> autosave.zip

Wie hast Du denn das von Windows aus gelöst? Es wäre ja auch für meine 
(und sicher auch noch andere) Anwendung interessant, eagle in bestimmten 
Abständen zu animieren, etwas auszuführen. Ich finde dazu leider gar 
nichts. Sourcen sind ja in deinem autosave.zip auch nicht drin.
Danke schonmal
OP
verstehe gar nicht, wie mir so ein tolles Programm durch die Lappen 
gehen konnte ;-)
Leider finde ich die timergesteuerte Funktionalität nicht. Das wäre ja, 
was man für autosave und meine Anwendung braucht. Hab ichs übersehen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.