element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Autodesk EAGLE
  • Products
  • More
Autodesk EAGLE
EAGLE Support (Deutsch) mittels ULP Elemente (Devices) in einen Schaltplan einfügen
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Autodesk EAGLE to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 14 replies
  • Subscribers 190 subscribers
  • Views 1754 views
  • Users 0 members are here
  • eagle
  • frage
  • ulp
Related

mittels ULP Elemente (Devices) in einen Schaltplan einfügen

e14 Contributor
e14 Contributor over 13 years ago

Kurze Frage: ich versuche mich gerade ein wenig an ULPs. Geht das Einfügen von Devices in einen Schaltplan, wenn man es denn mittels ULP machen will, nur über den Weg der Aufbereitung eines Strings, der beim beenden des ULP dann so ausgeführt wird, als ob man die Anweisungen von Hand eingegeben hätte (also ADD device@library 'R101' R90 (0 0) u.s.w.) oder gibt es - sinngemäß - einen Weg der vielleicht so aussehen könnte:

 

UL_PART p = new UL_PART(Library, device, package);

p.value = '47k';

p.attribute['my_attribute'] = 'Präzisionswiderstand mit abs. Toleranz 0.01% und TK=... ppm/K';

...

vielleicht dann noch so etwas wie

Schematic.sheet[i].add(s, x, y, orientation);

 

wie geagt ... sinngemäß ... in ULP schreibt man das alles etwas anders. In der Hilfe habe ich keine Hinweise gefunden, daß so etwas gehen könnte ...

 

Danke und Gruß ... Matthias.

  • Sign in to reply
  • Cancel
  • e14 Contributor
    e14 Contributor over 12 years ago in reply to autodeskguest

    Hallo Herr Zaffran,

    ich bin an make..symbol gescheitert, da das Datenblatt des Herstellers nur als .pdf verfügbar ist.

    Die Anleitung "Beschreibung von make-symbol-device-package-bsdl" ist wenig hilfreich, wenn

    man kein .bsm file findet. Da die meisten Eagle helps ähnlich sind, habe ich Eagle abgeschrieben :

    Nicht bedienbar!! und versuche es jetzt mit Kicad. Was war das alte E320 einfach! Schade.

    zicade

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • autodeskguest
    autodeskguest over 13 years ago in reply to e14 Contributor

    A. Zaffran schrieb am Tue, 21 May 2013 08:36

    unsere Programmierer begründen das mit der Problematik, daß in

    bestimmten Situationen eine Endlosschleife entstehen kann.

     

     

    Schon klar. Ich kann in einer Schleife, die über alle Bauteile geht, in

    jedem Durchgang hinten ein Bauteil anhängen. Schon habe ich eine

    Endlosschleife.

     

    Ich könnte jetzt sagen: Jemand, der so ein ULP programmiert, ist ehrlich

    gesagt selber schuld, wenn das passiert.

     

    Ich könnte auch sagen: Ein durchschnittlicher Programmierer sollte in der

    Lage sein, einen Weg zu finden. dieses Problem zu vermeiden. Mir fallen auf

    Anhieb drei unterschiedliche Ansätze ein.

     

    Die Methode, via ULP ein Skript zu generieren und das dann auszuführen,

    verhindert letztlich auch keine Endlosschleife. Schließlich hindert

    niemand das Skript daran, seinerseits ein ULP zu starten  oder?

    --

    Browser-Zugang zu den CadSoft-Support-Foren auf http://www.eaglecentral.ca

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • autodeskguest
    autodeskguest over 13 years ago in reply to Johann.Glaser@gmx.at

    Am 02.06.2013 12:21, schrieb Johann Glaser:

    >>> unsere Programmierer begründen das mit der Problematik, daß in

    >>> bestimmten Situationen eine Endlosschleife entstehen kann.

    >>

    >> Vielen Dank für Ihre Antwort!

    >>

    >> Könnte man diese Fälle vorher detektieren und die Ausführung des ULP mit

    >> einer entsprechenden Fehlermeldung abbrechen? Oder könnte man diese

    >> Fälle gut dokumentieren und die ULP-Programmierer selbst die

    >> Verantwortung übernehmen? Oder könnte man Workarounds schaffen, so dass

    >> die Endlosschleifen nicht auftreten und die ULP-Programmierer dieses

    >> (natürlich dokumentierte) Workaround-Verhalten in ihren Überlegungen

    >> berücksichtigen?

    >

    > Wäre dies möglich?

     

    Auch ich wuenschte mir eigentlich eine Moeglichkeit, mit ULPs die

    interne Datenstruktur zu veraendern. Das gibt aber tatsaechlich nicht

    nur Probleme mit Endlosschleifen, sondern allgemein mit der Datenkonsistenz:

      1. Im momentanen (umstaendlichen) Zustand ist EAGLE selbst fuer die

         Datenkonsistenz zustaendig. Man kann zwar mittels selbstgebastelter

         ULPs EAGLE zum Absturz bringen (muss man sich aber schon Muehe

         geben), Projekte ungespeichert schliessen usw., aber die interen

         Datenstrukturen nicht einfach so umbiegen, dass das ganze Projekt

         zerstoert oder EAGLE instabil wird. Das ist VIEL wert.

      2. Wuerde ein ULP die Datenstrukturen SELBST veraendern koennen, waere

         die Wahrscheinlichkeit, mit einem ULP ein Projekt komplett zu

         zerschiessen, DEUTLICH groesser. Nicht jeder, der EAGLE benutzt,

         ist ein begnadeter Programmierer. Fuer einige Leute waere die

         Datenaenderung per ULP sicherlich sehr nuetzlich, fuer andere

         jedoch ZIEMLICH gefaehrlich...

     

    Andreas Weidner

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Johann.Glaser@gmx.at
    Johann.Glaser@gmx.at over 13 years ago in reply to autodeskguest

    Hallo Herr Zaffran!

     

    Am Dienstag, den 21.05.2013, 10:35 +0200 schrieb Johann Glaser:

    Hallo Herr Zaffran!

     

    Am Dienstag, den 21.05.2013, 08:45 +0200 schrieb A. Zaffran:

    Am 17.05.2013 17:23, schrieb Johann Glaser:

    Hallo Herr Zaffran!

     

    Am Dienstag, den 14.05.2013, 17:06 +0200 schrieb A. Zaffran:

    Am 09.05.2013 13:44, schrieb matthias_jordan@yahoo.de:

    Kurze Frage: ich versuche mich gerade ein wenig an ULPs. Geht das

    Einfügen von Devices in einen Schaltplan, wenn man es denn mittels ULP

    machen will, nur über den Weg der Aufbereitung eines Strings, der beim

    beenden des ULP dann so ausgeführt wird, als ob man die Anweisungen von

    Hand eingegeben hätte (also ADD device@library 'R101' R90 (0 0) u.s.w.)

    oder gibt es - sinngemäß - einen Weg der vielleicht so aussehen könnte:

     

    UL_PART p = new UL_PART(Library, device, package);

    p.value = '47k';

    p.attribute['my_attribute'] = 'Präzisionswiderstand mit abs. Toleranz

    0.01% und TK=... ppm/K';

    ...

    vielleicht dann noch so etwas wie

    Schematic.sheet[i].add(s, x, y, orientation);

     

    wie geagt ... sinngemäß ... in ULP schreibt man das alles etwas anders.

    In der Hilfe habe ich keine Hinweise gefunden, daß so etwas gehen könnte

    ...

     

    Nein, ein ULP kann nur die Daten lesen, wenn man etwas ausführen

    möchte, muß man entweder einen String zurückgeben, in dem der Befehl

    enthalten ist, oder einen String, der ein Script (.scr) startet, in

    dem der/die Befehl/e stehen, die ausgeführt werden sollen.

    Das ist der übliche Weg.

     

    Diese unangenehmer Umstand ist mir persönlich schon länger bewusst. Da

    es jetzt wieder zur Sprache kommt, möchte ich hier einklinken:

     

    Wieso muss das weiterhin so sein?

     

    Zahlreiche ULPs würden enorm vereinfacht, und viele neue Ideen würden

    möglich, wenn es (so oder ähnlich wie Herr Jordan das vorschlägt)

    möglich wäre, auch von ULPs aus alle Aktionen durchzuführen, die bisher

    einem Script vorbehalten sind.

     

    Mit freundlichen Grüßen

       Johann Glaser

     

    Hallo Herr Glaser,

     

    unsere Programmierer begründen das mit der Problematik, daß in

    bestimmten Situationen eine Endlosschleife entstehen kann.

     

    Vielen Dank für Ihre Antwort!

     

    Könnte man diese Fälle vorher detektieren und die Ausführung des ULP mit

    einer entsprechenden Fehlermeldung abbrechen? Oder könnte man diese

    Fälle gut dokumentieren und die ULP-Programmierer selbst die

    Verantwortung übernehmen? Oder könnte man Workarounds schaffen, so dass

    die Endlosschleifen nicht auftreten und die ULP-Programmierer dieses

    (natürlich dokumentierte) Workaround-Verhalten in ihren Überlegungen

    berücksichtigen?

     

    Wäre dies möglich?

     

    Mit freundlichen Grüßen

      Johann Glaser

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • e14 Contributor
    e14 Contributor over 13 years ago in reply to e14 Contributor

    Am 23.05.2013 20:59, schrieb matthias_jordan@yahoo.de:

    Eine Lösung wäre, wenn ich das ULP dazu überreden könnte, beim Benutzer

    eine Koordinate abfragen zu können. Natürlich als Koordinate mit der

    Maus. Ich habe mich aber noch nicht damit beschäftigt, ob das überhaupt

    geht.

     

    Nein, das ist ein Wunsch, den ich schon lange habe, im ULP die

    Mauskoordinate abfragen.

     

    Aber, wenn sie aus dem ULP den Befehl-String direkt zurückgeben,

     

    exit("ADD device@lbr 'prefixnummer' ");

     

    bzw.

     

    sprintf(cmd, "ADD %s@%s '%s%d'", device, lbr, prefix, nummer);

    exit(cmd);

     

    dann hängt das Bauteil am Cursor, und man kann es manuell absetzen.

    Weil ohne fehlende Koordinate (x y) und/oder abschließendem ";" oder

    neuen Befehl, bleibt der momentane Befehl ADD aktiv. image

     

    Das geht nicht aus einem Script heraus, also wenn man in ein SCRIPT

    schreibt, und dann am Ende des ULP das SCRIPT aufruft!

     

    output(scriptname) {

       printf("ADD %s@%s '%s%d'", device, lbr, prefix, nummer);

    }

     

    exit("SCRIPT 'scriptname');

     

    Weil beim Beenden des SCRIPT, wird der Script-Befehl beendet, und somit

    der letzte Befehl innerhalb des Script, und ohne Koordinate wird der

    ADD-Befehl beendet ohne das Bauteil abzusetzen. image

     

    TIP: Achten Sie auch immer darauf, die Namen von Dateien in ' '

    einzuschließen, da uns leider Mister MicroSoft die Leerzeichen

    in Pfad und Dateinamen mit Windows 95 beschert hat, und die

    machen nix wie Ärger. image

     

     

    ***

    Um das Original zu lesen, und auch zuverlässig angehängte Dateien

    bereitstellen zu können, benutzen Sie news.cadsoft.de und einen

    funktionierenden News-Reader wie Thunderbird!

    ***

     

    Mit freundlichen Grüßen / Best regards

     

    Alfred Zaffran

    --

    ______________________________________________________________

    Alfred Zaffran              Support

    CadSoft Computer GmbH       Hotline:   08635-698930

    Pleidolfweg 15              FAX:       08635-698940

    84568 Pleiskirchen          eMail: <alf@cadsoft.de>

                                 Web:   <www.cadsoft.de>

    Registergericht: Amtsgericht Traunstein HRB 5573

    Geschäftsführer: Thomas Liratsch

    ______________________________________________________________

    EAGLE V6.4 availabe now!

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • e14 Contributor
    e14 Contributor over 13 years ago in reply to e14 Contributor

    Auch hier wieder ... vielen Dank für die Antwort.

     

    der entscheidende Teil ist gleich der am Anfang:

    Moment, hier läuft das ULP ja schon durch einen existierenden

    Schaltplan, also ist der Name bekannt, bzw. man ermittelt den

    nächsten freien Namen, indem man eine Schleife durch alle Parts

    mit dem gleichen Prefix laufen lässt. Ist der Zähler der Schleife

    als Nummer hinter dem Prefix vorhanden, geht man zum nächsten,

    spätestens, wenn die Schleife durch alle Bauteile durch ist, hat

    man den letzten seiner Art, und damit den nächsten freien Zähler.

     

    Ich habe es genau so gemacht, weil mir (auch) nix besseres eingefallen ist. Füge also mit ADD ein neues Bauteil ein und vergebe explizit zuvor einen Namen. Die Namensvergabe loopt über alle Bauteile mit dem selben Präfix und sucht die erste "freie Nummer". Präfix + Nummer ist dann der Name. Dann kann ich diesem Bauteil auch später einen Wert verpassen bezugnehmend auf den zuvor vergebenen Namen.

     

    Also ... auch hier höre ich heraus, daß es keine Service-Funktion gibt, der man ohne Programmierung im ULP sagen kann - sinngemäß: "gib mir zum Präfix P die erste freie Nummer" bzw. "gib mir zum Präfix P beginnend ab Nummer N die nächste freie Nummer".

     

    Präfix aus LIB auslesen: guter Tip ... habe ich garnicht dran gedacht ... in meinem Beispiel habe ich das R erst mal "hart" codiert.

     

    dann kommt das ganze aus dem Umfeld ULP und der fälschlichen Benutzung des Begriffes SCRIPT ... Ja ... wir reden nur von ULPs, auch wenn ich vorher vielleicht mal fälschlicherweise das Wort Script benutzt habe.

     

     

    Am Ende wird es nochmal interessant: Ja - natürlich muß ich das Bauteil irgendwo hinplatzieren. Unter Angaben von Koordinaten. Da habe ich gemogelt. Ich setzte den 'Teilschaltplan' in einen Bereich, wo ich (und nur ich) normalerweise keine Schaltpläne zeichne: nämlich in den zweiten, dritten oder vierten Quadranten. Der Plan selber ist bei mir immer im ersten Quadranten. Dann im Anschluß halt markieren und an den Ort verschieben, wo ich den Teil haben will.

     

    Eine Lösung wäre, wenn ich das ULP dazu überreden könnte, beim Benutzer eine Koordinate abfragen zu können. Natürlich als Koordinate mit der Maus. Ich habe mich aber noch nicht damit beschäftigt, ob das überhaupt geht.

     

    ich für meinen Teil betrachte die Fragen als beantwortet ... nochmal vielen Dank ... Gruß ... Matthias, DL8NCI.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • autodeskguest
    autodeskguest over 13 years ago in reply to e14 Contributor

    Hallo Herr Zaffran!

     

    Am Dienstag, den 21.05.2013, 08:45 +0200 schrieb A. Zaffran:

    Am 17.05.2013 17:23, schrieb Johann Glaser:

    Hallo Herr Zaffran!

     

    Am Dienstag, den 14.05.2013, 17:06 +0200 schrieb A. Zaffran:

    Am 09.05.2013 13:44, schrieb matthias_jordan@yahoo.de:

    Kurze Frage: ich versuche mich gerade ein wenig an ULPs. Geht das

    Einfügen von Devices in einen Schaltplan, wenn man es denn mittels ULP

    machen will, nur über den Weg der Aufbereitung eines Strings, der beim

    beenden des ULP dann so ausgeführt wird, als ob man die Anweisungen von

    Hand eingegeben hätte (also ADD device@library 'R101' R90 (0 0) u.s.w.)

    oder gibt es - sinngemäß - einen Weg der vielleicht so aussehen könnte:

     

    UL_PART p = new UL_PART(Library, device, package);

    p.value = '47k';

    p.attribute['my_attribute'] = 'Präzisionswiderstand mit abs. Toleranz

    0.01% und TK=... ppm/K';

    ...

    vielleicht dann noch so etwas wie

    Schematic.sheet[i].add(s, x, y, orientation);

     

    wie geagt ... sinngemäß ... in ULP schreibt man das alles etwas anders.

    In der Hilfe habe ich keine Hinweise gefunden, daß so etwas gehen könnte

    ...

     

    Nein, ein ULP kann nur die Daten lesen, wenn man etwas ausführen

    möchte, muß man entweder einen String zurückgeben, in dem der Befehl

    enthalten ist, oder einen String, der ein Script (.scr) startet, in

    dem der/die Befehl/e stehen, die ausgeführt werden sollen.

    Das ist der übliche Weg.

     

    Diese unangenehmer Umstand ist mir persönlich schon länger bewusst. Da

    es jetzt wieder zur Sprache kommt, möchte ich hier einklinken:

     

    Wieso muss das weiterhin so sein?

     

    Zahlreiche ULPs würden enorm vereinfacht, und viele neue Ideen würden

    möglich, wenn es (so oder ähnlich wie Herr Jordan das vorschlägt)

    möglich wäre, auch von ULPs aus alle Aktionen durchzuführen, die bisher

    einem Script vorbehalten sind.

     

    Mit freundlichen Grüßen

       Johann Glaser

     

    Hallo Herr Glaser,

     

    unsere Programmierer begründen das mit der Problematik, daß in

    bestimmten Situationen eine Endlosschleife entstehen kann.

     

    Vielen Dank für Ihre Antwort!

     

    Könnte man diese Fälle vorher detektieren und die Ausführung des ULP mit

    einer entsprechenden Fehlermeldung abbrechen? Oder könnte man diese

    Fälle gut dokumentieren und die ULP-Programmierer selbst die

    Verantwortung übernehmen? Oder könnte man Workarounds schaffen, so dass

    die Endlosschleifen nicht auftreten und die ULP-Programmierer dieses

    (natürlich dokumentierte) Workaround-Verhalten in ihren Überlegungen

    berücksichtigen?

     

    Mit freundlichen Grüßen

      Johann Glaser

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • e14 Contributor
    e14 Contributor over 13 years ago in reply to Johann.Glaser@gmx.at

    Am 17.05.2013 17:23, schrieb Johann Glaser:

    Hallo Herr Zaffran!

     

    Am Dienstag, den 14.05.2013, 17:06 +0200 schrieb A. Zaffran:

    Am 09.05.2013 13:44, schrieb matthias_jordan@yahoo.de:

    Kurze Frage: ich versuche mich gerade ein wenig an ULPs. Geht das

    Einfügen von Devices in einen Schaltplan, wenn man es denn mittels ULP

    machen will, nur über den Weg der Aufbereitung eines Strings, der beim

    beenden des ULP dann so ausgeführt wird, als ob man die Anweisungen von

    Hand eingegeben hätte (also ADD device@library 'R101' R90 (0 0) u.s.w.)

    oder gibt es - sinngemäß - einen Weg der vielleicht so aussehen könnte:

     

    UL_PART p = new UL_PART(Library, device, package);

    p.value = '47k';

    p.attribute['my_attribute'] = 'Präzisionswiderstand mit abs. Toleranz

    0.01% und TK=... ppm/K';

    ...

    vielleicht dann noch so etwas wie

    Schematic.sheet[i].add(s, x, y, orientation);

     

    wie geagt ... sinngemäß ... in ULP schreibt man das alles etwas anders.

    In der Hilfe habe ich keine Hinweise gefunden, daß so etwas gehen könnte

    ...

     

    Nein, ein ULP kann nur die Daten lesen, wenn man etwas ausführen

    möchte, muß man entweder einen String zurückgeben, in dem der Befehl

    enthalten ist, oder einen String, der ein Script (.scr) startet, in

    dem der/die Befehl/e stehen, die ausgeführt werden sollen.

    Das ist der übliche Weg.

     

    Diese unangenehmer Umstand ist mir persönlich schon länger bewusst. Da

    es jetzt wieder zur Sprache kommt, möchte ich hier einklinken:

     

    Wieso muss das weiterhin so sein?

     

    Zahlreiche ULPs würden enorm vereinfacht, und viele neue Ideen würden

    möglich, wenn es (so oder ähnlich wie Herr Jordan das vorschlägt)

    möglich wäre, auch von ULPs aus alle Aktionen durchzuführen, die bisher

    einem Script vorbehalten sind.

     

    Mit freundlichen Grüßen

       Johann Glaser

     

    Hallo Herr Glaser,

     

    unsere Programmierer begründen das mit der Problematik, daß in

    bestimmten Situationen eine Endlosschleife entstehen kann.

     

     

    ***

    Um das Original zu lesen, und auch zuverlässig angehängte Dateien

    bereitstellen zu können, benutzen Sie news.cadsoft.de und einen

    funktionierenden News-Reader wie Thunderbird!

    ***

     

    Mit freundlichen Grüßen / Best regards

     

    Alfred Zaffran

    --

    ______________________________________________________________

    Alfred Zaffran              Support

    CadSoft Computer GmbH       Hotline:   08635-698930

    Pleidolfweg 15              FAX:       08635-698940

    84568 Pleiskirchen          eMail: <alf@cadsoft.de>

                                 Web:   <www.cadsoft.de>

    Registergericht: Amtsgericht Traunstein HRB 5573

    Geschäftsführer: Thomas Liratsch

    ______________________________________________________________

    EAGLE V6.4 availabe now!

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Johann.Glaser@gmx.at
    Johann.Glaser@gmx.at over 13 years ago in reply to e14 Contributor

    Hallo Herr Zaffran!

     

    Am Dienstag, den 14.05.2013, 17:06 +0200 schrieb A. Zaffran:

    Am 09.05.2013 13:44, schrieb matthias_jordan@yahoo.de:

    Kurze Frage: ich versuche mich gerade ein wenig an ULPs. Geht das

    Einfügen von Devices in einen Schaltplan, wenn man es denn mittels ULP

    machen will, nur über den Weg der Aufbereitung eines Strings, der beim

    beenden des ULP dann so ausgeführt wird, als ob man die Anweisungen von

    Hand eingegeben hätte (also ADD device@library 'R101' R90 (0 0) u.s.w.)

    oder gibt es - sinngemäß - einen Weg der vielleicht so aussehen könnte:

     

    UL_PART p = new UL_PART(Library, device, package);

    p.value = '47k';

    p.attribute['my_attribute'] = 'Präzisionswiderstand mit abs. Toleranz

    0.01% und TK=... ppm/K';

    ...

    vielleicht dann noch so etwas wie

    Schematic.sheet[i].add(s, x, y, orientation);

     

    wie geagt ... sinngemäß ... in ULP schreibt man das alles etwas anders.

    In der Hilfe habe ich keine Hinweise gefunden, daß so etwas gehen könnte

    ...

     

    Nein, ein ULP kann nur die Daten lesen, wenn man etwas ausführen

    möchte, muß man entweder einen String zurückgeben, in dem der Befehl

    enthalten ist, oder einen String, der ein Script (.scr) startet, in

    dem der/die Befehl/e stehen, die ausgeführt werden sollen.

    Das ist der übliche Weg.

     

    Diese unangenehmer Umstand ist mir persönlich schon länger bewusst. Da

    es jetzt wieder zur Sprache kommt, möchte ich hier einklinken:

     

    Wieso muss das weiterhin so sein?

     

    Zahlreiche ULPs würden enorm vereinfacht, und viele neue Ideen würden

    möglich, wenn es (so oder ähnlich wie Herr Jordan das vorschlägt)

    möglich wäre, auch von ULPs aus alle Aktionen durchzuführen, die bisher

    einem Script vorbehalten sind.

     

    Mit freundlichen Grüßen

      Johann Glaser

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • e14 Contributor
    e14 Contributor over 13 years ago in reply to e14 Contributor

    Am 16.05.2013 21:04, schrieb matthias_jordan@yahoo.de:

    Danke für die Antworten ... das habe ich vermutet, weil ich auch kein

    Beispiel gefunden hatte, das sich an meinen Vorstellungen orientiert

    hätte. Wollte nur sicher gehen daß es nur zufällig kein Beispiel gibt,

    es aber trotzdem gehen würde.

     

    Trotzdem gibt es jetzt eine Anschlußfrage:

     

    Wenn das gehen würde, was ich mir gewünscht hätte, dann könnte ich, ohne

    zu wissen, welchen Namen das Bauteil erhalten wird, es mit einem Wert

    von Anfang an ausstatten. Also:

    UL_PART p = new UL_PART(Library, device, package);

    p.value = '47k';

    Schematic.sheet[i].add(s, x, y, orientation);

     

    Moment, hier läuft das ULP ja schon durch einen existierenden

    Schaltplan, also ist der Name bekannt, bzw. man ermittelt den

    nächsten freien Namen, indem man eine Schleife durch alle Parts

    mit dem gleichen Prefix laufen lässt. Ist der Zähler der Schleife

    als Nummer hinter dem Prefix vorhanden, geht man zum nächsten,

    spätestens, wenn die Schleife durch alle Bauteile durch ist, hat

    man den letzten seiner Art, und damit den nächsten freien Zähler.

     

     

    Ob das nun R1, R10, R110 oder was auch immer wird, wäre mir

    egal.Vielleicht hätter der Autor der Library sogar beschlossen

    Widerstände mit W zu benenne. Ungewähnlich, aber prinzipiell möglich.

     

    Das kann man über UL_DEIVCE mit .prefix auslesen, aber dann wäre es

    kein Widerstand.

    Man sollte sich schon an die (inter)nationalen Vorgaben halten.

     

     

    Bei Sicherungen mag der Namenspräfix nicht mehr so offensichtlich sein

    ...

    F == Fuse (oder auch wie manche sagen, Feinsicherung)

    In alten Plänen sieht man gelegentlich auch S oder SI == Sicherung.

    Manche Anwender nehmen das mit dem Prefix nicht immer so genau.

     

     

    Wenn ich das ganze nun Script/String-basiert mache, dann weiß ich

    natürlich noch nicht, welchen Namen das Bauteil bekommen wird. Ich

     

    ADD device 'name'

    In einem SCRIPT (kein ULP, und auch nicht mit einem ULP verwechseln)

    kann man den Namen vorgeben. Siehe ***

     

     

    brauche aber den Namen, um im Anschluß VALUE <unbekannter Name> 47k zu

    notieren.

     

    ADD device_name@library_name name gate orientation (koordinate)

     

    Wenn der library_name nicht bekannt ist, kann man ihn auch weg lassen,

    Eagle sucht dann in allen LBRs die in USE sind nach dem Namen.

     

    Beispiel:

     

    ADD r-eu_r0603 'X1' (100 100);

     

    ***

    Hier wird das Bauteil "R-EU_R0603" mit dem Namen "X1" platziert, obwohl

    der Prefix im Device auf "R" für Widerstand/Resistor gesetzt ist.

    Der Name muß nur angegeben werden, wenn man eine anderen Namen,

    als den, der aus dem Prefix und dem nächsten freien Zähler, den Eagle

    ermittelt, vergeben will.

     

    Den Wert kann man dann mit "VALUE X1 'wert';"  zuweisen.

     

     

    Gibt es einen anderen Weg als den, den ich mir vorstelle, um das

    gewünschte zu realisieren?

     

    Mir ist noch nicht ganz klar, was genau der Zweck sein soll?

    Einfach ein Bauteil in einen bestehenden Schaltplan einfügen?

    Dazu muß aber eine Koordinate bekannt sein, sonst kann das Device/Part

    nicht platziert werden!

     

    HELP ADD

    HELP USE

    HELP VALUE

     

     

    ***

    Um das Original zu lesen, und auch zuverlässig angehängte Dateien

    bereitstellen zu können, benutzen Sie news.cadsoft.de und einen

    funktionierenden News-Reader wie Thunderbird!

    ***

     

    Mit freundlichen Grüßen / Best regards

     

    Alfred Zaffran

    --

    ______________________________________________________________

    Alfred Zaffran              Support

    CadSoft Computer GmbH       Hotline:   08635-698930

    Pleidolfweg 15              FAX:       08635-698940

    84568 Pleiskirchen          eMail: <alf@cadsoft.de>

                                 Web:   <www.cadsoft.de>

    Registergericht: Amtsgericht Traunstein HRB 5573

    Geschäftsführer: Thomas Liratsch

    ______________________________________________________________

    EAGLE V6.4 availabe now!

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube