• 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. Procedure in the while loop

Stats

  • State Suggested Answer
  • Replies 11
  • Answers 2
  • Subscribers 160
  • Views 11300
  • Members are here 0
More Content

Procedure in the while loop

JuriV
JuriV over 2 years ago

Hi everybody,

I want to execute a procedure until the Escape key will be pressed.

Example:

continue = t
while( continue

        ....execute procedure

if (cancel or escape) then
continue = nil

);end while

How could I Do that?

Thanks

  • Cancel
  • Sign in to reply
Parents
  • B Bruekers
    0 B Bruekers over 2 years ago

    What are you planning  to do in the loop? 

    If it is some user interaction with selection then use the axlEnterEvent() .

    Otherwise look at the axlCancelOff, axlCancelOn, axlCancelTest  functions.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • JuriV
    0 JuriV over 2 years ago in reply to B Bruekers

    Hi B Bruekers,

    I have a code to align the vias (vertical or horizonthal). I want to align the VIAS inside of the while loop. The VIAs are selected using

    dbid_vias = axlGetSelSet(axlSingleSelectBox()). For example I select three VIAs to aligne them, then next four VIAs, then next ten Vias and so on.

    This function should work until Escape (or another termination) is pressed, which means "No more VIAs to aligned".

    I hope this explained a function.

    Best regards

    Juri

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • JuriV
    0 JuriV over 2 years ago in reply to B Bruekers

    Thank you very much, I will try it

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • JuriV
    0 JuriV over 2 years ago in reply to JuriV

    I tested the function "axlEnterEvent" again. By Mouse CLICK the Message "This is a Test CLICK" appears. If Escape (CANCEL) is pressed - "End of Loop". But how the DONE could be used? You mentioned the CANCEL and DONE should be connected to the RMB automaticaly.

    Hier is the code:

    procedure( EnterEvent()
    let(( loop event)
    eventMask = '( PICK CANCEL DONE)
    loop = t
    while( loop   
       
         event = axlEnterEvent(eventMask, nil, t)
         case(event -> type
        
         ('PICK             
        printf("This is a Test CLICK")  

         ); end PICK

     ('CANCEL
         printf("End of Loop")
         loop=nil        
     );end CANCEL
     
     ('DONE
         printf("End of Loop")
         loop=nil
     );end DONE

        );end while
      );end case     
     );end let
    );end procedure

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • B Bruekers
    0 B Bruekers over 2 years ago in reply to JuriV

    You must bind the SKILL function to a command line function : axlCmdRegister( "EnterEvent" 'EnterEvent  ?cmdType "interactive")

    Doing so and starting the command from the command line results in:

    scriptmode +e

    EnterEvent

    EnterEvent

    prepopup 143.484 -183.964

    pop Done

    End of Loop DONE

    generaledit

    EnterEvent

    EnterEvent

    prepopup 107.355 -201.512

    pop Cancel

    End of Loop CANCEL

    generaledit

    (I've added a Done and Cancel to the printf())

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • JuriV
    0 JuriV over 2 years ago in reply to B Bruekers

    Ok, Thanks.
    This works in Command Mode only, not in the SKILL Mode. That is my mistake.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • JuriV
    0 JuriV over 2 years ago in reply to B Bruekers

    Hi,
    Do you know how is possible to change the CHECKBOX in the FORM during the while loop?
    Like in your Example, I put in the STOPDRAG section:

    procedure "Do something 1" if CHECKBOX in the FORM is checked

    procedure "Do something 2" if CHECKBOX in the FORM is NOT checked

    In my code this not works. I have to interrupt (e.g. with axlCancelOn()) the WHILE loop to check/or uncheck the CHECKBOX. Do you know if this works without  interruption?

    Thanks
    JuriV

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Reply
  • JuriV
    0 JuriV over 2 years ago in reply to B Bruekers

    Hi,
    Do you know how is possible to change the CHECKBOX in the FORM during the while loop?
    Like in your Example, I put in the STOPDRAG section:

    procedure "Do something 1" if CHECKBOX in the FORM is checked

    procedure "Do something 2" if CHECKBOX in the FORM is NOT checked

    In my code this not works. I have to interrupt (e.g. with axlCancelOn()) the WHILE loop to check/or uncheck the CHECKBOX. Do you know if this works without  interruption?

    Thanks
    JuriV

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Children
No Data
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