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
  • 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 User Support (English) Expose open project path in ULP
  • 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 15 replies
  • Subscribers 180 subscribers
  • Views 1192 views
  • Users 0 members are here
Related

Expose open project path in ULP

Former Member
Former Member over 15 years ago

It would be useful if the path of the Open Project folder could be

determined from within a ULP.

 

Such a command should reveal the path of the Open project. If none is open

then it should indicate this by returning a null.

This would enable ULP code efficiencies when determining the folders used by

Eagle when a Project is open /or not..

 

Eagle already knows the path so I imagine that  it should not be a large

task to expose it via the User Language.

 

Thanks in anticipation

Warren

 

 

 

  • Sign in to reply
  • Cancel
Parents
  • kcadsoft
    kcadsoft over 15 years ago

    On 08/26/10 02:39, Warren Brayshaw wrote:

    It would be useful if the path of the Open Project folder could be

    determined from within a ULP.

     

    Such a command should reveal the path of the Open project. If none is open

    then it should indicate this by returning a null.

    This would enable ULP code efficiencies when determining the folders used by

    Eagle when a Project is open /or not..

     

    Eagle already knows the path so I imagine that  it should not be a large

    task to expose it via the User Language.

     

    You can do this with

     

      cfgget("EAGLE:Project.Dir")

     

    The cfgget() function was introduced in version 5.9.2.

     

    Klaus Schmidinger

    --

    _______________________________________________________________

     

    Klaus Schmidinger                       Phone: +49-8635-6989-10

    CadSoft Computer GmbH                   Fax:   +49-8635-6989-40

    Pleidolfweg 15                          Email:   kls@cadsoft.de

    D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de

    _______________________________________________________________

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

     

    Warren Brayshaw wrote:

    It would be useful if the path of the Open Project folder could be

    determined from within a ULP.

    >

    Such a command should reveal the path of the Open project. If none is

    open

    then it should indicate this by returning a null.

    This would enable ULP code efficiencies when determining the folders

    used by

    Eagle when a Project is open /or not..

    >

    Eagle already knows the path so I imagine that  it should not be a large

    task to expose it via the User Language.

    >

     

    "Klaus Schmidinger"  replied

     

    You can do this with

    >

      cfgget("EAGLE:Project.Dir")

    >

    The cfgget() function was introduced in version 5.9.2.

    >

     

     

    Thank you, cfgget and cfgset are great additions.

     

    I suspect, for the reasons below , this does provide the correct path in all

    situations.

    Right now I cannot test this but have read the v5.10 help for the commands.

     

    Please tell me where my logic fails.

     

    (a) cfgget queries the user's eaglerc file.

    (b) eaglerc is updated when the user performs a File/Save All or when Eagle

    is closed

    (c) user's eaglerc file is not updated when a project is closed and another

    opened, within a session

     

    In the following scenario the previous project.dir will be returned.

     

    (1) Eagle is closed with an unclosed project ("Project1")

    (2) Eagle is opened and "Project1" is also open. The user's eaglerc file

    Project.dir points to "Project1"

    (3) Close "Project" and open "Project2"

    (4) Query the eaglerc file Project.dir with cfgget and it returns "Project1"

    (which is the previously open project) and not "Project2" (the currently

    open project).

     

    My argument pivots on point(c) above. The user's eaglerc file is not being

    updated when a project is closed and another opened, within a session. If it

    is then there is no problem and my apologies for wasting your time.

     

    Warren

     

     

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kcadsoft
    kcadsoft over 15 years ago in reply to Former Member

    On 08/26/10 23:54, Warren Brayshaw wrote:

    Warren Brayshaw wrote:

    ...

    My argument pivots on point(c) above. The user's eaglerc file is not being

    updated when a project is closed and another opened, within a session.

     

    cfgget() always returns the actual value currently used in the program.

     

    Klaus Schmidinger

    --

    _______________________________________________________________

     

    Klaus Schmidinger                       Phone: +49-8635-6989-10

    CadSoft Computer GmbH                   Fax:   +49-8635-6989-40

    Pleidolfweg 15                          Email:   kls@cadsoft.de

    D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de

    _______________________________________________________________

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

     

    ...

    My argument pivots on point(c) above. The user's eaglerc file is not

    being

    updated when a project is closed and another opened, within a session.

    >

     

    "Klaus Schmidinger"  wrote

    cfgget() always returns the actual value currently used in the program.

    >

    Klaus Schmidinger

     

     

    That's great

     

    Many Thanks

    Warren

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

    Am 27.08.2010 10:13, schrieb Klaus Schmidinger:

    cfgget() always returns the actual value currently used in the program.

     

    Note that this is NOT always the case with all possible parameters:

    Apparently, 'cfgget()' always returns the latest setting defined with

    'cfgset()', which might NOT be the value currently used by the program,

    because for some parameters, an EAGLE restart is necessary for

    re-reading them.

     

    Example:

      1. In the print dialog, set the left border to 5mm.

      2. Run the following ULP:

           dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

           cfgset("EAGLE:Printer.Border.Left","80000");

           dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

      3. This first shows a border of '500000' (=5mm) and then

         '80000' (=8mm), which SEEMS to be conclusive.

      4. Unfortunately, now 'cfgget()' does NOT return the value

         currently used in the program any more, because EAGLE still

         uses the old value of 5mm, as can be seen by opening the

         print dialog again.

      5. When running the above ULP, exiting EAGLE without

         displaying the print dialog, and starting EAGLE anew,

         the changed left border of 8mm is used.

     

    Therefore, 'cfgget()' only works properly if the values were not

    previously modified by 'cfgset()'. This is a bit frustrating, because

    this makes 'cfgset()' practically useless for changing EAGLE settings...

     

    Andreas Weidner

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

    Am 27.08.2010 10:13, schrieb Klaus Schmidinger:

    cfgget() always returns the actual value currently used in the program.

     

    Note that this is NOT always the case with all possible parameters:

    Apparently, 'cfgget()' always returns the latest setting defined with

    'cfgset()', which might NOT be the value currently used by the program,

    because for some parameters, an EAGLE restart is necessary for

    re-reading them.

     

    Example:

      1. In the print dialog, set the left border to 5mm.

      2. Run the following ULP:

           dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

           cfgset("EAGLE:Printer.Border.Left","80000");

           dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

      3. This first shows a border of '500000' (=5mm) and then

         '80000' (=8mm), which SEEMS to be conclusive.

      4. Unfortunately, now 'cfgget()' does NOT return the value

         currently used in the program any more, because EAGLE still

         uses the old value of 5mm, as can be seen by opening the

         print dialog again.

      5. When running the above ULP, exiting EAGLE without

         displaying the print dialog, and starting EAGLE anew,

         the changed left border of 8mm is used.

     

    Therefore, 'cfgget()' only works properly if the values were not

    previously modified by 'cfgset()'. This is a bit frustrating, because

    this makes 'cfgset()' practically useless for changing EAGLE settings...

     

    Andreas Weidner

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Former Member
    Former Member over 15 years ago in reply to Former Member

     

    schrieb Klaus Schmidinger:

    cfgget() always returns the actual value currently used in the program.

    >

     

    "Andreas Weidner" wrote..

    Note that this is NOT always the case with all possible parameters:

    Apparently, 'cfgget()' always returns the latest setting defined with

    'cfgset()', which might NOT be the value currently used by the program,

    because for some parameters, an EAGLE restart is necessary for

    re-reading them.

    >

    Example: ......................

     

     

    Nice example

     

    The Help for cfgget() and cfgset() confirms:

    "Some EAGLE parameters may require a restart of EAGLE for changes to take

    effect".

     

    Something you may like to try out is whether your parameters of interest can

    be put into effect with a "File Save All" thus saving a restart.

    A recent version update changed  "File Save All" to include an update of

    eaglerc.usr so there is possibly a win here.

    This all depends on Eagle re evaluating the eaglerc after a File Save all

    and re-setting the program accordingly. With the presence of cfgget() and

    cfgset() now, I feel this should happen.

     

    This does not help from within the ULP though.

     

     

    Warren

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kcadsoft
    kcadsoft over 15 years ago in reply to Former Member

    On 08/28/10 22:36, Andreas Weidner wrote:

    Am 27.08.2010 10:13, schrieb Klaus Schmidinger:

    >> cfgget() always returns the actual value currently used in the program.

     

    Note that this is NOT always the case with all possible parameters:

    Apparently, 'cfgget()' always returns the latest setting defined with

    'cfgset()', which might NOT be the value currently used by the program,

    because for some parameters, an EAGLE restart is necessary for

    re-reading them.

     

    Example:

    1. In the print dialog, set the left border to 5mm.

    2. Run the following ULP:

          dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

          cfgset("EAGLE:Printer.Border.Left","80000");

          dlgMessageBox(cfgget("EAGLE:Printer.Border.Left"));

    3. This first shows a border of '500000' (=5mm) and then

        '80000' (=8mm), which SEEMS to be conclusive.

    4. Unfortunately, now 'cfgget()' does NOT return the value

        currently used in the program any more, because EAGLE still

        uses the old value of 5mm, as can be seen by opening the

        print dialog again.

    5. When running the above ULP, exiting EAGLE without

        displaying the print dialog, and starting EAGLE anew,

        the changed left border of 8mm is used.

     

    Therefore, 'cfgget()' only works properly if the values were not

    previously modified by 'cfgset()'. This is a bit frustrating, because

    this makes 'cfgset()' practically useless for changing EAGLE settings...

     

    Fixed for the next beta version.

     

    Klaus Schmidinger

    --

    _______________________________________________________________

     

    Klaus Schmidinger                       Phone: +49-8635-6989-10

    CadSoft Computer GmbH                   Fax:   +49-8635-6989-40

    Pleidolfweg 15                          Email:   kls@cadsoft.de

    D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de

    _______________________________________________________________

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

    Am 30.08.2010 11:09, schrieb Klaus Schmidinger:

    >> Therefore, 'cfgget()' only works properly if the values were not

    >> previously modified by 'cfgset()'. This is a bit frustrating, because

    >> this makes 'cfgset()' practically useless for changing EAGLE settings...

    >

    Fixed for the next beta version.

     

    This SOUNDS good, but it leaves room for the following interpretations,

    though:

      1. Will 'cfgget()' be fixed, so that it REALLY returns the value

         currently in use (sometimes simply ignoring 'cfgset()' before

         restarting EAGLE)? That would be better than now, but not the

         optimum...

      2. Will 'cfgset()' be fixed, so that it REALLY modifies the

         current value without needing to restart EAGLE (so that

         'cfgget()' automatically reports the correct value)? That

         WOULD be the optimum...

     

    Andreas Weidner

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • kcadsoft
    kcadsoft over 15 years ago in reply to Former Member

    On 08/30/10 13:06, Andreas Weidner wrote:

    Am 30.08.2010 11:09, schrieb Klaus Schmidinger:

    >>> Therefore, 'cfgget()' only works properly if the values were not

    >>> previously modified by 'cfgset()'. This is a bit frustrating, because

    >>> this makes 'cfgset()' practically useless for changing EAGLE settings...

    >>

    >> Fixed for the next beta version.

     

    This SOUNDS good, but it leaves room for the following interpretations,

    though:

    1. Will 'cfgget()' be fixed, so that it REALLY returns the value

        currently in use (sometimes simply ignoring 'cfgset()' before

        restarting EAGLE)? That would be better than now, but not the

        optimum...

    2. Will 'cfgset()' be fixed, so that it REALLY modifies the

        current value without needing to restart EAGLE (so that

        'cfgget()' automatically reports the correct value)? That

        WOULD be the optimum...

     

    The problem was that the PRINT dialog only read the eaglerc parameters

    once when it was opened for the first time during an EAGLE session.

    The fix now makes it read the eaglerc parameters every time it opens.

     

    Klaus Schmidinger

    --

    _______________________________________________________________

     

    Klaus Schmidinger                       Phone: +49-8635-6989-10

    CadSoft Computer GmbH                   Fax:   +49-8635-6989-40

    Pleidolfweg 15                          Email:   kls@cadsoft.de

    D-84568 Pleiskirchen, Germany           URL:     www.cadsoft.de

    _______________________________________________________________

     

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Former Member
    Former Member over 15 years ago in reply to kcadsoft

    Am 31.08.2010 11:36, schrieb Klaus Schmidinger:

    The problem was that the PRINT dialog only read the eaglerc parameters

    once when it was opened for the first time during an EAGLE session.

    The fix now makes it read the eaglerc parameters every time it opens.

     

    Murphy's law again: The first and only time I test 'cfgget()' and

    'cfgset()' is done with the only settings that don't work. Well - life's

    hard...

     

    Andreas Weidner

     

    • 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 © 2025 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.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube