• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. How to keep your variables in the design?

Stats

  • Replies 25
  • Subscribers 160
  • Views 12709
  • Members are here 0
More Content

How to keep your variables in the design?

Silver John
Silver John over 14 years ago

Hi, All.

I have a script that creates a form with several fields. I want to save the contents of these fields in design, and the next time when I open the design and launches the script I have already configured the form.

There are functions for including the file or string to .brd-file, there are functions for working with the properties of the design...

What is the best way to save my settings?

Maybe someone has an example code?

Thank you.

  • Sign in to reply
  • Cancel
  • fxffxf
    fxffxf over 14 years ago

    You are missing one last car since errsetstring returns a list which has a list, add

         mylist1 = car(mylist1)

    then you can do

         mylist1->stype

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Ejlersen
    Ejlersen over 14 years ago

    Hi

    thanks for your help, my mistake i missed the extra paranthesis.

    This is really an excellent way to store skill program settings inside a database file

    Best regards

    Ole

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • fxffxf
    fxffxf over 14 years ago

     Summary of this technique:

         This uses an attachment to store in the database a list of variables. For
         example, you design a form where the user enters in their preferences and
         you manage them in Skill via a disembodied property list. You would like to
         store the user's preferences with the design.

         ; create an attachment name, DO NOT USE "fxf". I would suggest using an
         ; underscore, company name and application to make it unique. For example:
         ;   _acme_bom_rpt
         ; would be a good attachment name.
         attachName = "fxf"

         ; A typical disembodied property list
         mylist = ncons(nil)
         mylist->ccw = t
         mylist->middle = nil
         mylist->cx = 0.12
         mylist->cy = 10.192
         mylist->layer = "TOP"
         ; NOTE:
         ;    Do NOT Store dbid's in the disembodied list or make sure to remove
         ;    them before storing as an attachment.

         ; Store list in current design (assuming user saves design)
         dataString = sprintf(nil " '%L" mylist)
         axlCreateAttachment(attachName nil 0 'string dataString)

         ; Next time user runs your Skill code, here is how to init the list:
         attach = axlGetAttachment(attachName 'string)
         if( attach)  then
               mylist = car(errsetstring(attach->data))
         else     ; no list stored in design so init to default settings
              mylist = ncons(nil)
              mylist->ccw = t
         )

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Silver John
    Silver John over 14 years ago

    Yes, excellent. Thanks again fxffxf.

    Ole, you can see the implementation for the storing to attachment, to property or to a file in Align tool (storeFormData() and restoreFormData()).

    fxffxf, how long you use the save as attachment? There were no problems?

    PS I already feeling paranoid with this reliability.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Ejlersen
    Ejlersen over 14 years ago

    Hi

    This is just brilliant - I wish I knew this before.

    Another tip is that if you program forms that depends on the board accuracy (for deciding the number of decimal points) then add 1 to the precision so that you don't end up with storing a 1 in the variable since it will then understand it as being an flonum

    John, I'm not worried about this, in my 14 years working as a channel partner for Cadence I've not seen a board loose information going from one release to another. So I'm confident that this will work going forward also.

    Best regards

    Ole

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
<>
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information