• 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. Custom IC SKILL
  3. How to undo ruler?

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 143
  • Views 24682
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to undo ruler?

kbhow
kbhow over 16 years ago

Hi,

 I have searching many method to undo ruler by using skill but failed.

Its there any method /skill code that manage to draw and undo the ruler one by one.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 16 years ago

    All there currently is is leClearAllRuler(). You can't do them one by one.

    There are however enhancements coming with rulers in IC614. I think a side effect of that will allow you to create and then delete rulers individually.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi Andrew,

     Thanks for the reply.

    That means we can't undo/delete the ruler individually, so sad to know that. :(

    Hopefully i can get IC614 soon.

     

    Regards,

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 16 years ago

    You can get creative and make your own ruler function that stores off your ruler points in a global variable. Then you can undo the rulers by clearing them all and recreating all rulers except the last one.

    procedure(myRuler(@optional (cv geGetEditCellView()))
        unless(boundp('rulerHistory)
            rulerHistory = makeTable("rulerHistory" nil)
        )
        pts = enterLine(?prompts list("Point to first point of the ruler" "Point at the next point of the ruler") ?wantPoints 2)
        leCreateRuler(geGetEditCellView() pts)
        rulerHistory[cv] = cons(pts rulerHistory[cv])
    ) ;proc

    procedure(clearMyLastRuler(@optional (clearAll nil) (cv geGetEditCellView()) )
        leHiClearRuler()
        if(clearAll then
            rulerHistory[cv] = nil
        else
            rulerHistory[cv] = cdr(rulerHistory[cv])
            foreach(pts rulerHistory[cv]
                leCreateRuler(cv pts)
            )
        )
    ) ;proc

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

    Thank you for sharing your code Derek!

    While we are on the topic of Rulers, I recently also wrote a somewhat similar solution for getting the length of each ruler printed to the CIW for added help/readability. Here's the link to the Online Support Solution:

    SourceLink Solution 11553680

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi dMay,

    Your script works well :D. Just i need to make it interactive so that user not need to recall the function for ruler and able to use reursively until the ESC button is hit.

     

    Hi skilluser,

    Thanks a lot for the sharing =D

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 16 years ago

    Hi How,

    You should be able to use the solution I wrote to help you to make Derek's code more interactive (e.g. create a bindkey for it, use an Options form to control the function behaviour).

    Let me (well, everyone) know if you need more help.

    regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi guys,

    Cool. I got it, i got it. I combine both script into one and its able to works interactively and able to undo the ruler as well. =D

    This is what i'm looking for for quite a long time. Thanks man. Cheers

    Regards, How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi,

    By storing the ruler's pts into a global table will enable user to do undo ruler individually. What if user use hiClearAllRuler() function to clear all rulers, the data that store in the table will not change rite?

    So, when user undo the ruler, there will prompts many other rulers which is initially store in the table. Any workaround for this?

     

    How

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kbhow
    kbhow over 16 years ago

    Hi skilluser,

    For your script, is it I need to instantiate the form at least ONCE before I use the function to create ruler?

    The function seem like not working, but after i hit F3 button to call the form and hide it, it will only able to peform well. Please advice.

    Thanks 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • dmay
    dmay over 16 years ago

    Notice in the clearMyLastRuler command, I had put in an optional "clearAll" argument. If set to t, not only does it clear all rulers in the window, but it also resets the global variable. Your users should use this command to clear all the rulers.

    procedure(clearMyLastRuler(@optional (clearAll nil) (cv geGetEditCellView()) )
        leHiClearRuler()
        if(clearAll then
            rulerHistory[cv] = nil


    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
>

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