• 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 expand/contract multiple voids at the same time?

Stats

  • State Suggested Answer
  • Replies 5
  • Answers 2
  • Subscribers 159
  • Views 1016
  • Members are here 0
More Content

How to expand/contract multiple voids at the same time?

Judeeeee
Judeeeee 5 months ago

Hi allegro experts!

Can you help me with this. Thanks!

How to expand/contract multiple voids at the same time? is there script needed for this command?

  • Sign in to reply
  • Cancel
Parents
  • DavidJHutchins
    0 DavidJHutchins 5 months ago

    I wrote a simple skill routine to resize voids in static shapes ( it won't work on dynamic shapes )

    below is the skill code:

    procedure((resize_voids size)
    let((child parent VoidList oldPolys NewPolys AddPolys NewShp)
    if(or(fixp(size) floatp(size)) then
    (axlSetFindFilter ?enabled list("noall" "voids") ?onButtons list("noall" "voids"))
    (axlClearSelSet)
    (axlAddSelectBox)
    axlMsgPut("%d voids selected" length(axlGetSelSet()))
    when(axlGetSelSet()
    (child = car(axlGetSelSet()))
    (parent = child->parent)
    when(parent->parentGroups
    axlClearSelSet()
    axlMsgPut("Can not edit Voids in Dynamic Shapes")
    )
    (parent = nil)
    )
    when(axlGetSelSet()
    (VoidList = axlGetSelSet())
    (axlClearSelSet)
    foreach(dbid VoidList
    unless(parent
    (parent=dbid->parent)
    (NewShp = axlDBOpenShape(parent nil))
    )
    (oldPolys = axlPolyFromDB(dbid))
    ;axlMsgPut("%d oldPolys" length(oldPolys))
    (AddPolys = list())
    foreach(poly oldPolys
    (newPolys = axlPolyExpand(poly size 'none))
    foreach(new newPolys
    (AddPolys = cons(new AddPolys))
    )
    )
    ;axlMsgPut("%d newPolys" length(newPolys))
    axlShapeDeleteVoids(dbid)
    foreach(poly AddPolys
    axlDBCreateVoid(NewShp poly)
    )
    )
    axlDBCreateCloseShape(NewShp)
    )
    else
    axlMsgPut("input value was not an int or float")
    )
    )
    )

    Below are the commands in Allegro:

    skill 'load "resize_voids.ils"'

    skill 'resize_voids -1'

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
Reply
  • DavidJHutchins
    0 DavidJHutchins 5 months ago

    I wrote a simple skill routine to resize voids in static shapes ( it won't work on dynamic shapes )

    below is the skill code:

    procedure((resize_voids size)
    let((child parent VoidList oldPolys NewPolys AddPolys NewShp)
    if(or(fixp(size) floatp(size)) then
    (axlSetFindFilter ?enabled list("noall" "voids") ?onButtons list("noall" "voids"))
    (axlClearSelSet)
    (axlAddSelectBox)
    axlMsgPut("%d voids selected" length(axlGetSelSet()))
    when(axlGetSelSet()
    (child = car(axlGetSelSet()))
    (parent = child->parent)
    when(parent->parentGroups
    axlClearSelSet()
    axlMsgPut("Can not edit Voids in Dynamic Shapes")
    )
    (parent = nil)
    )
    when(axlGetSelSet()
    (VoidList = axlGetSelSet())
    (axlClearSelSet)
    foreach(dbid VoidList
    unless(parent
    (parent=dbid->parent)
    (NewShp = axlDBOpenShape(parent nil))
    )
    (oldPolys = axlPolyFromDB(dbid))
    ;axlMsgPut("%d oldPolys" length(oldPolys))
    (AddPolys = list())
    foreach(poly oldPolys
    (newPolys = axlPolyExpand(poly size 'none))
    foreach(new newPolys
    (AddPolys = cons(new AddPolys))
    )
    )
    ;axlMsgPut("%d newPolys" length(newPolys))
    axlShapeDeleteVoids(dbid)
    foreach(poly AddPolys
    axlDBCreateVoid(NewShp poly)
    )
    )
    axlDBCreateCloseShape(NewShp)
    )
    else
    axlMsgPut("input value was not an int or float")
    )
    )
    )

    Below are the commands in Allegro:

    skill 'load "resize_voids.ils"'

    skill 'resize_voids -1'

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