• 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 Scripting - Skill
  3. Reading from a list of strings

Stats

  • Replies 2
  • Subscribers 18
  • Views 9890
  • Members are here 0
More Content

Reading from a list of strings

Arashk
Arashk over 7 years ago

Hello, 

I am trying to extract the layer names from the crossxection and compare them to the artwork films to make sure there are no missing films.  

I use the axlGetXSection() to get a the following : 

(("" "SURFACE" "AIR" "0 mil" "0 w/cm-degC"
"0 mho/cm" "1.000000" nil nil "0"
"" nil nil nil "0.000000"
)
("" "DIELECTRIC" "FR-4" "0.787402 mil" "0 w/cm-degC"
"0 mho/cm" "2.500000" nil nil "0.035"
"" nil nil nil "0.000000"
)
("TOP" "PLANE" "COPPER" "1.181102 mil" "0 w/cm-degC"
"595900 mho/cm" "4.300000" nil t "0.035"
"" nil nil nil "90.000000"
)
("" "DIELECTRIC" "FR-4" "2.755906 mil" "0 w/cm-degC"
"0 mho/cm" "4.000000" nil nil "0.035"
"" nil nil nil "0.000000"
)
("S1" "CONDUCTOR" "COPPER" "0.787402 mil" "0 w/cm-degC"
"595900 mho/cm" "4.300000" nil nil "0.035"
"" "4.000000" "0.035" nil "90.000000"
)
)

So what I am looking to do now is to read the first string in each parentheses and check whether its null ("") and if not record the name somewhere.

I am very new to skill so any help would be appreciated even if it's another idea. 

Thanks,

-Arash 

  • Cancel
  • Sign in to reply
  • eDave
    eDave over 7 years ago

    mapcar('car setof(l, axlGetXSection(), car(l) != ""))

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • joma
    joma over 7 years ago

    For an alternative you could try this:

    defun( st_CheckMissingFilms ()        
        let( ( l_etch_layer_names l_art_film_names etchNameFound )
            etchNameFound = nil
            l_etch_layer_names = axlGetParam("paramLayerGroup:etch")->groupMembers
            l_art_film_names = axlGetParam("artwork")->groupMembers
            
            foreach( etch_layer_name l_etch_layer_names
                                etchNameFound = 0
                    foreach( art_film_name l_art_film_names
                            when( rexMatchp( etch_layer_name  art_film_name )
                                    etchNameFound = 1
                                );when
                    );foreach
            when( etchNameFound == 0
                    println(list("Etch layer name " etch_layer_name " NOT FOUND in Gerber film list " ))
                );when
            
            );foreach
        );let    
        );defun

    Jim O'Mahony

    • Cancel
    • Vote Up +1 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