• 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. repeat copy in IC51

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 16021
  • 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

repeat copy in IC51

zhisong
zhisong over 14 years ago

Greeting, everyone.

In IC5.1 if I want to copy shape to multi, I have to count the repeat number to specify row/column. It's boring.

I want to copy shape to one, and then press a bindkey(such as "dot"), which can repeat the copy action.

Do you think SKILL can realize it?

  when(hiGetCurrentCmd(wid)

     ... ...

the copy source, I can use geGetSelSet() to collect.

But I wonder, how I can get the target position, I have less experience to control mouse in SKILL.

Please show me some comment, Thanks

-Jason

  • Cancel
Parents
  • Quek
    Quek over 14 years ago

    Hi Jason

    I think we can have a simple implementation of the function using the following skillscript. : ) 

    Load it in ciw and execute it using:

    CCSrepeatCopy(1.0 0)

    To repeat the copy, press "." in layout window.
    To clear the bindkey for ".", press "ctrl ."

    Perhaps you can try adding a small form so that it is easier to enter the values.

    Best regards
    Quek

    procedure( CCSrepeatCopy(xDist yDist)
       let( (x y selSet offsetX offsetY xDist1 yDist1)
          selSet=geGetSelSet()
          foreach(obj selSet
             offsetX=0
             offsetY=0
             when(xDist>0 offsetX=rightEdge(obj~>bBox)-leftEdge(obj~>bBox))
             when(yDist>0 offsetY=topEdge(obj~>bBox)-bottomEdge(obj~>bBox))
             x=xDist+offsetX
             y=yDist+offsetY
             geSelectFig(dbCopyFig(obj nil list(x:y "R0")))
             geDeselectFig(obj)
          ) ;foreach
          sprintf(xDist1 "%L" xDist)
          sprintf(yDist1 "%L" yDist)
          hiSetBindKey("Layout" "." strcat("CCSrepeatCopy(" xDist1 " " yDist1 ")"))
       ) ;let
    ) ;procedure

    hiSetBindKey("Layout" "ctrl<Key>." "hiSetBindKey(\"Layout\" \".\" \"\")")

    repeatcopy.il
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Quek
    Quek over 14 years ago

    Hi Jason

    I think we can have a simple implementation of the function using the following skillscript. : ) 

    Load it in ciw and execute it using:

    CCSrepeatCopy(1.0 0)

    To repeat the copy, press "." in layout window.
    To clear the bindkey for ".", press "ctrl ."

    Perhaps you can try adding a small form so that it is easier to enter the values.

    Best regards
    Quek

    procedure( CCSrepeatCopy(xDist yDist)
       let( (x y selSet offsetX offsetY xDist1 yDist1)
          selSet=geGetSelSet()
          foreach(obj selSet
             offsetX=0
             offsetY=0
             when(xDist>0 offsetX=rightEdge(obj~>bBox)-leftEdge(obj~>bBox))
             when(yDist>0 offsetY=topEdge(obj~>bBox)-bottomEdge(obj~>bBox))
             x=xDist+offsetX
             y=yDist+offsetY
             geSelectFig(dbCopyFig(obj nil list(x:y "R0")))
             geDeselectFig(obj)
          ) ;foreach
          sprintf(xDist1 "%L" xDist)
          sprintf(yDist1 "%L" yDist)
          hiSetBindKey("Layout" "." strcat("CCSrepeatCopy(" xDist1 " " yDist1 ")"))
       ) ;let
    ) ;procedure

    hiSetBindKey("Layout" "ctrl<Key>." "hiSetBindKey(\"Layout\" \".\" \"\")")

    repeatcopy.il
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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